recordedit.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from django.db.models import F
  2. from . import PostingEndpoint, PostingMiddleware
  3. class RecordEditMiddleware(PostingMiddleware):
  4. def use_this_middleware(self):
  5. self.original_post = self.post.original
  6. return self.mode == PostingEndpoint.EDIT
  7. def save(self, serializer):
  8. is_post_changed = self.original_post != self.post.original
  9. if not is_post_changed:
  10. return
  11. self.post.updated_on = self.datetime
  12. self.post.edits = F('edits') + 1
  13. self.post.last_editor = self.user
  14. self.post.last_editor_name = self.user.username
  15. self.post.last_editor_slug = self.user.slug
  16. self.post.update_fields.extend((
  17. 'updated_on',
  18. 'edits',
  19. 'last_editor',
  20. 'last_editor_name',
  21. 'last_editor_slug',
  22. ))
  23. self.post.edits_record.create(
  24. category=self.post.category,
  25. thread=self.thread,
  26. edited_on=self.datetime,
  27. editor=self.user,
  28. editor_name=self.user.username,
  29. editor_slug=self.user.slug,
  30. editor_ip=self.request.user_ip,
  31. edited_from=self.original_post,
  32. edited_to=self.post.original
  33. )