diff options
author | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2012-09-28 08:18:58 -0300 |
---|---|---|
committer | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2012-09-28 08:18:58 -0300 |
commit | 80df52cb982b6858d3d20b04e1a32073b1a530c4 (patch) | |
tree | ce41a8b5d25330e2e355188f256888965ba567f8 /group_messaging/models.py | |
parent | 23ac9ee8e92ef6b8429b239e4229c39dc7bb4ac5 (diff) | |
download | askbot-80df52cb982b6858d3d20b04e1a32073b1a530c4.tar.gz askbot-80df52cb982b6858d3d20b04e1a32073b1a530c4.tar.bz2 askbot-80df52cb982b6858d3d20b04e1a32073b1a530c4.zip |
threads can be now deleted and restored
Diffstat (limited to 'group_messaging/models.py')
-rw-r--r-- | group_messaging/models.py | 22 |
1 files changed, 15 insertions, 7 deletions
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""" |