from django.db.models import F

from misago.threads.posting import PostingMiddleware, EDIT


class RecordEditMiddleware(PostingMiddleware):
    def __init__(self, **kwargs):
        super(RecordEditMiddleware, self).__init__(**kwargs)

        if self.mode == EDIT:
            self.original_title = self.thread.title
            self.original_post = self.post.original

    def save(self, form):
        if self.mode == EDIT:
            # record post or thread edit
            is_title_changed = self.original_title != self.thread.title
            is_post_changed = self.original_post != self.post.original

            if is_title_changed or is_post_changed:
                self.post.edits += 1
                self.post.last_editor_name = self.user.username
                self.post.update_fields.extend(('edits', 'last_editor_name'))