diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index feeaf72e..c1f25419 100644 Binary files a/osinaweb/db.sqlite3 and b/osinaweb/db.sqlite3 differ diff --git a/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc b/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc index 97af924d..f01fdaf2 100644 Binary files a/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc and b/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc differ diff --git a/osinaweb/osichat/__pycache__/models.cpython-310.pyc b/osinaweb/osichat/__pycache__/models.cpython-310.pyc index f394a46c..636fc3c1 100644 Binary files a/osinaweb/osichat/__pycache__/models.cpython-310.pyc and b/osinaweb/osichat/__pycache__/models.cpython-310.pyc differ diff --git a/osinaweb/osichat/consumers.py b/osinaweb/osichat/consumers.py index c43c6e8a..8b7c35d1 100644 --- a/osinaweb/osichat/consumers.py +++ b/osinaweb/osichat/consumers.py @@ -78,7 +78,6 @@ class Osichat(WebsocketConsumer): event = { 'type': 'get_chats_handler', } - if data.get('whereAmI') == 'Chats': self.get_chats_handler(event) else: @@ -112,7 +111,6 @@ class Osichat(WebsocketConsumer): for room in chat_rooms: room.number_of_unread = room.unread_messages(user) - room.last_message = room.last_updated context = { 'chat_rooms': chat_rooms, } @@ -120,9 +118,13 @@ class Osichat(WebsocketConsumer): if self.client_type == 'mobile_admin': chat_rooms_data = [] for chat_room in chat_rooms: + last_message = ChatMessage.objects.filter(room=chat_room).last() room_data = model_to_dict(chat_room) room_data['number_of_unread'] = chat_room.unread_messages(user) - room_data['last_message'] = chat_room.last_updated + if last_message: + room_data['last_message'] = model_to_dict(last_message) + else: + room_data['last_message'] = None if hasattr(chat_room, 'chatroomguest') and chat_room.chatroomguest.visitor: visitor = chat_room.chatroomguest.visitor room_data['visitor'] = { @@ -159,6 +161,11 @@ class Osichat(WebsocketConsumer): } if self.client_type == 'mobile_admin': chat_room_data = model_to_dict(chat_room) + chat_room_data['visitor'] = model_to_dict(chat_room.chatroomguest.visitor) + if last_message: + chat_room_data['last_message'] = model_to_dict(last_message) + else: + chat_room_data['last_message'] = None self.send(text_data=json.dumps({ 'event_type': 'new_chat_update', 'chat_room_data': chat_room_data, @@ -182,16 +189,16 @@ class Osichat(WebsocketConsumer): if self.client_type == 'mobile_admin': visitors_data = [] for visitor in visitors: - visitors_data.append({ - 'is_online': visitor.is_online, - 'duration': visitor.total_duration, - }) visitor_dict = model_to_dict(visitor) - visitor_logs = VisitorLog.objects.filter(visitor=visitor) + visitor_dict['is_online'] = visitor.is_online + visitor_dict['duration'] = visitor.total_duration + visitor_dict['flag'] = visitor.flag_image_url + + visitor_logs = VisitorLog.objects.filter(visitor=visitor) visitor_logs_data = [model_to_dict(log) for log in visitor_logs] visitor_dict['visitor_logs'] = visitor_logs_data - + visitors_data.append(visitor_dict) self.send(text_data=json.dumps({ @@ -209,11 +216,20 @@ class Osichat(WebsocketConsumer): def new_visitor_update_handler(self, event): visitor = get_object_or_404(Visitor, id=event['visitor_id']) + latest_log = VisitorLog.objects.filter(visitor=visitor).last() context = { 'visitor': visitor, } if self.client_type == 'mobile_admin': visitor_data = model_to_dict(visitor) + visitor_data['is_online'] = visitor.is_online + visitor_data['duration'] = visitor.total_duration + visitor_data['flag'] = visitor.flag_image_url + if latest_log: + visitor_data['latest_log'] = model_to_dict(latest_log) + + + self.send(text_data=json.dumps({ 'event_type': 'new_visitor_update', 'visitor_data': visitor_data, diff --git a/osinaweb/osinacore/api/__pycache__/views.cpython-310.pyc b/osinaweb/osinacore/api/__pycache__/views.cpython-310.pyc index 7f0d429f..1e267ae0 100644 Binary files a/osinaweb/osinacore/api/__pycache__/views.cpython-310.pyc and b/osinaweb/osinacore/api/__pycache__/views.cpython-310.pyc differ diff --git a/osinaweb/osinacore/api/views.py b/osinaweb/osinacore/api/views.py index 5fcfcc59..cdc175f5 100644 --- a/osinaweb/osinacore/api/views.py +++ b/osinaweb/osinacore/api/views.py @@ -22,6 +22,7 @@ def login_user(request): future = datetime.utcnow() + datetime2.timedelta(days=183) futuretime = calendar.timegm(future.timetuple()) encoded_jwt = jwt.encode({"username": username, "exp": futuretime, "is_superuser": serial.data['is_superuser'], "userid":serial.instance.id}, "ibiye4700", algorithm="HS256") + #encoded_jwt = encoded_jwt.decode('utf-8') return successRes(msg={"token": encoded_jwt,"first_name":user.first_name,"last_name":user.last_name,"email":user.email, "id":user.id}) else: raise ValueError("Incorrect password!") diff --git a/osinaweb/support/__pycache__/models.cpython-310.pyc b/osinaweb/support/__pycache__/models.cpython-310.pyc index 49c194bc..f1780e00 100644 Binary files a/osinaweb/support/__pycache__/models.cpython-310.pyc and b/osinaweb/support/__pycache__/models.cpython-310.pyc differ diff --git a/osinaweb/support/models.py b/osinaweb/support/models.py index eda0dfa9..0c8172a2 100644 --- a/osinaweb/support/models.py +++ b/osinaweb/support/models.py @@ -125,16 +125,17 @@ class Ticket(models.Model): def get_all_ticket_staff(self): ticket_staff = TicketStaff.objects.filter(ticket=self) - staff_members = [entry.staff for entry in ticket_staff] + staff_members = {entry.staff for entry in ticket_staff} + latest_department = TicketDepartment.objects.filter(ticket=self).order_by('-date_added').first() if latest_department: - department_staff = latest_department.department.get_staff() + department_staff = set(latest_department.department.get_staff()) else: - department_staff = [] + department_staff = set() - all_staff = list(staff_members) + list(department_staff) - - return all_staff + all_staff = staff_members.union(department_staff) + + return list(all_staff) @receiver(post_save, sender=Ticket)