mentions.py 638 B

12345678910111213141516171819
  1. from . import PostingEndpoint, PostingMiddleware
  2. class MentionsMiddleware(PostingMiddleware):
  3. def post_save(self, serializer):
  4. existing_mentions = []
  5. if self.mode == PostingEndpoint.EDIT:
  6. existing_mentions = self.get_existing_mentions()
  7. new_mentions = []
  8. for user in self.post.parsing_result['mentions']:
  9. if user.pk not in existing_mentions:
  10. new_mentions.append(user)
  11. if new_mentions:
  12. self.post.mentions.add(*new_mentions)
  13. def get_existing_mentions(self):
  14. return [u['id'] for u in self.post.mentions.values('id').iterator()]