| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -10,7 +10,14 @@ import threading
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					class OnlineUserConsumer(WebsocketConsumer):
 | 
					 | 
					 | 
					 | 
					class OnlineUserConsumer(WebsocketConsumer):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    def connect(self):
 | 
					 | 
					 | 
					 | 
					    def connect(self):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        self.user = self.scope['user']
 | 
					 | 
					 | 
					 | 
					        self.user = self.scope['user']
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					        existing_connection = Connection.objects.filter(user=self.user).last()
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        if existing_connection:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            self.connection = existing_connection
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            self.connection.online = True
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            self.connection.disconnected = False
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            self.connection.save()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        else:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            self.connection = Connection.objects.create(user=self.user, online=True)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        async_to_sync(self.channel_layer.group_add)(
 | 
					 | 
					 | 
					 | 
					        async_to_sync(self.channel_layer.group_add)(
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            'online_users', self.channel_name
 | 
					 | 
					 | 
					 | 
					            'online_users', self.channel_name
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -34,11 +41,17 @@ class OnlineUserConsumer(WebsocketConsumer):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        self.modify_online_user()
 | 
					 | 
					 | 
					 | 
					        self.modify_online_user()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    def modify_online_user(self):
 | 
					 | 
					 | 
					 | 
					    def modify_online_user(self):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					        connections = Connection.objects.all()
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        online_connections = connections.filter(online=True)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        offline_connections = connections.filter(online=False, last_seen__isnull=False).order_by('-last_seen')[:5]
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        sorted_connections = list(online_connections) + list(offline_connections)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        online_users_ids = [connection.user.id for connection in online_connections]
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        event = {
 | 
					 | 
					 | 
					 | 
					        event = {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            'type': 'online_user_connection_handler',
 | 
					 | 
					 | 
					 | 
					            'type': 'online_user_connection_handler',
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            'online_users_ids': online_users_ids
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }
 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        async_to_sync(self.channel_layer.group_send)(
 | 
					 | 
					 | 
					 | 
					        async_to_sync(self.channel_layer.group_send)(
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            'online_users', event
 | 
					 | 
					 | 
					 | 
					            'online_users', event
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -46,13 +59,13 @@ class OnlineUserConsumer(WebsocketConsumer):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    def online_user_connection_handler(self, event):
 | 
					 | 
					 | 
					 | 
					    def online_user_connection_handler(self, event):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        context = {
 | 
					 | 
					 | 
					 | 
					        context = {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					            'customer_connections': event['customer_connections'],
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }
 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        html = render_to_string("details_templates/partials/recently-online.html", context=context)
 | 
					 | 
					 | 
					 | 
					        html = render_to_string("details_templates/partials/recently-online.html", context=context)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        self.send(text_data=json.dumps({
 | 
					 | 
					 | 
					 | 
					        self.send(text_data=json.dumps({
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            'event_type': 'online_user_status',
 | 
					 | 
					 | 
					 | 
					            'event_type': 'online_user_status',
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            'html': html,
 | 
					 | 
					 | 
					 | 
					            'html': html,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					            'online_users_ids': event.get('online_users_ids', []) 
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }))
 | 
					 | 
					 | 
					 | 
					        }))
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |