123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- from django.utils.translation import ugettext as _
- from misago.apps.threadtype.thread import ThreadBaseView, ThreadModeration, PostsModeration
- from misago.forms import FormFields
- from misago.models import Forum, Thread
- from misago.apps.privatethreads.mixins import TypeMixin
- from misago.apps.privatethreads.forms import InviteMemberForm
- class ThreadView(ThreadBaseView, ThreadModeration, PostsModeration, TypeMixin):
- def posts_actions(self):
- acl = self.request.acl.threads.get_role(self.thread.forum_id)
- actions = []
- try:
- if acl['can_move_threads_posts']:
- actions.append(('merge', _('Merge posts into one')))
- if acl['can_protect_posts']:
- actions.append(('protect', _('Protect posts')))
- actions.append(('unprotect', _('Remove posts protection')))
- if acl['can_delete_posts']:
- if self.thread.replies_deleted > 0:
- actions.append(('undelete', _('Undelete posts')))
- actions.append(('soft', _('Soft delete posts')))
- if acl['can_delete_posts'] == 2:
- actions.append(('hard', _('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 acl['can_close_threads']:
- if self.thread.closed:
- actions.append(('open', _('Open this thread')))
- else:
- actions.append(('close', _('Close this thread')))
- if acl['can_delete_threads']:
- if self.thread.deleted:
- actions.append(('undelete', _('Undelete this thread')))
- else:
- actions.append(('soft', _('Soft delete this thread')))
- if acl['can_delete_threads'] == 2:
- actions.append(('hard', _('Hard delete this thread')))
- except KeyError:
- pass
- return actions
- def template_vars(self, context):
- context['participants'] = self.thread.participants.all().prefetch_related('rank')
- context['invite_form'] = FormFields(InviteMemberForm(request=self.request))
- return context
- def tracker_update(self, last_post):
- super(ThreadView, self).tracker_update(last_post)
- unread = self.tracker.unread_count(self.forum.thread_set.filter(participants__id=self.request.user.pk))
- self.request.user.sync_unread_pds(unread)
- self.request.user.save(force_update=True)
|