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.py27
1 files changed, 16 insertions, 11 deletions
diff --git a/group_messaging/models.py b/group_messaging/models.py
index f78f2b87..87f3005e 100644
--- a/group_messaging/models.py
+++ b/group_messaging/models.py
@@ -169,9 +169,11 @@ class MessageManager(models.Manager):
#add author of the parent as a recipient to parent
parent.add_recipients([senders_group])
#mark last active timestamp for the root message
- #so that we know that this thread was most recently
- #updated
- message.update_root_info()
+ message.root.last_active_at = datetime.datetime.now()
+ #update senders info - stuff that is shown in the thread heading
+ message.root.update_senders_info()
+ #unarchive the thread for all recipients
+ message.root.unarchive()
return message
@@ -241,17 +243,20 @@ class Message(models.Model):
sender_list, created = SenderList.objects.get_or_create(recipient=recipient)
sender_list.senders.add(self.sender)
- def update_root_info(self):
- """Update the last active at timestamp and
- the contributors info, if relevant.
- Root object will be saved to the database.
+ def update_senders_info(self):
+ """update the contributors info,
+ meant to be used on a root message only
"""
- self.root.last_active_at = datetime.datetime.now()
- senders_names = self.root.senders_info.split(',')
+ senders_names = self.senders_info.split(',')
if self.sender.username in senders_names:
senders_names.remove(self.sender.username)
senders_names.insert(0, self.sender.username)
- self.root.senders_info = (','.join(senders_names))[:64]
- self.root.save()
+ self.senders_info = (','.join(senders_names))[:64]
+ self.save()
+
+ def unarchive(self):
+ """unarchive message for all recipients"""
+ memos = self.memos.filter(status=MessageMemo.ARCHIVED)
+ memos.update(status=MessageMemo.SEEN)