posting.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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 NewThreadBaseView, EditThreadBaseView, NewReplyBaseView, EditReplyBaseView
  5. from misago.messages import Message
  6. from misago.models import Forum, Thread, Post
  7. from misago.apps.privatethreads.forms import (NewThreadForm, EditThreadForm,
  8. NewReplyForm, EditReplyForm)
  9. from misago.apps.privatethreads.mixins import TypeMixin
  10. class NewThreadView(NewThreadBaseView, TypeMixin):
  11. form_type = NewThreadForm
  12. def set_forum_context(self):
  13. self.forum = Forum.objects.get(special='private_threads')
  14. def after_form(self, form):
  15. self.thread.participants.add(self.request.user)
  16. self.invite_users(form.invite_users)
  17. self.whitelist_mentions()
  18. self.force_stats_sync()
  19. def response(self):
  20. if self.post.moderated:
  21. self.request.messages.set_flash(Message(_("New thread has been posted. It will be hidden from other members until moderator reviews it.")), 'success', 'threads')
  22. else:
  23. self.request.messages.set_flash(Message(_("New thread has been posted.")), 'success', 'threads')
  24. return redirect(reverse('private_thread', kwargs={'thread': self.thread.pk, 'slug': self.thread.slug}) + ('#post-%s' % self.post.pk))
  25. class EditThreadView(EditThreadBaseView, TypeMixin):
  26. form_type = EditThreadForm
  27. def after_form(self, form):
  28. self.whitelist_mentions()
  29. def response(self):
  30. self.request.messages.set_flash(Message(_("Your thread has been edited.")), 'success', 'threads_%s' % self.post.pk)
  31. return redirect(reverse('private_thread', kwargs={'thread': self.thread.pk, 'slug': self.thread.slug}) + ('#post-%s' % self.post.pk))
  32. class NewReplyView(NewReplyBaseView, TypeMixin):
  33. form_type = NewReplyForm
  34. def after_form(self, form):
  35. try:
  36. self.invite_users(form.invite_users)
  37. except AttributeError:
  38. pass
  39. self.whitelist_mentions()
  40. self.force_stats_sync()
  41. def response(self):
  42. if self.post.moderated:
  43. self.request.messages.set_flash(Message(_("Your reply has been posted. It will be hidden from other members until moderator reviews it.")), 'success', 'threads_%s' % self.post.pk)
  44. else:
  45. self.request.messages.set_flash(Message(_("Your reply has been posted.")), 'success', 'threads_%s' % self.post.pk)
  46. return self.redirect_to_post(self.post)
  47. class EditReplyView(EditReplyBaseView, TypeMixin):
  48. form_type = EditReplyForm
  49. def after_form(self, form):
  50. self.whitelist_mentions()
  51. def response(self):
  52. self.request.messages.set_flash(Message(_("Your reply has been changed.")), 'success', 'threads_%s' % self.post.pk)
  53. return self.redirect_to_post(self.post)