posting.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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.mixins import RedirectToPostMixin
  5. from misago.apps.threadtype.posting import NewThreadBaseView, EditThreadBaseView, NewReplyBaseView, EditReplyBaseView
  6. from misago.messages import Message
  7. from misago.models import Forum, Thread, Post
  8. from misago.apps.threads.mixins import TypeMixin
  9. class NewThreadView(NewThreadBaseView, TypeMixin):
  10. action = 'new_thread'
  11. def set_context(self):
  12. self.forum = Forum.objects.get(pk=self.kwargs.get('forum'), type='forum')
  13. self.request.acl.forums.allow_forum_view(self.forum)
  14. self.proxy = Forum.objects.parents_aware_forum(self.forum)
  15. self.request.acl.threads.allow_new_threads(self.proxy)
  16. def response(self):
  17. if self.post.moderated:
  18. self.request.messages.set_flash(Message(_("New thread has been posted. It will be hidden from other members until moderator reviews it.")), 'success', 'threads')
  19. else:
  20. self.request.messages.set_flash(Message(_("New thread has been posted.")), 'success', 'threads')
  21. return redirect(reverse('thread', kwargs={'thread': self.thread.pk, 'slug': self.thread.slug}) + ('#post-%s' % self.post.pk))
  22. class EditThreadView(EditThreadBaseView, TypeMixin):
  23. action = 'edit_thread'
  24. def set_context(self):
  25. self.thread = Thread.objects.get(pk=self.kwargs.get('thread'))
  26. self.forum = self.thread.forum
  27. self.proxy = Forum.objects.parents_aware_forum(self.forum)
  28. self.request.acl.forums.allow_forum_view(self.forum)
  29. self.request.acl.threads.allow_thread_view(self.request.user, self.thread)
  30. self.post = self.thread.start_post
  31. self.request.acl.threads.allow_post_view(self.request.user, self.thread, self.post)
  32. self.request.acl.threads.allow_thread_edit(self.request.user, self.proxy, self.thread, self.post)
  33. def response(self):
  34. self.request.messages.set_flash(Message(_("Your thread has been edited.")), 'success', 'threads_%s' % self.post.pk)
  35. return redirect(reverse('thread', kwargs={'thread': self.thread.pk, 'slug': self.thread.slug}) + ('#post-%s' % self.post.pk))
  36. class NewReplyView(NewReplyBaseView, RedirectToPostMixin, TypeMixin):
  37. action = 'new_reply'
  38. def set_context(self):
  39. pass
  40. def response(self):
  41. if self.post.moderated:
  42. 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)
  43. else:
  44. request.messages.set_flash(Message(_("Your reply has been posted.")), 'success', 'threads_%s' % self.post.pk)
  45. return self.redirect_to_post(post)
  46. class EditReplyView(EditReplyBaseView, RedirectToPostMixin, TypeMixin):
  47. pass