posting.py 2.0 KB

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