threadprefix.py 1.2 KB

123456789101112131415161718192021222324252627282930
  1. from misago.threads.forms.posting import ThreadPrefixForm
  2. from misago.threads.posting import PostingMiddleware
  3. class ThreadPrefixFormMiddleware(PostingMiddleware):
  4. def use_this_middleware(self):
  5. if self.forum.acl['can_change_threads_prefix'] and self.forum.prefixes:
  6. self.thread_prefix_id = self.thread.prefix_id
  7. return True
  8. else:
  9. return False
  10. def make_form(self):
  11. if self.request.method == 'POST':
  12. return ThreadPrefixForm(self.request.POST, prefix=self.prefix,
  13. prefixes=self.forum.prefixes)
  14. else:
  15. initial = {'prefix_id': self.thread_prefix_id}
  16. return ThreadPrefixForm(prefix=self.prefix,
  17. prefixes=self.forum.prefixes,
  18. initial=initial)
  19. def pre_save(self, form):
  20. if self.thread_prefix_id != form.cleaned_data.get('prefix'):
  21. if form.cleaned_data.get('prefix'):
  22. self.thread.prefix_id = form.cleaned_data.get('prefix')
  23. self.thread.update_fields.append('prefix')
  24. else:
  25. self.thread.prefix = None
  26. self.thread.update_fields.append('prefix')