author | Lennard de Rijk <ljvderijk@gmail.com> |
Thu, 18 Dec 2008 07:02:48 +0000 | |
changeset 760 | 48d38f8a50ab |
parent 747 | ad62f4c3245e |
child 762 | 4e2623e68a0e |
permissions | -rw-r--r-- |
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] |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
97 |
rights['show'] = [access.checkIsMyNotification] |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
98 |
rights['delete'] = [access.checkIsDeveloper] |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
99 |
rights['list'] = [access.checkIsUser] |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
100 |
# 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
|
101 |
rights['create'] = [access.checkIsDeveloper] |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
102 |
|
734
1ebd40380aa5
Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents:
733
diff
changeset
|
103 |
new_params = {} |
1ebd40380aa5
Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents:
733
diff
changeset
|
104 |
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
|
105 |
new_params['rights'] = rights |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
106 |
|
734
1ebd40380aa5
Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents:
733
diff
changeset
|
107 |
new_params['name'] = "Notification" |
1ebd40380aa5
Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents:
733
diff
changeset
|
108 |
new_params['name_short'] = "Notification" |
1ebd40380aa5
Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents:
733
diff
changeset
|
109 |
new_params['name_plural'] = "Notifications" |
1ebd40380aa5
Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents:
733
diff
changeset
|
110 |
new_params['url_name'] = "notification" |
1ebd40380aa5
Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents:
733
diff
changeset
|
111 |
new_params['module_name'] = "notification" |
1ebd40380aa5
Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents:
733
diff
changeset
|
112 |
|
1ebd40380aa5
Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents:
733
diff
changeset
|
113 |
new_params['create_form'] = CreateForm |
760
48d38f8a50ab
Overwrite default patterns in views/models/notification.py to disallow certain URL's.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
747
diff
changeset
|
114 |
|
48d38f8a50ab
Overwrite default patterns in views/models/notification.py to disallow certain URL's.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
747
diff
changeset
|
115 |
new_params['django_patterns_defaults'] = [ |
48d38f8a50ab
Overwrite default patterns in views/models/notification.py to disallow certain URL's.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
747
diff
changeset
|
116 |
(r'^%(url_name)s/(?P<access_type>show)/%(key_fields)s$', |
48d38f8a50ab
Overwrite default patterns in views/models/notification.py to disallow certain URL's.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
747
diff
changeset
|
117 |
'soc.views.models.%(module_name)s.public', 'Show %(name_short)s'), |
48d38f8a50ab
Overwrite default patterns in views/models/notification.py to disallow certain URL's.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
747
diff
changeset
|
118 |
(r'^%(url_name)s/(?P<access_type>create)$', |
48d38f8a50ab
Overwrite default patterns in views/models/notification.py to disallow certain URL's.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
747
diff
changeset
|
119 |
'soc.views.models.%(module_name)s.create', 'Create %(name_short)s'), |
48d38f8a50ab
Overwrite default patterns in views/models/notification.py to disallow certain URL's.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
747
diff
changeset
|
120 |
(r'^%(url_name)s/(?P<access_type>create)/%(scope)s$', |
48d38f8a50ab
Overwrite default patterns in views/models/notification.py to disallow certain URL's.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
747
diff
changeset
|
121 |
'soc.views.models.%(module_name)s.create', 'Create %(name_short)s'), |
48d38f8a50ab
Overwrite default patterns in views/models/notification.py to disallow certain URL's.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
747
diff
changeset
|
122 |
(r'^%(url_name)s/(?P<access_type>delete)/%(key_fields)s$', |
48d38f8a50ab
Overwrite default patterns in views/models/notification.py to disallow certain URL's.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
747
diff
changeset
|
123 |
'soc.views.models.%(module_name)s.delete', 'Delete %(name_short)s'), |
48d38f8a50ab
Overwrite default patterns in views/models/notification.py to disallow certain URL's.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
747
diff
changeset
|
124 |
(r'^%(url_name)s/(?P<access_type>list)$', |
48d38f8a50ab
Overwrite default patterns in views/models/notification.py to disallow certain URL's.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
747
diff
changeset
|
125 |
'soc.views.models.%(module_name)s.list', 'List %(name_plural)s'), |
48d38f8a50ab
Overwrite default patterns in views/models/notification.py to disallow certain URL's.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
747
diff
changeset
|
126 |
] |
734
1ebd40380aa5
Make the place of the rights declaration consistent
Sverre Rabbelier <srabbelier@gmail.com>
parents:
733
diff
changeset
|
127 |
|
738
61867ffea8a8
Brown-paper-bag fix in notification.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
737
diff
changeset
|
128 |
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
|
129 |
|
732
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
130 |
params = dicts.merge(params, new_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 |
super(View, self).__init__(params=params) |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
133 |
|
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
134 |
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
|
135 |
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
|
136 |
"""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
|
137 |
|
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
138 |
for parameters see base.list() |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
139 |
""" |
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 |
params = dicts.merge(params, self._params) |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
142 |
|
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
143 |
# get the current user |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
144 |
user_entity = user_logic.logic.getForCurrentAccount() |
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 |
# 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
|
147 |
filter = {'scope': user_entity} |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
148 |
|
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
149 |
# create the list parameters |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
150 |
list_params = params.copy() |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
151 |
|
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
152 |
# 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
|
153 |
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
|
154 |
list_params['list_description'] = ugettext_lazy( |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
155 |
"An overview of your received Notifications.") |
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 |
# 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
|
158 |
|
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
159 |
# 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
|
160 |
# 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
|
161 |
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
|
162 |
page_name, list_params, filter) |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
163 |
|
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
164 |
def _editPost(self, request, entity, fields): |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
165 |
"""See base.View._editPost(). |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
166 |
""" |
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 |
# get the current user |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
169 |
current_user = user_logic.logic.getForCurrentAccount() |
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 |
to_user = user_logic.logic.getForFields( |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
172 |
{'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
|
173 |
|
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
|
174 |
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
|
175 |
fields['scope'] = to_user |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
176 |
fields['from_user'] = current_user |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
177 |
fields['scope_path'] = fields['to_user'] |
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 _editSeed(self, request, seed): |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
180 |
"""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
|
181 |
|
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
182 |
for parameters see base._editSeed() |
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 scope_path is present |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
186 |
if 'scope_path' in seed.keys(): |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
187 |
# 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
|
188 |
seed['to_user'] = seed['scope_path'] |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
189 |
|
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
190 |
def _public(self, request, entity, context): |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
191 |
"""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
|
192 |
|
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
193 |
for parameters see base._public() |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
194 |
""" |
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 |
# 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
|
197 |
# 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
|
198 |
if entity.unread: |
732
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
199 |
# get the current user |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
200 |
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
|
201 |
|
4c78ee183eb6
Notification property has_been_read changed into unread
Lennard de Rijk <ljvderijk@gmail.com>
parents:
736
diff
changeset
|
202 |
# 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
|
203 |
if entity.scope.key() == user.key(): |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
204 |
# 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
|
205 |
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
|
206 |
|
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
207 |
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
|
208 |
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
|
209 |
|
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
210 |
|
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
211 |
view = View() |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
212 |
create = view.create |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
213 |
edit = view.edit |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
214 |
delete = view.delete |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
215 |
list = view.list |
0a8e60228311
Fix whitespace and EOL damage in notifcation.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
727
diff
changeset
|
216 |
public = view.public |