def receive(request): if request.method != 'POST': raise Http404 post = request.POST if not post.get('chat_id', None) or not post.get('offset', None): raise Http404 try: chat_id = post['chat_id'] except: raise Http404 storage = ChatStorage(chat_id) storage.set_user_online(request.user.pk) offset = post['offset'] if offset == u'0': offset = datetime(2000, 01, 01).strftime(settings.CHAT_MESSAGE_DATE_FORMAT) storage = ChatStorage(chat_id) json_data = storage.get_by_offset_json(offset) return HttpResponse(json_data)
def test_storage_poinert_overflow(self): chat = self.chat storage = ChatStorage(chat.id) user_id = self.test_user.id text = "test message %d" messages = deque([], settings.CHAT_MAX_ITEMS) for i in range(settings.CHAT_MAX_ITEMS + 7): message = Message(user_id, text % i) messages.append(message) storage.put(message) #time.sleep(2) storage = ChatStorage(chat.id) self.failUnlessEqual(list(messages), storage.all())
def test_storage_poinert(self): chat = self.chat storage = ChatStorage(chat.id) user_id = self.test_user.id text = "test message %d" messages = [] for i in range(2): message = Message(user_id, text % i) messages.append(message) storage.put(message) storage = ChatStorage(chat.id) self.failUnlessEqual(messages, storage.all())
def test_storage(self): chat = self.chat storage = ChatStorage(chat.id) self.failUnlessEqual([], storage.all()) user_id = self.test_user.id text = "test message" message = Message(user_id, text) storage.put(message) storage = ChatStorage(chat.id) self.failUnlessEqual([message], storage.all())
def join(request): chat_id = request.POST.get("chat_id", "") storage = ChatStorage(chat_id) user = User.objects.get(pk=request.user.pk) text = u"%s входит в чат." % user.get_full_name() message = Message(request.user.pk, text, type=Message.TYPE_SYSTEM) storage.put(message) return HttpResponse('')
def send(request): chat_id = request.POST.get("chat_id", "") message = request.POST.get("message", "") message = clean_message(message) storage = ChatStorage(chat_id) message = Message(request.user.pk, message) storage.put(message) return HttpResponse('')
def _test_users_online(self): chat = self.chat storage = ChatStorage(chat.id) user_id = self.current_user.pk self.failUnlessEqual(0, len(storage.online_users())) storage.set_user_online(user_id) self.failUnlessEqual(1, len(storage.online_users())) user_id = random.randint(0, 100) storage.set_user_online(user_id) self.failUnlessEqual(2, len(storage.online_users())) storage.set_user_offline(user_id) self.failUnlessEqual(1, len(storage.online_users()))
def leave(request): chat_id = request.POST.get("chat_id", "") storage = ChatStorage(chat_id) storage.set_user_offline(request.user.pk) return HttpResponse('')
def sync(request): chat_id = request.POST.get('id') storage = ChatStorage(chat_id) return HttpResponse(storage.all_json())