From 80df52cb982b6858d3d20b04e1a32073b1a530c4 Mon Sep 17 00:00:00 2001 From: Evgeny Fadeev Date: Fri, 28 Sep 2012 08:18:58 -0300 Subject: threads can be now deleted and restored --- group_messaging/models.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'group_messaging/models.py') diff --git a/group_messaging/models.py b/group_messaging/models.py index 62f720cf..f78f2b87 100644 --- a/group_messaging/models.py +++ b/group_messaging/models.py @@ -87,7 +87,7 @@ class MessageMemo(models.Model): (ARCHIVED, 'archived') ) user = models.ForeignKey(User) - message = models.ForeignKey('Message') + message = models.ForeignKey('Message', related_name='memos') status = models.SmallIntegerField( choices=STATUS_CHOICES, default=SEEN ) @@ -99,13 +99,21 @@ class MessageMemo(models.Model): class MessageManager(models.Manager): """model manager for the :class:`Message`""" - def get_threads_for_user(self, user): + def get_threads_for_user(self, user, deleted=False): user_groups = user.groups.all() - return self.filter( - root=None, - message_type=Message.STORED, - recipients__in=user_groups - ) + user_thread_filter = models.Q( + root=None, + message_type=Message.STORED, + recipients__in=user_groups + ) + deleted_filter = models.Q( + memos__status=MessageMemo.ARCHIVED, + memos__user=user + ) + if deleted: + return self.filter(user_thread_filter & deleted_filter) + else: + return self.filter(user_thread_filter & ~deleted_filter) def create(self, **kwargs): """creates a message""" -- cgit v1.2.3-1-g7c22