app/soc/views/models/notification.py
author Sverre Rabbelier <srabbelier@gmail.com>
Sun, 12 Apr 2009 12:31:55 +0000
changeset 2170 cec46675f866
parent 2164 94e498e3dd44
child 2361 40b0c25a5793
permissions -rw-r--r--
Send out notifications and emails to admin and backup admin Patch by: Sverre Rabbelier
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
     1
#!/usr/bin/python2.5
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
     2
#
1308
35b75ffcbb37 Partially reverted "Update the copyright notice for 2009."
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1307
diff changeset
     3
# Copyright 2008 the Melange authors.
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
     4
#
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
     6
# you may not use this file except in compliance with the License.
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
     7
# You may obtain a copy of the License at
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
     8
#
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    10
#
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    14
# See the License for the specific language governing permissions and
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    15
# limitations under the License.
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    16
747
ad62f4c3245e In soc.views.models.notification module remove unused imports, add missing white space, change list() method definition to comply with base View list() method declaration. Add missing Meta class docstring.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 738
diff changeset
    17
"""This module contains the view code for Notifications.
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    18
"""
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    19
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    20
__authors__ = [
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    21
  '"Lennard de Rijk" <ljvderijk@gmail.com>',
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    22
]
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    23
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    24
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    25
import time
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    26
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    27
from django import forms
970
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 890
diff changeset
    28
from django.utils.translation import ugettext
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    29
788
892877b7db07 Factored out the clean_existing_user method
Sverre Rabbelier <srabbelier@gmail.com>
parents: 763
diff changeset
    30
from soc.logic import cleaning
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    31
from soc.logic import dicts
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    32
from soc.models import notification as notification_model
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    33
from soc.views import helper
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    34
from soc.views.helper import access
876
0c1329d4b514 Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 858
diff changeset
    35
from soc.views.helper import decorators
827
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
    36
from soc.views.helper import lists as list_helper
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    37
from soc.views.helper import redirects
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    38
from soc.views.models import base
1163
d8c50be19232 Cleaned up access.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1059
diff changeset
    39
from soc.logic.models.notification import logic as notification_logic
d8c50be19232 Cleaned up access.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1059
diff changeset
    40
from soc.logic.models.user import logic as user_logic
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    41
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    42
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    43
class CreateForm(helper.forms.BaseForm):
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    44
  """Form for creating a Notification.
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    45
  """
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    46
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    47
  # to user field
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    48
  to_user = forms.fields.CharField(label='To User')
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    49
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    50
  def __init__(self, *args, **kwargs):
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    51
    """ Calls super and then redefines the order in which the fields appear.
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    52
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    53
    for parameters see BaseForm.__init__()
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    54
    """
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    55
    super(CreateForm, self).__init__(*args, **kwargs)
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    56
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    57
    # set form fields order
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    58
    self.fields.keyOrder = ['to_user', 'subject', 'message']
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    59
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    60
  class Meta:
747
ad62f4c3245e In soc.views.models.notification module remove unused imports, add missing white space, change list() method definition to comply with base View list() method declaration. Add missing Meta class docstring.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 738
diff changeset
    61
    """Inner Meta class that defines some behavior for the form.
ad62f4c3245e In soc.views.models.notification module remove unused imports, add missing white space, change list() method definition to comply with base View list() method declaration. Add missing Meta class docstring.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 738
diff changeset
    62
    """
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    63
    model = notification_model.Notification
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    64
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    65
    # exclude the necessary fields from the form
737
4c78ee183eb6 Notification property has_been_read changed into unread
Lennard de Rijk <ljvderijk@gmail.com>
parents: 736
diff changeset
    66
    exclude = ['link_id', 'scope', 'scope_path', 'from_user', 'unread']
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    67
788
892877b7db07 Factored out the clean_existing_user method
Sverre Rabbelier <srabbelier@gmail.com>
parents: 763
diff changeset
    68
  clean_to_user = cleaning.clean_existing_user('to_user')
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    69
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    70
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    71
class View(base.View):
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    72
  """View methods for the Notification model.
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    73
  """
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    74
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    75
  def __init__(self, params=None):
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    76
    """Defines the fields and methods required for the base View class
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    77
    to provide the user with list, public, create, edit and delete views.
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    78
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    79
    Params:
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    80
      params: a dict with params for this View
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    81
    """
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    82
1007
3b66772d21a5 Major refactor of the access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 986
diff changeset
    83
    rights = access.Checker(params)
3b66772d21a5 Major refactor of the access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 986
diff changeset
    84
    rights['unspecified'] = ['deny']
3b66772d21a5 Major refactor of the access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 986
diff changeset
    85
    rights['edit'] = ['deny']
1176
c211191e7d81 Fixed access related bugs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1163
diff changeset
    86
    rights['show'] = [('checkIsMyEntity', [notification_logic, 'scope_path'])]
1197
7785b5091f07 Fixes a bug where notifications can't be deleted.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1176
diff changeset
    87
    rights['delete'] = [('checkIsMyEntity', [notification_logic, 'scope_path'])]
1012
73f0b61f2d9d Fold checkAgreesToSiteToS into checkIsUser
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1007
diff changeset
    88
    rights['list'] = ['checkIsUser']
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    89
    # create is developer only for the time being to test functionality
1007
3b66772d21a5 Major refactor of the access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 986
diff changeset
    90
    rights['create'] = ['checkIsDeveloper']
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    91
734
1ebd40380aa5 Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents: 733
diff changeset
    92
    new_params = {}
1163
d8c50be19232 Cleaned up access.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1059
diff changeset
    93
    new_params['logic'] = notification_logic
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    94
    new_params['rights'] = rights
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    95
734
1ebd40380aa5 Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents: 733
diff changeset
    96
    new_params['name'] = "Notification"
1ebd40380aa5 Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents: 733
diff changeset
    97
763
c31a2eb14d6d Set no_create_with_key_fields paramater to True for Notifications.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 762
diff changeset
    98
    new_params['no_create_with_key_fields'] = True
734
1ebd40380aa5 Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents: 733
diff changeset
    99
    new_params['create_form'] = CreateForm
1ebd40380aa5 Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents: 733
diff changeset
   100
738
61867ffea8a8 Brown-paper-bag fix in notification.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 737
diff changeset
   101
    new_params['edit_redirect'] = '/%(url_name)s/list'
736
c70d56182ce2 No override needed in notifications.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 734
diff changeset
   102
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   103
    params = dicts.merge(params, new_params)
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   104
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   105
    super(View, self).__init__(params=params)
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   106
876
0c1329d4b514 Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 858
diff changeset
   107
  @decorators.merge_params
0c1329d4b514 Make use of the new decorators in all applicable views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 858
diff changeset
   108
  @decorators.check_access
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   109
  def list(self, request, access_type,
2076
1cd180cc56c9 Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1991
diff changeset
   110
           page_name=None, params=None, filter=None, order=None, **kwargs):
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   111
    """Lists all notifications that the current logged in user has stored.
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   112
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   113
    for parameters see base.list()
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   114
    """
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   115
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   116
    # get the current user
1163
d8c50be19232 Cleaned up access.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1059
diff changeset
   117
    user_entity = user_logic.getForCurrentAccount()
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   118
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   119
    # only select the notifications for this user so construct a filter
827
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   120
    filter = {
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   121
        'scope': user_entity,
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   122
        'unread': True,
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   123
        }
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   124
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   125
    # create the list parameters
827
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   126
    un_params = params.copy() # unread notifications
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   127
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   128
    # define the list redirect action to show the notification
827
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   129
    un_params['list_action'] = (redirects.getPublicRedirect, params)
970
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 890
diff changeset
   130
    un_params['list_description'] = ugettext(
827
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   131
        "An overview of your unread Notifications.")
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   132
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   133
    # TODO(Lennard) when list sorting is implemented sort on descending date
827
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   134
    un_list = list_helper.getListContent(
1667
95bc81b4cd5c Updated list to use the new order in getForFields.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   135
        request, un_params, filter, idx=0)
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   136
827
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   137
    # Now get the read list
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   138
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   139
    # Reuse the filter, but only for read notifications
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   140
    filter['unread'] = False
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   141
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   142
    rn_params = params.copy() # read notifications
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   143
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   144
    rn_params['list_action'] = (redirects.getPublicRedirect, params)
970
8b5611d5b053 Use ugettext instead of ugettext_lazy
Sverre Rabbelier <srabbelier@gmail.com>
parents: 890
diff changeset
   145
    rn_params['list_description'] = ugettext(
827
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   146
        "An overview of your read Notifications.")
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   147
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   148
    rn_list = list_helper.getListContent(
1667
95bc81b4cd5c Updated list to use the new order in getForFields.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   149
        request, rn_params, filter, idx=1)
827
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   150
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   151
    # fill contents with all the needed lists
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   152
    contents = [un_list, rn_list]
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   153
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   154
    # call the _list method from base to display the list
88c186556a80 Split the notification list in read/unread
Sverre Rabbelier <srabbelier@gmail.com>
parents: 799
diff changeset
   155
    return self._list(request, params, contents, page_name)
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   156
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   157
  def _editPost(self, request, entity, fields):
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   158
    """See base.View._editPost().
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   159
    """
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   160
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   161
    # get the current user
1163
d8c50be19232 Cleaned up access.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1059
diff changeset
   162
    current_user = user_logic.getForCurrentAccount()
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   163
2076
1cd180cc56c9 Style fixes and removal of unused imports in soc.views.models.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1991
diff changeset
   164
    fields['link_id'] = 't%i' % (int(time.time()*100))
788
892877b7db07 Factored out the clean_existing_user method
Sverre Rabbelier <srabbelier@gmail.com>
parents: 763
diff changeset
   165
    fields['scope'] = fields['to_user']
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   166
    fields['from_user'] = current_user
788
892877b7db07 Factored out the clean_existing_user method
Sverre Rabbelier <srabbelier@gmail.com>
parents: 763
diff changeset
   167
    fields['scope_path'] = fields['to_user'].link_id
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   168
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   169
  def _editSeed(self, request, seed):
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   170
    """Checks if scope_path is seeded and puts it into to_user.
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   171
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   172
    for parameters see base._editSeed()
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   173
    """
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   174
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   175
    # if scope_path is present
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   176
    if 'scope_path' in seed.keys():
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   177
      # fill the to_user field with the scope path
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   178
      seed['to_user'] = seed['scope_path']
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   179
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   180
  def _public(self, request, entity, context):
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   181
    """Marks the Notification as read if that hasn't happened yet.
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   182
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   183
    for parameters see base._public()
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   184
    """
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   185
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   186
    # if the user viewing is the user for which this notification is meant
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   187
    # and the notification has not been read yet
737
4c78ee183eb6 Notification property has_been_read changed into unread
Lennard de Rijk <ljvderijk@gmail.com>
parents: 736
diff changeset
   188
    if entity.unread:
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   189
      # get the current user
1163
d8c50be19232 Cleaned up access.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1059
diff changeset
   190
      user = user_logic.getForCurrentAccount()
737
4c78ee183eb6 Notification property has_been_read changed into unread
Lennard de Rijk <ljvderijk@gmail.com>
parents: 736
diff changeset
   191
      
4c78ee183eb6 Notification property has_been_read changed into unread
Lennard de Rijk <ljvderijk@gmail.com>
parents: 736
diff changeset
   192
      # if the message is meant for the user that is reading it
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   193
      if entity.scope.key() == user.key():
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   194
        # mark the entity as read
986
e9611a2288ca Rename ModelProperties to EntityProperties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 970
diff changeset
   195
        self._logic.updateEntityProperties(entity, {'unread' : False} )
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   196
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   197
    context['entity_type_url'] = self._params['url_name']
2164
94e498e3dd44 Brown paper bag fix
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2161
diff changeset
   198
    context['entity_suffix'] = entity.key().id_or_name() if entity else None
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   199
1991
3aeda3007467 Make _public return True iff public page should be shown
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1890
diff changeset
   200
    return True
3aeda3007467 Make _public return True iff public page should be shown
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1890
diff changeset
   201
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   202
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   203
view = View()
1343
4ba39392c854 Hook up the admin view everywhere
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1308
diff changeset
   204
1584
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1343
diff changeset
   205
admin = decorators.view(view.admin)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1343
diff changeset
   206
create = decorators.view(view.create)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1343
diff changeset
   207
edit = decorators.view(view.edit)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1343
diff changeset
   208
delete = decorators.view(view.delete)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1343
diff changeset
   209
list = decorators.view(view.list)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1343
diff changeset
   210
public = decorators.view(view.public)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1343
diff changeset
   211
export = decorators.view(view.export)
858
e79e7a22326f Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents: 830
diff changeset
   212