示例#1
0
    def email_watchers(self, request, thread_type, post):
        from misago.acl.builder import acl
        from misago.acl.exceptions import ACLError403, ACLError404
        from misago.models import ThreadRead, WatchedThread

        notified = []
        for watch in WatchedThread.objects.filter(thread=self).filter(last_read__gte=self.previous_last.date):
            user = watch.user
            if user.pk != request.user.pk:
                try:
                    user_acl = acl(request, user)
                    user_acl.forums.allow_forum_view(self.forum)
                    user_acl.threads.allow_thread_view(user, self)
                    user_acl.threads.allow_post_view(user, self, post)
                    if not user.is_ignoring(request.user):
                        if watch.email:
                            user.email_user(
                                            request,
                                            '%s_reply_notification' % thread_type,
                                            _('New reply in thread "%(thread)s"') % {'thread': self.name},
                                            {'author': request.user, 'post': post, 'thread': self}
                                            )
                        notified.append(user)
                except (ACLError403, ACLError404):
                    pass
        return notified
示例#2
0
    def email_watchers(self, request, thread_type, post):
        from misago.acl.builder import acl
        from misago.acl.exceptions import ACLError403, ACLError404
        from misago.models import ThreadRead, WatchedThread

        notified = []
        for watch in WatchedThread.objects.filter(thread=self).filter(last_read__gte=self.previous_last.date):
            user = watch.user
            if user.pk != request.user.pk:
                try:
                    user_acl = acl(request, user)
                    user_acl.forums.allow_forum_view(self.forum)
                    user_acl.threads.allow_thread_view(user, self)
                    user_acl.threads.allow_post_view(user, self, post)
                    if not user.is_ignoring(request.user):
                        if watch.email:
                            user.email_user(
                                            request,
                                            '%s_reply_notification' % thread_type,
                                            _('New reply in thread "%(thread)s"') % {'thread': self.name},
                                            {'author': request.user, 'post': post, 'thread': self}
                                            )
                        notified.append(user)
                except (ACLError403, ACLError404):
                    pass
        return notified
示例#3
0
文件: acl.py 项目: 0x1330/Misago
    def process_request(self, request):
        request.acl = acl(request.user)

        if (request.user.is_authenticated() and
            (request.acl.team or request.user.is_god()) != request.user.is_team):
            request.user.is_team = (request.acl.team or request.user.is_god())
            request.user.save(force_update=True)

        if request.session.team != request.user.is_team:
            request.session.team = request.user.is_team
            request.session.save()
示例#4
0
    def process_request(self, request):
        request.acl = acl(request, request.user)

        if (request.user.is_authenticated()
                and (request.acl.team
                     or request.user.is_god()) != request.user.is_team):
            request.user.is_team = (request.acl.team or request.user.is_god())
            request.user.save(force_update=True)

        if request.session.team != request.user.is_team:
            request.session.team = request.user.is_team
            request.session.save()
示例#5
0
 def notify_mentioned(self, request, thread_type, users):
     from misago.acl.builder import acl
     from misago.acl.exceptions import ACLError403, ACLError404
     
     mentioned = self.mentions.all()
     for slug, user in users.items():
         if user.pk != request.user.pk and user not in mentioned:
             self.mentions.add(user)
             try:                    
                 acl = acl(request, user)
                 acl.forums.allow_forum_view(self.forum)
                 acl.threads.allow_thread_view(user, self.thread)
                 acl.threads.allow_post_view(user, self.thread, self)
                 if not user.is_ignoring(request.user):
                     alert = user.alert(ugettext_lazy("%(username)s has mentioned you in his reply in thread %(thread)s").message)
                     alert.profile('username', request.user)
                     alert.post('thread', thread_type, self.thread, self)
                     alert.save_all()
             except (ACLError403, ACLError404):
                 pass
示例#6
0
    def notify_mentioned(self, request, thread_type, users):
        from misago.acl.builder import acl
        from misago.acl.exceptions import ACLError403, ACLError404

        mentioned = self.mentions.all()
        for slug, user in users.items():
            if user.pk != request.user.pk and user not in mentioned:
                self.mentions.add(user)
                try:
                    acl = acl(request, user)
                    acl.forums.allow_forum_view(self.forum)
                    acl.threads.allow_thread_view(user, self.thread)
                    acl.threads.allow_post_view(user, self.thread, self)
                    if not user.is_ignoring(request.user):
                        alert = user.alert(
                            ugettext_lazy(
                                "%(username)s has mentioned you in his reply in thread %(thread)s"
                            ).message)
                        alert.profile('username', request.user)
                        alert.post('thread', thread_type, self.thread, self)
                        alert.save_all()
                except (ACLError403, ACLError404):
                    pass
示例#7
0
文件: usermodel.py 项目: finid/Misago
 def acl(self, request):
     return acl(request, self)
示例#8
0
 def acl(self):
     return acl(self)
示例#9
0
 def acl(self):
     return acl(self)
示例#10
0
 def acl(self, request):
     return acl(request, self)