From 2e044ece76b036c7f9a641e73e3eb396ae70e98a Mon Sep 17 00:00:00 2001 From: emile Date: Tue, 9 Jul 2024 10:55:25 +0300 Subject: [PATCH] new --- osinaweb/db.sqlite3 | Bin 1462272 -> 1536000 bytes .../__pycache__/consumers.cpython-310.pyc | Bin 3097 -> 4057 bytes .../__pycache__/models.cpython-310.pyc | Bin 15547 -> 16120 bytes .../__pycache__/routing.cpython-310.pyc | Bin 352 -> 403 bytes .../__pycache__/urls.cpython-310.pyc | Bin 4161 -> 4172 bytes .../__pycache__/views.cpython-310.pyc | Bin 20033 -> 20489 bytes osinaweb/osinacore/consumers.py | 27 +++ .../migrations/0096_status_date_time.py | 18 ++ .../0096_status_date_time.cpython-310.pyc | Bin 0 -> 647 bytes osinaweb/osinacore/models.py | 17 ++ osinaweb/osinacore/routing.py | 2 + .../partials/new-status-activity.html | 203 ++++++++++++++++++ .../partials/recent-activities.html | 6 +- osinaweb/osinacore/templates/index.html | 3 + osinaweb/osinacore/templates/main.html | 18 +- .../templates/recent-activities-page.html | 18 +- osinaweb/osinacore/urls.py | 2 +- osinaweb/osinacore/views.py | 21 +- .../__pycache__/settings.cpython-310.pyc | Bin 3110 -> 3130 bytes osinaweb/osinaweb/settings.py | 2 +- .../static/js/status/new-status-consumer.js | 27 +++ 21 files changed, 327 insertions(+), 37 deletions(-) create mode 100644 osinaweb/osinacore/migrations/0096_status_date_time.py create mode 100644 osinaweb/osinacore/migrations/__pycache__/0096_status_date_time.cpython-310.pyc create mode 100644 osinaweb/osinacore/templates/details_templates/partials/new-status-activity.html create mode 100644 osinaweb/static/js/status/new-status-consumer.js diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index e2e8c1617567c597b2809a563972bcf2059e5623..77fbd39b8027686767896e232141c0cdae4c6148 100644 GIT binary patch delta 121733 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 diff --git a/osinaweb/osinacore/__pycache__/consumers.cpython-310.pyc b/osinaweb/osinacore/__pycache__/consumers.cpython-310.pyc index a2c6de559aabdb3fb3df21e4d742353793337037..6ea27c69e5241c925e2c4d3f074f4ad7c8f8755e 100644 GIT binary patch delta 921 zcmZXS&2G~`5XU`h$8j7t1gWG=l>kC~8EAXp#04RW2nA|D$*DpLCTqY^zO>%7B61X@ zaHNNj3rIb*C&Ur)7Q6wz0pc|xW}Gw?u+jcKnOV>NX2u_vzn{sp7Zywf*V&)%Uc5gs z$`s()=<1_fN#QAOzE!yC!BE{cxmH%}^p`ikQt}*eRgjO%J~z%V|Cr-YL5q0SH(2%UgqQ052+cU` zc=lha%jlz$0;)J>8h|nB73N4s{avGs?N-aH$r=$JE$Ra8xYc*j2$3?c^qGvAL&n)2 z^wm)1D%bW|Uy~|NgxZkx6IhET69+oi!vs(6vqRv<9t>v1rJN`=YrfC1r!>Zj%_4p3 zj8vRX?>hIS>o2a980;Tb%^i9~p(-#*B#G*4`;m?4qwz&BRCf&>C delta 85 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 U_f6vi*~-Jf!N|kR!^rUu01a{=>i_@% delta 88 zcmbQt{D4V2pO=@50SGR1bf--O(vLwLWWWOCH~?|6#zbvpu5`vI))dxY22Hk!DVofF YKx&cI#P`#9IDjg67&sVtm^uCf0IhWo&Hw-a diff --git a/osinaweb/osinacore/__pycache__/urls.cpython-310.pyc b/osinaweb/osinacore/__pycache__/urls.cpython-310.pyc index ca94c75d00e8be120dc3411dcec9135a63c0196e..ee0e7cb6b566f8d6d23a8810a2e7562af6c3b861 100644 GIT binary patch delta 123 zcmX@8a7KYQpO=@50SJz~=}8ON$m_+doRY%T%RG@W$|Th!l|7X+%M^&sQc`=F%o(Cg zQqqDMG}AX%F(2WO<|!^oEGaG4O-U?C)vw|$EdVie!GfCucygFTMIb`)i8(p(Ai4OG M%-qz?=lO~l0r{^d@&Et; delta 112 zcmX@3a8Q9apO=@50SMG@^`u2^}!PEO(KWuC|wWs+)=%AU%ZWeUV*DJi{7<_u9L zDXGB>nrWM>n2&G>38kdwq?V-WCg5LZ7{}+CyluC;k*atq7_>ps()B2;;Kglyfh~wa-KfO4lh$mL-R(@4#gMp# z_9A$Zy@;)_d-38)`T@j~;L&3~gCD??_)OY?`OQC*=l{$+GxOsF-p#-q)azA(?faki zJ0|~NE<@wn+FyEmz(UqL0{1B+Y%d})xBvvT5!GYUHA@{uo!E6<)G_NH5%(E;{g^nz z)28xubHb;X)q%ns`dkDa^OGP6EA-DZ~k zplP=)dzfC|;C#R>S!dYawPd9?lL^*p?clUX{A47ols2ux5TkB45F&M281$qJ34@3U zYc!NLRyzDBI(G%4;ZVMb2g6??oI0ONy&~~NLP*@lBjqEh?x89cWF~JS51T)dv!TQ- ziH{N{!qNE+saK^{=65TlOC;Q_mrB~b!K+>Y0beacCDstd<+IItxXI bM@7nDzB=`rm!^Ad6Mjw8_D{WrDQn7qoO`rU delta 229 zcmeBNz<6*DBVRr*FBbz4@ZRc4OUR$dC&S3KQTqpzcy3B&N>&SFR76U4N=^$yRAfp< zFoR~^<~ZinZj(hU1nZfAnw){SSO`dzFk~? z3W!(+ByO>#q~@fSq-ru1se`!O$@zJCsmUdo`FX`fS|C+mLK`F}1W_7~tb`e88^~HA q#-dm*MxgR2AfXwxS;glP6MIoCNJMLLqK@!nU4K5tBa?0Xj{^W$WjsOv diff --git a/osinaweb/osinacore/consumers.py b/osinaweb/osinacore/consumers.py index 394d4bd0..a3387881 100644 --- a/osinaweb/osinacore/consumers.py +++ b/osinaweb/osinacore/consumers.py @@ -77,3 +77,30 @@ class OnlineUserConsumer(WebsocketConsumer): 'html': html, 'online_users_ids': event.get('online_users_ids', []) })) + + + +class NewStatusConsumer(WebsocketConsumer): + def connect(self): + self.user = self.scope['user'] + async_to_sync(self.channel_layer.group_add)( + "new_status_group", + self.channel_name + ) + self.accept() + + def disconnect(self, close_code): + async_to_sync(self.channel_layer.group_discard)( + "new_status_group", + self.channel_name + ) + + def new_status_event(self, event): + status_id = event['status_id'] + status = Status.objects.get(id=status_id) + context = {'status': status, 'new': True} + html = render_to_string("details_templates/partials/new-status-activity.html", context) + self.send(text_data=json.dumps({ + 'event_type': 'new_status', + 'html': html, + })) diff --git a/osinaweb/osinacore/migrations/0096_status_date_time.py b/osinaweb/osinacore/migrations/0096_status_date_time.py new file mode 100644 index 00000000..cda895e3 --- /dev/null +++ b/osinaweb/osinacore/migrations/0096_status_date_time.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.5 on 2024-07-09 07:50 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('osinacore', '0095_delete_customuser'), + ] + + operations = [ + migrations.AddField( + model_name='status', + name='date_time', + field=models.DateTimeField(blank=True, null=True), + ), + ] diff --git a/osinaweb/osinacore/migrations/__pycache__/0096_status_date_time.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0096_status_date_time.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5acdb58480783f304adfc683cb2cbfee10c88563 GIT binary patch literal 647 zcmYjP&2H2%5cW^9n_YD!gv6dXA?32^1tcVdid4Y`%Aw_wi{*`{D{t*M#EGhkBOIy3 zYw$`w!U^#PNT`e*pq*$&^A~?JpY2wwB|-W2^Yi%^O33#Z+?5Q2BUJwgjUtK~Vrfk+ zs~IJ)h+>L=B8mgu^N+mdDmx`*{sVhS$->g=T`vdiS|4WCDKNf?rMoi6;0V=k&;Y5a zA~jQVM{5q*K92w}+s{>oUw+Nh?3!b(P;&$-!s5+81cX~SuUpx;9>V(Y@abcLfG~h) zMn5<^dg#N<4{{iNSSX2wL0dS(AM>q|?M2Ai(U_9s*l|?RN(-2aHb2*3)JeGrg-CfJ z!cqwA8x5d;AjJDon%Em71s${s+D3!#8SWK|7fQX1XY@RVt7C*eL-dpjOV`0)p1zX) z0d^$w>qGSphxQd%Z2*kXS5O^;zZhIsol2wa!`HHl!CS9~#@Q+nP_=NG9JQD2&P~Zn z*iKHQr@FnD3W<6mCRW6MQa0UHA8&q!>hGf|2;rM7W=Lg%*{E$= dH7%Hmw~I{P8qW#Evx&6l_}GY#828wk{{dJ^wJ`ty literal 0 HcmV?d00001 diff --git a/osinaweb/osinacore/models.py b/osinaweb/osinacore/models.py index 1ffa2079..a1338aba 100644 --- a/osinaweb/osinacore/models.py +++ b/osinaweb/osinacore/models.py @@ -6,6 +6,10 @@ from django.db.models import Max from django.utils import timezone from django.db.models import Sum, F from datetime import timedelta +from django.db.models.signals import post_save +from django.dispatch import receiver +from asgiref.sync import async_to_sync +from channels.layers import get_channel_layer # Create your models here. @@ -407,10 +411,23 @@ class Status(models.Model): time = models.CharField(max_length=40) staff = models.ForeignKey(StaffProfile, on_delete=models.CASCADE, null=True,blank=True, related_name='staff') task = models.ForeignKey(Task, on_delete=models.SET_NULL ,null=True, blank=True, related_name='reference_task') + date_time = models.DateTimeField(null=True, blank=True) def __str__(self): return self.text +@receiver(post_save, sender=Status) +def new_ticket_update_handler(sender, instance, created, **kwargs): + if created: + channel_layer = get_channel_layer() + event = { + 'type': 'new_status_event', + 'status_id': instance.id, + } + async_to_sync(channel_layer.group_send)("new_status_group", event) + + + class Reaction(models.Model): status = models.ForeignKey(Status, on_delete=models.CASCADE) emoji = models.CharField(max_length=15) diff --git a/osinaweb/osinacore/routing.py b/osinaweb/osinacore/routing.py index 30b01d3f..e28f87b4 100644 --- a/osinaweb/osinacore/routing.py +++ b/osinaweb/osinacore/routing.py @@ -3,6 +3,8 @@ from .consumers import * websocket_urlpatterns = [ path("ws/online-users/", OnlineUserConsumer.as_asgi()), + path("ws/new-statuses/", NewStatusConsumer.as_asgi()), + ] \ No newline at end of file diff --git a/osinaweb/osinacore/templates/details_templates/partials/new-status-activity.html b/osinaweb/osinacore/templates/details_templates/partials/new-status-activity.html new file mode 100644 index 00000000..32a8f0c9 --- /dev/null +++ b/osinaweb/osinacore/templates/details_templates/partials/new-status-activity.html @@ -0,0 +1,203 @@ +{% load static %} + + + + + + + + + + + + + +
+
+
+
+
+
+ user profile +
+ +
+
+
+
+
+ +
+

{{status.staff.user.first_name}} + {{status.staff.user.last_name}}

+ {% if status.time_ago == '0min ago' %} +

Just Now

+ {%else %} +

{{ status.time_ago}}

+ {%endif%} +
+
+ +
+
+ +
+
+
+ + +
+

{{status.text}}

+ + {% if status.task.project %} + +
+

{{status.task.project}}

+ + + +
+
+ {% endif %} + +
+ + +
+ + +
+ +
+
+ + diff --git a/osinaweb/osinacore/templates/details_templates/partials/recent-activities.html b/osinaweb/osinacore/templates/details_templates/partials/recent-activities.html index 3322d669..d89254bd 100644 --- a/osinaweb/osinacore/templates/details_templates/partials/recent-activities.html +++ b/osinaweb/osinacore/templates/details_templates/partials/recent-activities.html @@ -166,11 +166,7 @@ + + + diff --git a/osinaweb/osinacore/urls.py b/osinaweb/osinacore/urls.py index 57466603..84aebf5a 100644 --- a/osinaweb/osinacore/urls.py +++ b/osinaweb/osinacore/urls.py @@ -83,7 +83,7 @@ urlpatterns = [ path('projects/status//', views.fetch_projects_by_status, name='projects_by_status'), path('all-projects/', views.fetch_projects_by_status, name='all_projects'), - path('delete-connections', views.delete_connections, name='delete-connections') + path('status-date/', views.update_all_date_time, name='update-status') ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) \ No newline at end of file diff --git a/osinaweb/osinacore/views.py b/osinaweb/osinacore/views.py index 626c1065..056b0a6d 100644 --- a/osinaweb/osinacore/views.py +++ b/osinaweb/osinacore/views.py @@ -879,5 +879,22 @@ def fetch_projects_by_status(request, status=None): -def delete_connections(request): - connections= Connection.objects.all().delete() \ No newline at end of file +from django.shortcuts import render +from django.http import HttpResponse +from django.utils.dateparse import parse_datetime + + +def update_all_date_time(request): + statuses = Status.objects.all() + for status in statuses: + if status.date and status.time: + date_str = f"{status.date} {status.time}" + try: + date_time_obj = datetime.strptime(date_str, "%Y-%m-%d %I:%M %p") + status.date_time = date_time_obj + status.save() + except ValueError as e: + # Handle any errors in date/time parsing + print(f"Error parsing date/time for status {status.id}: {e}") + + return JsonResponse({"status": "success", "message": "DateTime fields updated for all statuses."}) \ No newline at end of file diff --git a/osinaweb/osinaweb/__pycache__/settings.cpython-310.pyc b/osinaweb/osinaweb/__pycache__/settings.cpython-310.pyc index e471f152c24355e616aa003cdcb6d6aaf8ac4904..f6eb4c1d80b625b0543e8aaec462beb207f9e3a0 100644 GIT binary patch delta 70 zcmZ1`u}gwCpO=@50SI~@_oPkR$ZNnTs1>D>q8+80!XBlT!W_(?sk7OS@e;eRP=0Y{ VUZO)PkSa;e&(#Cs&GMY=%mAZa6X*Z{ delta 50 zcmdlbu}p$DpO=@50SF>yw5Lto$ZNnTs2Qb_q7|i@!XBlT!W_(?slC~c@e=!H6HYc} E06HxUBme*a diff --git a/osinaweb/osinaweb/settings.py b/osinaweb/osinaweb/settings.py index eba5bddc..31ff1d42 100644 --- a/osinaweb/osinaweb/settings.py +++ b/osinaweb/osinaweb/settings.py @@ -160,7 +160,7 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' EMAIL_HOST = 'osinamail.ositcom.com' EMAIL_PORT = 587 -EMAIL_HOST_USER = 'osina@ositcom.com' +EMAIL_HOST_USER = 'osina@eositcom.com' DEFAULT_FROM_EMAIL = 'osina@ositcom.com' EMAIL_HOST_PASSWORD = 'EMILEselim!@67' EMAIL_USE_TLS = True diff --git a/osinaweb/static/js/status/new-status-consumer.js b/osinaweb/static/js/status/new-status-consumer.js new file mode 100644 index 00000000..34d88ba7 --- /dev/null +++ b/osinaweb/static/js/status/new-status-consumer.js @@ -0,0 +1,27 @@ +// WebSocket connection for new statuses + const ws_theme = window.location.protocol === "https:" ? "wss" : "ws"; + const newStatusesSocketUrl = `${ws_theme}://${window.location.host}/ws/new-statuses/`; + const newStatusesSocket = new WebSocket(newStatusesSocketUrl); + + newStatusesSocket.onopen = () => { + console.log('WebSocket connection to new statuses established'); + }; + newStatusesSocket.onmessage = function(e) { + const data = JSON.parse(e.data); + if (data.event_type === 'new_status') { + const activityDiv = document.getElementById('activitiesContainer'); + console.log(activityDiv); + activityDiv.insertAdjacentHTML('afterbegin', data.html); + } + }; + + newStatusesSocket.onclose = () => { + console.log('WebSocket connection to new statuses closed'); + }; + + newStatusesSocket.onerror = (error) => { + console.log('WebSocket error:', error); + }; + + +