recordedit.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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', 'edits', 'last_editor', 'last_editor_name', 'last_editor_slug', )
  18. )
  19. self.post.edits_record.create(
  20. category=self.post.category,
  21. thread=self.thread,
  22. edited_on=self.datetime,
  23. editor=self.user,
  24. editor_name=self.user.username,
  25. editor_slug=self.user.slug,
  26. editor_ip=self.request.user_ip,
  27. edited_from=self.original_post,
  28. edited_to=self.post.original
  29. )