thread.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from django.utils.translation import ugettext as _
  2. from misago.apps.threadtype.thread import ThreadBaseView, ThreadModeration, PostsModeration
  3. from misago.messages import Message
  4. from misago.models import Forum, Thread
  5. from misago.apps.reports.mixins import TypeMixin
  6. class ThreadView(ThreadBaseView, ThreadModeration, PostsModeration, TypeMixin):
  7. def posts_actions(self):
  8. acl = self.request.acl.threads.get_role(self.thread.forum_id)
  9. actions = []
  10. try:
  11. if acl['can_delete_posts']:
  12. if self.thread.replies_deleted > 0:
  13. actions.append(('undelete', _('Restore posts')))
  14. actions.append(('soft', _('Hide posts')))
  15. if acl['can_delete_posts'] == 2:
  16. actions.append(('hard', _('Delete posts')))
  17. except KeyError:
  18. pass
  19. return actions
  20. def thread_actions(self):
  21. acl = self.request.acl.threads.get_role(self.thread.forum_id)
  22. actions = []
  23. try:
  24. if self.thread.weight != 1:
  25. actions.append(('sticky', _('Change to resolved')))
  26. if self.thread.weight != 0:
  27. actions.append(('normal', _('Change to bogus')))
  28. if acl['can_delete_threads']:
  29. if self.thread.deleted:
  30. actions.append(('undelete', _('Restore this report')))
  31. else:
  32. actions.append(('soft', _('Hide this report')))
  33. if acl['can_delete_threads'] == 2:
  34. actions.append(('hard', _('Delete this report')))
  35. except KeyError:
  36. pass
  37. return actions
  38. def after_thread_action_sticky(self):
  39. self.thread.set_checkpoint(self.request, 'resolved')
  40. self.request.messages.set_flash(Message(_('Report has been set as resolved.')), 'success', 'threads')
  41. def after_thread_action_normal(self):
  42. self.thread.set_checkpoint(self.request, 'bogus')
  43. self.request.messages.set_flash(Message(_('Report has been set as bogus.')), 'success', 'threads')
  44. def after_thread_action_undelete(self):
  45. self.request.messages.set_flash(Message(_('Report has been restored.')), 'success', 'threads')
  46. def after_thread_action_soft(self):
  47. self.request.messages.set_flash(Message(_('Report has been hidden.')), 'success', 'threads')
  48. def after_thread_action_hard(self):
  49. self.request.messages.set_flash(Message(_('Report "%(thread)s" has been deleted.') % {'thread': self.thread.name}), 'success', 'threads')