posting.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from django.core.urlresolvers import reverse
  2. from django.shortcuts import redirect
  3. from django.utils.translation import ugettext as _
  4. from misago.apps.threadtype.posting import EditThreadBaseView, NewReplyBaseView, EditReplyBaseView
  5. from misago.messages import Message
  6. from misago.models import Forum, Thread, Post
  7. from misago.apps.reports.mixins import TypeMixin
  8. from misago.apps.reports.forms import EditThreadForm, NewReplyForm, EditReplyForm
  9. class SetStateCheckpointMixin(object):
  10. def post_form(self, form):
  11. self.thread.original_weight = self.thread_weight
  12. super(SetStateCheckpointMixin, self).post_form(form)
  13. if self.thread.original_weight != self.thread_weight:
  14. if self.thread.original_weight == 2:
  15. self.request.monitor.decrease('reported_posts')
  16. if self.thread.weight == 1:
  17. self.thread.set_checkpoint(self.request, 'resolved')
  18. if self.thread.weight == 0:
  19. self.thread.set_checkpoint(self.request, 'bogus')
  20. class EditThreadView(SetStateCheckpointMixin, EditThreadBaseView, TypeMixin):
  21. form_type = EditThreadForm
  22. def response(self):
  23. self.request.messages.set_flash(Message(_("Report has been edited.")), 'success', 'threads_%s' % self.post.pk)
  24. return redirect(reverse('report', kwargs={'thread': self.thread.pk, 'slug': self.thread.slug}) + ('#post-%s' % self.post.pk))
  25. class NewReplyView(SetStateCheckpointMixin, NewReplyBaseView, TypeMixin):
  26. form_type = NewReplyForm
  27. def response(self):
  28. self.request.messages.set_flash(Message(_("Your reply has been posted.")), 'success', 'threads_%s' % self.post.pk)
  29. return self.redirect_to_post(self.post)
  30. class EditReplyView(SetStateCheckpointMixin, EditReplyBaseView, TypeMixin):
  31. form_type = EditReplyForm
  32. def response(self):
  33. self.request.messages.set_flash(Message(_("Your reply has been changed.")), 'success', 'threads_%s' % self.post.pk)
  34. return self.redirect_to_post(self.post)