summaryrefslogtreecommitdiffstats
path: root/group_messaging/models.py
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-09-28 08:18:58 -0300
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-09-28 08:18:58 -0300
commit80df52cb982b6858d3d20b04e1a32073b1a530c4 (patch)
treece41a8b5d25330e2e355188f256888965ba567f8 /group_messaging/models.py
parent23ac9ee8e92ef6b8429b239e4229c39dc7bb4ac5 (diff)
downloadaskbot-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.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"""