diff --git a/.DS_Store b/.DS_Store index 8c5e2f68..038f9bfe 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/osinaweb/.DS_Store b/osinaweb/.DS_Store index 98fc8248..b49c21f9 100644 Binary files a/osinaweb/.DS_Store and b/osinaweb/.DS_Store differ diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index 15452edb..f5b5bd2c 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 08473650..459c30ea 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 d5e42d79..172a84a6 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 ea8409f9..f95e9dc2 100644 --- a/osinaweb/osichat/consumers.py +++ b/osinaweb/osichat/consumers.py @@ -195,9 +195,13 @@ class Osichat(WebsocketConsumer): 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 + visitor_logs_data = [] + for log in visitor_logs: + log_data = model_to_dict(log) + log_data['log_duration'] = log.log_duration + visitor_logs_data.append(log_data) + visitor_dict['visitor_logs'] = visitor_logs_data visitors_data.append(visitor_dict) self.send(text_data=json.dumps({ @@ -225,7 +229,9 @@ class Osichat(WebsocketConsumer): 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) + latest_log_data = model_to_dict(latest_log) + latest_log_data['log_duration'] = latest_log.log_duration + visitor_data['latest_log'] = latest_log_data diff --git a/osinaweb/osichat/models.py b/osinaweb/osichat/models.py index 95cf8c95..11350a43 100644 --- a/osinaweb/osichat/models.py +++ b/osinaweb/osichat/models.py @@ -14,19 +14,22 @@ def send_notification(notification): 'title': notification.title, 'body': mark_safe(notification.message), } + sound = "default" if notification.image: FCMDevice.objects.send_message( Message(notification=NotificationFB( title=notification_data['title'], body=notification_data['body'], - image= notification.image + image= notification.image, + sound=sound ), data={"image": notification.image}) ) else: FCMDevice.objects.send_message( Message(notification=NotificationFB( title=notification_data['title'], - body=notification_data['body'] + body=notification_data['body'], + sound=sound )) ) @@ -59,6 +62,10 @@ class Visitor(models.Model): flag_url = f"https://osina.ositcom.com/static/images/flags/{self.country.lower()}.svg" return flag_url @property + def notification_flag_image_url(self): + flag_url = f"https://flagcdn.com/w640/{self.country.lower()}.svg/" + return flag_url + @property def is_online(self): latest_log = self.visitorlog_set.order_by('-visit_date').first() if latest_log and latest_log.left_date is None: @@ -94,7 +101,7 @@ class Visitor(models.Model): def send_visitor_notification(self): notification = ChatNotification.objects.create( title="New visitor on Ositcom!", - image = self.flag_image_url + image = self.notification_flag_image_url ) @@ -106,6 +113,20 @@ class VisitorLog(models.Model): referrer = models.URLField(null=True, blank=True) visit_date = models.DateTimeField(null=True) left_date = models.DateTimeField(null=True) + @property + def log_duration(self): + end_time = self.left_date if self.left_date else timezone.now() + total_seconds = (end_time - self.visit_date).total_seconds() + + duration = timedelta(seconds=total_seconds) + hours, remainder = divmod(duration.total_seconds(), 3600) + minutes, seconds = divmod(remainder, 60) + + if hours >= 1: + return f"{int(hours):02}:{int(minutes):02}:{int(seconds):02}" + else: + return f"{int(minutes):02}:{int(seconds):02}" + def save(self, *args, **kwargs): is_new = not self.pk if self.left_date: @@ -126,7 +147,7 @@ class VisitorLog(models.Model): def send_visitorlog_notification(self): notification = ChatNotification.objects.create( title=f"Visitor navigated to: {self.title}.", - image=self.visitor.flag_image_url + image=self.visitor.notification_flag_image_url ) diff --git a/osinaweb/osinacore/.DS_Store b/osinaweb/osinacore/.DS_Store index 3878a539..56ec9411 100644 Binary files a/osinaweb/osinacore/.DS_Store and b/osinaweb/osinacore/.DS_Store differ diff --git a/osinaweb/osinacore/__pycache__/urls.cpython-310.pyc b/osinaweb/osinacore/__pycache__/urls.cpython-310.pyc index a9997bd7..d654c02a 100644 Binary files a/osinaweb/osinacore/__pycache__/urls.cpython-310.pyc and b/osinaweb/osinacore/__pycache__/urls.cpython-310.pyc differ diff --git a/osinaweb/osinacore/__pycache__/views.cpython-310.pyc b/osinaweb/osinacore/__pycache__/views.cpython-310.pyc index b2b73f94..793a89da 100644 Binary files a/osinaweb/osinacore/__pycache__/views.cpython-310.pyc and b/osinaweb/osinacore/__pycache__/views.cpython-310.pyc differ diff --git a/osinaweb/osinacore/templates/.DS_Store b/osinaweb/osinacore/templates/.DS_Store index a8d9e49d..024a4bcc 100644 Binary files a/osinaweb/osinacore/templates/.DS_Store and b/osinaweb/osinacore/templates/.DS_Store differ