app/soc/views/models/notification.py
author Lennard de Rijk <ljvderijk@gmail.com>
Mon, 29 Dec 2008 18:51:36 +0000
changeset 763 c31a2eb14d6d
parent 762 4e2623e68a0e
child 788 892877b7db07
permissions -rw-r--r--
Set no_create_with_key_fields paramater to True for Notifications. Patch by: Lennard de Rijk
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
#
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
     3
# Copyright 2008 the Melange authors.
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
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    28
from django.utils.translation import ugettext_lazy
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    29
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    30
from soc.logic import dicts
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    31
from soc.logic import validate
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
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    35
from soc.views.helper import redirects
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    36
from soc.views.models import base
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    37
from soc.logic.models import notification as notification_logic
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    38
from soc.logic.models import user as user_logic
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    39
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    40
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    41
class CreateForm(helper.forms.BaseForm):
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    42
  """Form for creating a Notification.
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    43
  """
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    44
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    45
  # to user field
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    46
  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
    47
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    48
  def __init__(self, *args, **kwargs):
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    49
    """ 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
    50
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    51
    for parameters see BaseForm.__init__()
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
    super(CreateForm, self).__init__(*args, **kwargs)
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
    # set form fields order
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    56
    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
    57
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    58
  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
    59
    """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
    60
    """
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    61
    model = notification_model.Notification
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    62
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    63
    # 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
    64
    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
    65
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    66
  def clean_to_user(self):
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    67
    """Check if the to_user field has been filled in correctly.
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    68
    """
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    69
    link_id = self.cleaned_data.get('to_user').lower()
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
    if not validate.isLinkIdFormatValid(link_id):
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    72
      raise forms.ValidationError("This link ID is in wrong format.")
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
    to_user = user_logic.logic.getForFields({'link_id' : link_id}, unique=True)
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    75
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    76
    if not to_user:
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    77
      # user does not exist
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    78
      raise forms.ValidationError("This user does not exist")
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    79
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    80
    return link_id
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
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    83
class View(base.View):
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    84
  """View methods for the Notification model.
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    85
  """
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    86
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    87
  def __init__(self, params=None):
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    88
    """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
    89
    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
    90
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    91
    Params:
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    92
      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
    93
    """
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    94
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    95
    rights = {}
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    96
    rights['unspecified'] = [access.deny]
762
4e2623e68a0e Revert "Overwrite default patterns in views/models/notification.py to disallow certain URL's."
Sverre Rabbelier <srabbelier@gmail.com>
parents: 760
diff changeset
    97
    rights['edit'] = [access.deny]
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    98
    rights['show'] = [access.checkIsMyNotification]
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
    99
    rights['delete'] = [access.checkIsDeveloper]
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   100
    rights['list'] = [access.checkIsUser]
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   101
    # create is developer only for the time being to test functionality
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   102
    rights['create'] = [access.checkIsDeveloper]
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   103
734
1ebd40380aa5 Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents: 733
diff changeset
   104
    new_params = {}
1ebd40380aa5 Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents: 733
diff changeset
   105
    new_params['logic'] = notification_logic.logic
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   106
    new_params['rights'] = rights
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   107
734
1ebd40380aa5 Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents: 733
diff changeset
   108
    new_params['name'] = "Notification"
1ebd40380aa5 Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents: 733
diff changeset
   109
    new_params['name_short'] = "Notification"
1ebd40380aa5 Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents: 733
diff changeset
   110
    new_params['name_plural'] = "Notifications"
1ebd40380aa5 Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents: 733
diff changeset
   111
    new_params['url_name'] = "notification"
1ebd40380aa5 Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents: 733
diff changeset
   112
    new_params['module_name'] = "notification"
1ebd40380aa5 Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents: 733
diff changeset
   113
763
c31a2eb14d6d Set no_create_with_key_fields paramater to True for Notifications.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 762
diff changeset
   114
    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
   115
    new_params['create_form'] = CreateForm
1ebd40380aa5 Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents: 733
diff changeset
   116
738
61867ffea8a8 Brown-paper-bag fix in notification.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 737
diff changeset
   117
    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
   118
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   119
    params = dicts.merge(params, new_params)
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   120
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   121
    super(View, self).__init__(params=params)
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   122
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   123
  def list(self, request, access_type,
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
   124
           page_name=None, params=None, filter=None):
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   125
    """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
   126
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   127
    for parameters see base.list()
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   128
    """
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   129
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   130
    params = dicts.merge(params, self._params)
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   131
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   132
    # get the current user
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   133
    user_entity = user_logic.logic.getForCurrentAccount()
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   134
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   135
    # only select the notifications for this user so construct a filter
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   136
    filter = {'scope': user_entity}
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   137
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   138
    # create the list parameters
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   139
    list_params = params.copy()
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   140
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   141
    # define the list redirect action to show the notification
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   142
    list_params['list_action'] = (redirects.getPublicRedirect, params)
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   143
    list_params['list_description'] = ugettext_lazy(
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   144
        "An overview of your received Notifications.")
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   145
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   146
    # TODO(Lennard) when list sorting is implemented sort on descending date
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   147
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   148
    # use the generic list method with the filter. The access check in this
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   149
    # method will trigger an errorResponse when user_entity is None
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   150
    return super(View, self).list(request, access_type,
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   151
        page_name, list_params, filter)
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   152
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   153
  def _editPost(self, request, entity, fields):
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   154
    """See base.View._editPost().
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   155
    """
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
    # get the current user
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   158
    current_user = user_logic.logic.getForCurrentAccount()
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
    to_user = user_logic.logic.getForFields(
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   161
        {'link_id' : fields['to_user']}, unique=True)
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   162
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
   163
    fields['link_id'] = '%i' % (time.time())
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   164
    fields['scope'] = to_user
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   165
    fields['from_user'] = current_user
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   166
    fields['scope_path'] = fields['to_user']
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   167
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   168
  def _editSeed(self, request, seed):
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   169
    """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
   170
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   171
    for parameters see base._editSeed()
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   172
    """
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
    # if scope_path is present
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   175
    if 'scope_path' in seed.keys():
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   176
      # 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
   177
      seed['to_user'] = seed['scope_path']
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   178
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   179
  def _public(self, request, entity, context):
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   180
    """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
   181
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   182
    for parameters see base._public()
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   183
    """
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
    # 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
   186
    # 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
   187
    if entity.unread:
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   188
      # get the current user
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   189
      user = user_logic.logic.getForCurrentAccount()
737
4c78ee183eb6 Notification property has_been_read changed into unread
Lennard de Rijk <ljvderijk@gmail.com>
parents: 736
diff changeset
   190
      
4c78ee183eb6 Notification property has_been_read changed into unread
Lennard de Rijk <ljvderijk@gmail.com>
parents: 736
diff changeset
   191
      # 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
   192
      if entity.scope.key() == user.key():
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   193
        # mark the entity as read
737
4c78ee183eb6 Notification property has_been_read changed into unread
Lennard de Rijk <ljvderijk@gmail.com>
parents: 736
diff changeset
   194
        self._logic.updateModelProperties(entity, {'unread' : False} )
732
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   195
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   196
    context['entity_type_url'] = self._params['url_name']
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   197
    context['entity_suffix'] = self._logic.getKeySuffix(entity)
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   198
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   199
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   200
view = View()
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   201
create = view.create
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   202
edit = view.edit
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   203
delete = view.delete
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   204
list = view.list
0a8e60228311 Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents: 727
diff changeset
   205
public = view.public