Example #1
0
def publish(serializer, category, request):
    message = {}
    redis_publisher = RedisPublisher(facility="pushes", broadcast=True)
    existing_message = redis_publisher.fetch_message(request, "pushes")
    if existing_message:
        message = json.loads(existing_message)
    message[category] = serializer.data
    redis_publisher.publish_message(RedisMessage(json.dumps(message)))
Example #2
0
 def sync(self, request):
     # Sample code for reading incidents message queue
     redis_publisher = RedisPublisher(facility='pushes', broadcast=True)
     message = redis_publisher.fetch_message(request, facility='pushes')
     # if the message is empty, replace it with a empty json/dict and convert to a string
     if not message:
         message = json.dumps({})
     return Response(json.loads(message))
Example #3
0
 def test_publish_user(self):
     logged_in = self.client.login(username='******', password='******')
     self.assertTrue(logged_in, 'John is not logged in')
     websocket_url = self.websocket_base_url + u'?publish-user'
     header = ['Cookie: sessionid={0}'.format(self.client.cookies['sessionid'].coded_value)]
     ws = create_connection(websocket_url, header=header)
     self.assertTrue(ws.connected)
     ws.send(self.message)
     ws.close()
     self.assertFalse(ws.connected)
     publisher = RedisPublisher()
     request = self.factory.get('/chat/')
     request.user = User.objects.get(username='******')
     result = publisher.fetch_message(request, self.facility, 'user')
     self.assertEqual(result, self.message)
     request.user = None
     result = publisher.fetch_message(request, self.facility, 'user')
     self.assertEqual(result, None)
Example #4
0
 def test_publish_broadcast(self):
     websocket_url = self.websocket_base_url + u'?publish-broadcast'
     ws = create_connection(websocket_url)
     self.assertTrue(ws.connected)
     ws.send(self.message)
     ws.close()
     self.assertFalse(ws.connected)
     publisher = RedisPublisher()
     request = self.factory.get('/chat/')
     result = publisher.fetch_message(request, self.facility, 'broadcast')
     self.assertEqual(result, self.message)
     # now access Redis store directly
     self.assertEqual(publisher._connection.get(self.prefix + ':broadcast:' + self.facility), self.message)
Example #5
0
 def test_publish_session(self):
     logged_in = self.client.login(username='******', password='******')
     self.assertTrue(logged_in, 'Mary is not logged in')
     self.assertIsInstance(self.client.session, (dict, type(self.session)), 'Did not receive a session key')
     session_key = self.client.session.session_key
     self.assertGreater(len(session_key), 30, 'Session key is too short')
     websocket_url = self.websocket_base_url + u'?publish-session'
     header = ['Cookie: sessionid={0}'.format(session_key)]
     ws = create_connection(websocket_url, header=header)
     self.assertTrue(ws.connected)
     ws.send(self.message)
     ws.close()
     self.assertFalse(ws.connected)
     publisher = RedisPublisher()
     request = self.factory.get('/chat/')
     request.session = self.client.session
     result = publisher.fetch_message(request, self.facility, 'session')
     self.assertEqual(result, self.message)