recordedit.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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. (
  18. "updated_on",
  19. "edits",
  20. "last_editor",
  21. "last_editor_name",
  22. "last_editor_slug",
  23. )
  24. )
  25. self.post.edits_record.create(
  26. category=self.post.category,
  27. thread=self.thread,
  28. edited_on=self.datetime,
  29. editor=self.user,
  30. editor_name=self.user.username,
  31. editor_slug=self.user.slug,
  32. edited_from=self.original_post,
  33. edited_to=self.post.original,
  34. )