123456789101112131415161718192021222324252627282930313233 |
- from misago.threads import moderation
- from misago.threads.forms.posting import ThreadCloseForm
- from misago.threads.posting import PostingMiddleware, START
- class ThreadCloseFormMiddleware(PostingMiddleware):
- def use_this_middleware(self):
- if self.category.acl['can_close_threads']:
- self.is_closed = self.thread.is_closed
- return True
- else:
- return False
- def make_form(self):
- if self.request.method == 'POST':
- return ThreadCloseForm(self.request.POST, prefix=self.prefix)
- else:
- initial = {'is_closed': self.is_closed}
- return ThreadCloseForm(prefix=self.prefix, initial=initial)
- def pre_save(self, form):
- if form.is_valid() and self.mode == START:
- if form.cleaned_data.get('is_closed'):
- self.thread.is_closed = form.cleaned_data.get('is_closed')
- self.thread.update_fields.append('is_closed')
- def post_save(self, form):
- if form.is_valid() and self.mode != START:
- if self.is_closed != form.cleaned_data.get('is_closed'):
- if self.thread.is_closed:
- moderation.open_thread(self.user, self.thread)
- else:
- moderation.close_thread(self.user, self.thread)
|