Exemple #1
0
    def deliver(self, recipient, sender, notice_type, extra_context):
        context = self.default_context()
        context.update(extra_context)

        if shadow_ban_applies(notice_type, recipient, context):
            return

        template = 'notice.html'
        message = self.get_formatted_messages([template], notice_type.label,
                                              context)[template]
        level = persistent_messages.INFO

        try:
            request = get_request()
            persistent_messages.add_message(request,
                                            level,
                                            message,
                                            user=recipient,
                                            from_user=sender)
        except IndexError:
            persistent_message = Message(user=recipient,
                                         from_user=sender,
                                         level=level,
                                         message=message)
            persistent_message.save()
Exemple #2
0
    def add(self,
            level,
            message,
            extra_tags='',
            subject='',
            user=None,
            from_user=None,
            expires=None,
            close_timeout=None):
        """
        Queues a message to be stored.

        The message is only queued if it contained something and its level is
        not less than the recording level (``self.level``).
        """
        to_user = user or get_user(self.request)
        if not to_user.is_authenticated():
            if Message(level=level).is_persistent():
                raise NotImplementedError(
                    'Persistent message levels cannot be used for anonymous users.'
                )
            else:
                return super(PersistentMessageStorage,
                             self).add(level, message, extra_tags)
        if not message:
            return
        # Check that the message level is not less than the recording level.
        level = int(level)
        if level < self.level:
            return
        # Add the message.
        message = Message(user=to_user,
                          level=level,
                          message=message,
                          extra_tags=extra_tags,
                          subject=subject,
                          from_user=from_user,
                          expires=expires,
                          close_timeout=close_timeout)
        # Messages need a primary key when being displayed so that they can be closed/marked as read by the user.
        # Hence, save it now instead of adding it to queue:
        if STORE_WHEN_ADDING:
            message.save()
        else:
            self.added_new = True
            self._queued_messages.append(message)