posting.py 2.0 KB

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