summaryrefslogtreecommitdiffstats
path: root/group_messaging/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'group_messaging/models.py')
-rw-r--r--group_messaging/models.py22
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"""