|
|
|
@ -124,16 +124,6 @@ class Visitor(models.Model):
|
|
|
|
|
else:
|
|
|
|
|
return f"{int(minutes):02}:{int(seconds):02}"
|
|
|
|
|
|
|
|
|
|
def save(self, *args, **kwargs):
|
|
|
|
|
super().save(*args, **kwargs)
|
|
|
|
|
channel_layer = get_channel_layer()
|
|
|
|
|
event = {
|
|
|
|
|
'type': 'new_visitor_update_handler',
|
|
|
|
|
'visitor_id': self.id,
|
|
|
|
|
'action': 'new_visitor'
|
|
|
|
|
}
|
|
|
|
|
async_to_sync(channel_layer.group_send)("osichat", event)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -173,14 +163,25 @@ class VisitorLog(models.Model):
|
|
|
|
|
'action': action
|
|
|
|
|
}
|
|
|
|
|
async_to_sync(channel_layer.group_send)("osichat", event)
|
|
|
|
|
if is_first_log:
|
|
|
|
|
self.send_visitor_notification()
|
|
|
|
|
else:
|
|
|
|
|
last_log = self.visitor.visitorlog_set.exclude(id=self.id).order_by('-visit_date').first()
|
|
|
|
|
if last_log:
|
|
|
|
|
time_difference = self.visit_date - last_log.visit_date
|
|
|
|
|
if time_difference > timedelta(minutes=5):
|
|
|
|
|
self.send_visitor_notification(is_repeat=True)
|
|
|
|
|
group_name = f"V{self.visitor.id}"
|
|
|
|
|
async_to_sync(channel_layer.group_send)(group_name, event)
|
|
|
|
|
if not self.left_date:
|
|
|
|
|
if is_first_log:
|
|
|
|
|
self.send_visitor_notification()
|
|
|
|
|
else:
|
|
|
|
|
last_log = self.visitor.visitorlog_set.exclude(id=self.id).order_by('-visit_date').first()
|
|
|
|
|
if last_log:
|
|
|
|
|
last_visit_date = last_log.visit_date
|
|
|
|
|
current_visit_date = self.visit_date
|
|
|
|
|
if timezone.is_naive(last_visit_date):
|
|
|
|
|
last_visit_date = timezone.make_aware(last_visit_date)
|
|
|
|
|
if timezone.is_naive(current_visit_date):
|
|
|
|
|
current_visit_date = timezone.make_aware(current_visit_date)
|
|
|
|
|
|
|
|
|
|
time_difference = current_visit_date - last_visit_date
|
|
|
|
|
|
|
|
|
|
if time_difference > timedelta(minutes=5):
|
|
|
|
|
self.send_visitor_notification(is_repeat=True)
|
|
|
|
|
|
|
|
|
|
def send_visitor_notification(self, is_repeat=False):
|
|
|
|
|
if is_repeat:
|
|
|
|
|