示例#1
0
 def _prepare_messages(self, messages):
     if not get_user(self.request).is_authenticated():
         return super(PersistentMessageStorage, self)._prepare_messages(messages)
     """
     Obsolete method since model takes care of this.
     """
     pass
示例#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)
示例#3
0
 def _prepare_messages(self, messages):
     if not get_user(self.request).is_authenticated():
         return super(PersistentMessageStorage,
                      self)._prepare_messages(messages)
     """
     Obsolete method since model takes care of this.
     """
     pass
示例#4
0
 def __iter__(self):
     if not get_user(self.request).is_authenticated():
         return super(PersistentMessageStorage, self).__iter__()
     self.used = True
     messages = []
     messages.extend(self._loaded_messages)
     if self._queued_messages:
         messages.extend(self._queued_messages)
     return iter(messages)
示例#5
0
 def update(self, response):
     if not get_user(self.request).is_authenticated():
         return super(PersistentMessageStorage, self).update(response)
     """
     Deletes all non-persistent, read messages. Saves all unstored messages.
     """
     if self.used:
         self._delete_non_persistent()
     return super(PersistentMessageStorage, self).update(response)
示例#6
0
def message_mark_all_read(request):
    user = get_user(request)
    if not user.is_authenticated():
        raise PermissionDenied
    Message.objects.filter(user=user).update(read=True)
    if not request.is_ajax():
        return HttpResponseRedirect(request.META.get('HTTP_REFERER') or '/')
    else:
        return HttpResponse('')
示例#7
0
def message_mark_all_read(request):
    user = get_user(request)
    if not user.is_authenticated():
        raise PermissionDenied
    Message.objects.filter(user=user).update(read=True)
    if not request.is_ajax():
        return HttpResponseRedirect(request.META.get('HTTP_REFERER') or '/')
    else:
        return HttpResponse('')
示例#8
0
 def __iter__(self):
     if not get_user(self.request).is_authenticated():
         return super(PersistentMessageStorage, self).__iter__()
     self.used = True
     messages = []
     messages.extend(self._loaded_messages)
     if self._queued_messages:
         messages.extend(self._queued_messages)
     return iter(messages)
示例#9
0
def message_detail(request, message_id):
    user = get_user(request)
    if not user.is_authenticated():
        raise PermissionDenied
    message = get_object_or_404(Message, user=user, pk=message_id)
    message.read = True
    message.save()
    return render_to_response('persistent_messages/message/detail.html', {'message': message}, 
        context_instance=RequestContext(request))
示例#10
0
 def update(self, response):
     if not get_user(self.request).is_authenticated():
         return super(PersistentMessageStorage, self).update(response)
     """
     Deletes all non-persistent, read messages. Saves all unstored messages.
     """
     if self.used:
         self._delete_non_persistent()
     return super(PersistentMessageStorage, self).update(response)
示例#11
0
def message_detail(request, message_id):
    user = get_user(request)
    if not user.is_authenticated():
        raise PermissionDenied
    message = get_object_or_404(Message, user=user, pk=message_id)
    message.read = True
    message.save()
    return render_to_response('persistent_messages/message/detail.html',
                              {'message': message},
                              context_instance=RequestContext(request))
示例#12
0
def message_mark_read(request, message_id):
    user = get_user(request)
    if not user.is_authenticated():
        raise PermissionDenied
    message = get_object_or_404(Message, user=user, pk=message_id)
    message.read = True
    message.save()
    if not request.is_ajax():
        return HttpResponseRedirect(request.META.get('HTTP_REFERER') or '/')
    else:
        return HttpResponse('')
示例#13
0
def message_mark_read(request, message_id):
    user = get_user(request)
    if not user.is_authenticated():
        raise PermissionDenied
    message = get_object_or_404(Message, user=user, pk=message_id)
    message.read = True
    message.save()
    if not request.is_ajax():
        return HttpResponseRedirect(request.META.get('HTTP_REFERER') or '/')
    else:
        return HttpResponse('')
示例#14
0
def message_inbox(request, template_name='persistent_messages/message_inbox.html'):
    """
    Displays a list of received messages for the current user.
    Optional Arguments:
        ``template_name``: name of the template to use.
    """
    user = get_user(request)
    #if not user.is_authenticated():
    #    raise PermissionDenied
    
    message_list = Message.objects.filter(user=user)
    return render_to_response(template_name, {
        'message_list': message_list,
    }, context_instance=RequestContext(request))
示例#15
0
def message_detail(request, message_id):
    user = get_user(request)
    if not user.is_authenticated():
        raise PermissionDenied

    message = get_object_or_404(Message, user=user, pk=message_id)
    message.read = True
    message.save()
    
    if not request.is_ajax():
      return render_to_response('persistent_messages/message/detail.html', {'message': message}, 
          context_instance=RequestContext(request))
    else:
        return HttpResponse(linebreaksbr(message.message)) # mimetype='application/javascript'
示例#16
0
 def _get(self, *args, **kwargs):
     """
     Retrieves a list of stored messages. Returns a tuple of the messages
     and a flag indicating whether or not all the messages originally
     intended to be stored in this storage were, in fact, stored and
     retrieved; e.g., ``(messages, all_retrieved)``.
     """
     if not get_user(self.request).is_authenticated():
         return super(PersistentMessageStorage, self)._get(*args, **kwargs)
     messages = []
     for message in self._message_queryset():
         if not message.is_persistent():
             self.non_persistent_messages.append(message)
         messages.append(message)
     return (messages, True)
示例#17
0
    def _store(self, messages, response, *args, **kwargs):
        """
        Stores a list of messages, returning a list of any messages which could
        not be stored.

        If STORE_WHEN_ADDING is True, messages are already stored at this time and won't be
        saved again.
        """
        if not get_user(self.request).is_authenticated():
            return super(PersistentMessageStorage, self)._store(messages, response, *args, **kwargs)
        for message in messages:
            if not self.used or message.is_persistent():
                if not message.pk:
                    message.save()
        return []
示例#18
0
 def _get(self, *args, **kwargs):
     """
     Retrieves a list of stored messages. Returns a tuple of the messages
     and a flag indicating whether or not all the messages originally
     intended to be stored in this storage were, in fact, stored and
     retrieved; e.g., ``(messages, all_retrieved)``.
     """
     if not get_user(self.request).is_authenticated():
         return super(PersistentMessageStorage, self)._get(*args, **kwargs)
     messages = []
     for message in self._message_queryset():
         if not message.is_persistent():
             self.non_persistent_messages.append(message)
         messages.append(message)
     return (messages, True)
示例#19
0
    def _store(self, messages, response, *args, **kwargs):
        """
        Stores a list of messages, returning a list of any messages which could
        not be stored.

        If STORE_WHEN_ADDING is True, messages are already stored at this time and won't be
        saved again.
        """
        if not get_user(self.request).is_authenticated():
            return super(PersistentMessageStorage,
                         self)._store(messages, response, *args, **kwargs)
        for message in messages:
            if not self.used or message.is_persistent():
                if not message.pk:
                    message.save()
        return []
示例#20
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)
示例#21
0
 def __init__(self, *args, **kwargs):
     super(PersistentMessageStorage, self).__init__(*args, **kwargs)
     self.non_persistent_messages = []
     self.is_anonymous = not get_user(self.request).is_authenticated()
示例#22
0
 def _message_queryset(self, exclude_unread=True):
     qs = Message.objects.filter(user=get_user(self.request)).filter(
         Q(expires=None) | Q(expires__gt=datetime.datetime.now()))
     if exclude_unread:
         qs = qs.exclude(read=True)
     return qs
示例#23
0
 def _message_queryset(self, exclude_unread=True):
     qs = Message.objects.filter(user=get_user(self.request)).filter(Q(expires=None) | Q(expires__gt=datetime.datetime.now()))
     if exclude_unread:
         qs = qs.exclude(read=True)
     return qs
示例#24
0
 def __init__(self, *args, **kwargs):
     super(PersistentMessageStorage, self).__init__(*args, **kwargs)
     self.non_persistent_messages = []
     self.is_anonymous = not get_user(self.request).is_authenticated()