from misago.categories import PRIVATE_THREADS_ROOT_NAME from . import PostingEndpoint, PostingMiddleware class ModerationQueueMiddleware(PostingMiddleware): def use_this_middleware(self): try: tree_name = self.tree_name except AttributeError: tree_name = self.thread.category.thread_type.root_name return tree_name != PRIVATE_THREADS_ROOT_NAME def save(self, serializer): if self.mode == PostingEndpoint.START: self.post.is_unapproved = self.thread.category.acl[ "require_threads_approval" ] if self.mode == PostingEndpoint.REPLY: self.post.is_unapproved = self.thread.category.acl[ "require_replies_approval" ] if self.mode == PostingEndpoint.EDIT: self.post.is_unapproved = self.thread.category.acl["require_edits_approval"] if self.post.is_unapproved: self.post.update_fields.append("is_unapproved")