posting.py 2.8 KB

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