|
|
|
@ -188,10 +188,10 @@ class Osichat(WebsocketConsumer):
|
|
|
|
|
if self.client_type == 'mobile_admin':
|
|
|
|
|
visitors_data = []
|
|
|
|
|
for visitor in visitors:
|
|
|
|
|
visitor_dict = model_to_dict(visitor)
|
|
|
|
|
visitor_dict['is_online'] = visitor.is_online
|
|
|
|
|
visitor_dict['duration'] = visitor.total_duration
|
|
|
|
|
visitor_dict['flag'] = visitor.flag_image_url
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
visitor_logs = VisitorLog.objects.filter(visitor=visitor)
|
|
|
|
@ -201,8 +201,8 @@ class Osichat(WebsocketConsumer):
|
|
|
|
|
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)
|
|
|
|
|
visitor_data['visitor_logs'] = visitor_logs_data
|
|
|
|
|
visitors_data.append(visitor_data)
|
|
|
|
|
|
|
|
|
|
self.send(text_data=json.dumps({
|
|
|
|
|
'event_type': 'get_visitors',
|
|
|
|
@ -253,6 +253,55 @@ class Osichat(WebsocketConsumer):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class OsichatVisitor(WebsocketConsumer):
|
|
|
|
|
def connect(self):
|
|
|
|
|
self.visitor_id = self.scope['url_route']['kwargs']['visitor_id']
|
|
|
|
|
self.group_name = str(self.visitor_id)
|
|
|
|
|
self.visitor = get_object_or_404(Visitor, id=self.visitor_id)
|
|
|
|
|
async_to_sync(self.channel_layer.group_add)(
|
|
|
|
|
self.group_name, self.channel_name
|
|
|
|
|
)
|
|
|
|
|
self.accept()
|
|
|
|
|
|
|
|
|
|
def disconnect(self, close_code):
|
|
|
|
|
async_to_sync(self.channel_layer.group_discard)(
|
|
|
|
|
self.group_name, self.channel_name
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def receive(self, text_data):
|
|
|
|
|
data = json.loads(text_data)
|
|
|
|
|
event_type = data.get('event_type')
|
|
|
|
|
|
|
|
|
|
if event_type == 'set_client_type':
|
|
|
|
|
self.client_type = data.get('client_type')
|
|
|
|
|
event = {
|
|
|
|
|
'type': 'get_visitor_handler',
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async_to_sync(self.channel_layer.group_send)(
|
|
|
|
|
self.group_name, event
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def get_visitor_handler(self, event):
|
|
|
|
|
if self.client_type == 'mobile_admin':
|
|
|
|
|
visitor_data = model_to_dict(self.visitor)
|
|
|
|
|
visitor_data['online'] = self.visitor.is_online
|
|
|
|
|
visitor_data['flag'] = self.visitor.flag_image_url
|
|
|
|
|
visitor_logs = VisitorLog.objects.filter(visitor=self.visitor)
|
|
|
|
|
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_data['visitor_logs'] = visitor_logs_data
|
|
|
|
|
|
|
|
|
|
self.send(text_data=json.dumps({
|
|
|
|
|
'event_type': 'get_visitor',
|
|
|
|
|
'visitor_data': visitor_data,
|
|
|
|
|
}, cls=DjangoJSONEncoder))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|