12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- from django.utils.translation import ugettext as _
- from misago.apps.threadtype.thread import ThreadBaseView, ThreadModeration, PostsModeration
- from misago.messages import Message
- from misago.models import Forum, Thread
- from misago.monitor import monitor, UpdatingMonitor
- from misago.apps.reports.mixins import TypeMixin
- class ThreadView(ThreadBaseView, ThreadModeration, PostsModeration, TypeMixin):
- def fetch_thread(self):
- super(ThreadView, self).fetch_thread()
- self.thread.original_weight = self.thread.weight
- def posts_actions(self):
- acl = self.request.acl.threads.get_role(self.thread.forum_id)
- actions = []
- try:
- if acl['can_delete_posts']:
- if self.thread.replies_deleted > 0:
- actions.append(('undelete', _('Restore posts')))
- actions.append(('soft', _('Hide posts')))
- if acl['can_delete_posts'] == 2:
- actions.append(('hard', _('Delete posts')))
- except KeyError:
- pass
- return actions
- def thread_actions(self):
- acl = self.request.acl.threads.get_role(self.thread.forum_id)
- actions = []
- try:
- if self.thread.weight != 1:
- actions.append(('sticky', _('Change to resolved')))
- if self.thread.weight != 0:
- actions.append(('normal', _('Change to bogus')))
- if acl['can_delete_threads']:
- if self.thread.deleted:
- actions.append(('undelete', _('Restore this report')))
- else:
- actions.append(('soft', _('Hide this report')))
- if acl['can_delete_threads'] == 2:
- actions.append(('hard', _('Delete this report')))
- except KeyError:
- pass
- return actions
- def after_thread_action_sticky(self):
- self.thread.set_checkpoint(self.request, 'resolved')
- if self.thread.original_weight == 2:
- with UpdatingMonitor() as cm:
- monitor.decrease('reported_posts')
- self.request.messages.set_flash(Message(_('Report has been set as resolved.')), 'success', 'threads')
- def after_thread_action_normal(self):
- self.thread.set_checkpoint(self.request, 'bogus')
- if self.thread.original_weight == 2:
- with UpdatingMonitor() as cm:
- monitor.decrease('reported_posts')
- self.request.messages.set_flash(Message(_('Report has been set as bogus.')), 'success', 'threads')
- def after_thread_action_undelete(self):
- if self.thread.original_weight == 2:
- with UpdatingMonitor() as cm:
- monitor.increase('reported_posts')
- self.request.messages.set_flash(Message(_('Report has been restored.')), 'success', 'threads')
- def after_thread_action_soft(self):
- if self.thread.original_weight == 2:
- with UpdatingMonitor() as cm:
- monitor.decrease('reported_posts')
- self.request.messages.set_flash(Message(_('Report has been hidden.')), 'success', 'threads')
- def after_thread_action_hard(self):
- self.request.messages.set_flash(Message(_('Report "%(thread)s" has been deleted.') % {'thread': self.thread.name}), 'success', 'threads')
|