def test_unread_counter_new_thread2(self): thread = self.create_thread_for_user(self.sender, self.recipient) thread.mark_as_seen(self.recipient) counter = UnreadInboxCounter.get_for_user(self.recipient) self.assertEqual(counter.count, 0) counter = UnreadInboxCounter.get_for_user(self.sender) self.assertEqual(counter.count, 0)
def test_unread_counter_new_thread1(self): counter = UnreadInboxCounter.get_for_user(self.recipient) self.assertEqual(counter.count, 0) thread = self.create_thread_for_user(self.sender, self.recipient) counter = UnreadInboxCounter.get_for_user(self.recipient) self.assertEqual(counter.count, 1) counter = UnreadInboxCounter.get_for_user(self.sender) self.assertEqual(counter.count, 0)
def test_recalculate_unread_counter(self): thread = self.create_thread_for_user(self.sender, self.recipient) counter = UnreadInboxCounter.get_for_user(self.recipient) counter.reset() self.assertEqual(counter.count, 0) counter.recalculate() self.assertEqual(counter.count, 1)
def handle_noargs(self, *args, **kwargs): users = User.objects.all() count = users.count() message = 'Fixing inbox counts for the users' for user in ProgressBar(users.iterator(), count, message): counter = UnreadInboxCounter.get_for_user(user) counter.recalculate() counter.save() transaction.commit()
def post(self, request, thread_id=None): """process the post request: * delete or restore thread * recalculate the threads list and return it for display by reusing the threads list "get" function """ # part of the threads list context sender_id = IntegerField().clean(request.POST['sender_id']) # sender_id==-2 means deleted post if self.thread_action == 'delete': if sender_id == -2: action = 'delete' else: action = 'archive' else: action = 'restore' thread = Message.objects.get(id=thread_id) memo, created = MessageMemo.objects.get_or_create(user=request.user, message=thread) if created and action == 'archive': # unfortunately we lose "unseen" status when archiving counter = UnreadInboxCounter.get_for_user(request.user) counter.decrement() counter.save() if action == 'archive': memo.status = MessageMemo.ARCHIVED elif action == 'restore': memo.status = MessageMemo.SEEN else: memo.status = MessageMemo.DELETED memo.save() context = self.get_context(request) return self.render_to_response(context)
def group_messaging_context(request): if hasattr(request, 'user') and request.user.is_authenticated(): instance = UnreadInboxCounter.get_for_user(request.user) return {'group_messaging_unread_inbox_count': instance.count} return {}