author | Lennard de Rijk <ljvderijk@gmail.com> |
Thu, 29 Jan 2009 15:38:41 +0000 | |
changeset 1059 | 17221b578fe7 |
parent 1049 | cc6aedbde28d |
child 1060 | eb6231138307 |
permissions | -rw-r--r-- |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
1 |
#!/usr/bin/python2.5 |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
2 |
# |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
3 |
# Copyright 2008 the Melange authors. |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
4 |
# |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
5 |
# Licensed under the Apache License, Version 2.0 (the "License"); |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
6 |
# you may not use this file except in compliance with the License. |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
7 |
# You may obtain a copy of the License at |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
8 |
# |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
9 |
# http://www.apache.org/licenses/LICENSE-2.0 |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
10 |
# |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
11 |
# Unless required by applicable law or agreed to in writing, software |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
12 |
# distributed under the License is distributed on an "AS IS" BASIS, |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
13 |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
14 |
# See the License for the specific language governing permissions and |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
15 |
# limitations under the License. |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
16 |
|
658
9964b1571ef8
Factor out the Group part of Sponsor
Sverre Rabbelier <srabbelier@gmail.com>
parents:
656
diff
changeset
|
17 |
"""Views for Groups. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
18 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
19 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
20 |
__authors__ = [ |
429
e50e18936f06
Fixed typo in e-mail address
Sverre Rabbelier <srabbelier@gmail.com>
parents:
409
diff
changeset
|
21 |
'"Sverre Rabbelier" <sverre@rabbelier.nl>', |
989
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
22 |
'"Lennard de Rijk" <ljvderijk@gmail.com>', |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
23 |
] |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
24 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
25 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
26 |
from google.appengine.api import users |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
27 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
28 |
from django import forms |
989
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
29 |
from django.utils.translation import ugettext |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
30 |
|
387
c55195361cb6
Addressed comments by Todd on r822
Sverre Rabbelier <srabbelier@gmail.com>
parents:
363
diff
changeset
|
31 |
from soc.logic import dicts |
662
0e89b027b140
Make use of the new generic key_name by lookup up scope_path
Sverre Rabbelier <srabbelier@gmail.com>
parents:
658
diff
changeset
|
32 |
from soc.logic.models import user as user_logic |
989
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
33 |
from soc.views.helper import decorators |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
34 |
from soc.views.helper import lists as list_helper |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
35 |
from soc.views.helper import redirects |
755
1ed041c0cdc6
Remove unused imports and variables in different soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
681
diff
changeset
|
36 |
from soc.views.helper import widgets |
1002
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
37 |
from soc.views.models import presence |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
38 |
from soc.views.models import document as document_view |
989
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
39 |
from soc.views.models.request import view as request_view |
1002
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
40 |
from soc.views.sitemap import sidebar |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
41 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
42 |
|
1002
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
43 |
class View(presence.View): |
658
9964b1571ef8
Factor out the Group part of Sponsor
Sverre Rabbelier <srabbelier@gmail.com>
parents:
656
diff
changeset
|
44 |
"""View methods for the Group model. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
45 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
46 |
|
989
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
47 |
# TODO(ljvderijk) add sidebar entry for listRequests to each group |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
48 |
|
656
a76f1b443ea4
Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
654
diff
changeset
|
49 |
def __init__(self, params=None): |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
50 |
"""Defines the fields and methods required for the base View class |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
51 |
to provide the user with list, public, create, edit and delete views. |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
52 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
53 |
Params: |
656
a76f1b443ea4
Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
654
diff
changeset
|
54 |
params: a dict with params for this View |
658
9964b1571ef8
Factor out the Group part of Sponsor
Sverre Rabbelier <srabbelier@gmail.com>
parents:
656
diff
changeset
|
55 |
""" |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
56 |
|
656
a76f1b443ea4
Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
654
diff
changeset
|
57 |
new_params = {} |
606 | 58 |
|
1049
cc6aedbde28d
Fixed the edit site view having a delete button
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1030
diff
changeset
|
59 |
new_params['extra_dynaexclude'] = ['founder','home', 'tos', |
cc6aedbde28d
Fixed the edit site view having a delete button
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1030
diff
changeset
|
60 |
'member_template'] |
668
77f9a6ea6e67
Some style and typo fixes in different modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
662
diff
changeset
|
61 |
new_params['edit_extra_dynafields'] = { |
755
1ed041c0cdc6
Remove unused imports and variables in different soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
681
diff
changeset
|
62 |
'founded_by': forms.CharField(widget=widgets.ReadOnlyInput(), |
606 | 63 |
required=False), |
64 |
} |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
65 |
|
989
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
66 |
#set the extra_django_patterns and include the one from params |
1049
cc6aedbde28d
Fixed the edit site view having a delete button
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1030
diff
changeset
|
67 |
patterns = params.get('extra_django_patterns', []) |
989
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
68 |
|
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
69 |
patterns += [ |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
70 |
(r'^%(url_name)s/(?P<access_type>list_requests)/%(key_fields)s$', |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
71 |
'soc.views.models.%(module_name)s.list_requests', |
998
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
72 |
'List of requests for %(name)s'), |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
73 |
(r'^%(url_name)s/(?P<access_type>list_roles)/%(key_fields)s$', |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
74 |
'soc.views.models.%(module_name)s.list_roles', |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
75 |
'List of roles for %(name)s')] |
989
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
76 |
|
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
77 |
new_params['extra_django_patterns'] = patterns |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
78 |
|
502
e1e24c0a4e82
Add new parameters to views: url_name which is name used in urls (instead of using lower entity names) and module_name which is used for constructing django urls. Append changes to all affected files. Fix some title names. Change urls that included underscores like "site_settings" into urls with slash "site/settings". Plus some other minor fixes.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
499
diff
changeset
|
79 |
# TODO(tlarsen): Add support for Django style template lookup |
656
a76f1b443ea4
Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
654
diff
changeset
|
80 |
new_params['public_template'] = 'soc/group/public.html' |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
81 |
|
656
a76f1b443ea4
Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
654
diff
changeset
|
82 |
new_params['list_row'] = 'soc/group/list/row.html' |
a76f1b443ea4
Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
654
diff
changeset
|
83 |
new_params['list_heading'] = 'soc/group/list/heading.html' |
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
84 |
|
998
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
85 |
new_params['role_views'] = {} |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
86 |
|
656
a76f1b443ea4
Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
654
diff
changeset
|
87 |
params = dicts.merge(params, new_params) |
a76f1b443ea4
Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
654
diff
changeset
|
88 |
|
a76f1b443ea4
Cleanups in the views module
Sverre Rabbelier <srabbelier@gmail.com>
parents:
654
diff
changeset
|
89 |
super(View, self).__init__(params=params) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
90 |
|
583
12960609a69c
Fills in the Founded By box in edit sponsor with the user's public name
Lennard de Rijk <ljvderijk@gmail.com>
parents:
569
diff
changeset
|
91 |
def _editGet(self, request, entity, form): |
12960609a69c
Fills in the Founded By box in edit sponsor with the user's public name
Lennard de Rijk <ljvderijk@gmail.com>
parents:
569
diff
changeset
|
92 |
"""See base.View._editGet(). |
12960609a69c
Fills in the Founded By box in edit sponsor with the user's public name
Lennard de Rijk <ljvderijk@gmail.com>
parents:
569
diff
changeset
|
93 |
""" |
658
9964b1571ef8
Factor out the Group part of Sponsor
Sverre Rabbelier <srabbelier@gmail.com>
parents:
656
diff
changeset
|
94 |
|
583
12960609a69c
Fills in the Founded By box in edit sponsor with the user's public name
Lennard de Rijk <ljvderijk@gmail.com>
parents:
569
diff
changeset
|
95 |
# fill in the founded_by with data from the entity |
12960609a69c
Fills in the Founded By box in edit sponsor with the user's public name
Lennard de Rijk <ljvderijk@gmail.com>
parents:
569
diff
changeset
|
96 |
form.fields['founded_by'].initial = entity.founder.name |
681
48983ecf4665
Cleanups in group and program
Sverre Rabbelier <srabbelier@gmail.com>
parents:
668
diff
changeset
|
97 |
super(View, self)._editGet(request, entity, form) |
583
12960609a69c
Fills in the Founded By box in edit sponsor with the user's public name
Lennard de Rijk <ljvderijk@gmail.com>
parents:
569
diff
changeset
|
98 |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
99 |
def _editPost(self, request, entity, fields): |
402
021e86368600
Incorperated suggestions by Todd
Sverre Rabbelier <srabbelier@gmail.com>
parents:
399
diff
changeset
|
100 |
"""See base.View._editPost(). |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
101 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
102 |
|
583
12960609a69c
Fills in the Founded By box in edit sponsor with the user's public name
Lennard de Rijk <ljvderijk@gmail.com>
parents:
569
diff
changeset
|
103 |
if not entity: |
12960609a69c
Fills in the Founded By box in edit sponsor with the user's public name
Lennard de Rijk <ljvderijk@gmail.com>
parents:
569
diff
changeset
|
104 |
# only if we are creating a new entity we should fill in founder |
662
0e89b027b140
Make use of the new generic key_name by lookup up scope_path
Sverre Rabbelier <srabbelier@gmail.com>
parents:
658
diff
changeset
|
105 |
account = users.get_current_user() |
0e89b027b140
Make use of the new generic key_name by lookup up scope_path
Sverre Rabbelier <srabbelier@gmail.com>
parents:
658
diff
changeset
|
106 |
user = user_logic.logic.getForFields({'account': account}, unique=True) |
583
12960609a69c
Fills in the Founded By box in edit sponsor with the user's public name
Lennard de Rijk <ljvderijk@gmail.com>
parents:
569
diff
changeset
|
107 |
fields['founder'] = user |
681
48983ecf4665
Cleanups in group and program
Sverre Rabbelier <srabbelier@gmail.com>
parents:
668
diff
changeset
|
108 |
|
48983ecf4665
Cleanups in group and program
Sverre Rabbelier <srabbelier@gmail.com>
parents:
668
diff
changeset
|
109 |
super(View, self)._editPost(request, entity, fields) |
858
e79e7a22326f
Add an export() view, and implement it as text/text for Document.
Todd Larsen <tlarsen@google.com>
parents:
809
diff
changeset
|
110 |
|
989
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
111 |
@decorators.merge_params |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
112 |
@decorators.check_access |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
113 |
def listRequests(self, request, access_type, |
1030
a0081c626acb
Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1024
diff
changeset
|
114 |
page_name=None, params=None, **kwargs): |
989
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
115 |
"""Gives an overview of all the requests for a specific group. |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
116 |
|
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
117 |
Args: |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
118 |
request: the standard Django HTTP request object |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
119 |
access_type : the name of the access type which should be checked |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
120 |
page_name: the page name displayed in templates as page and header title |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
121 |
params: a dict with params for this View |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
122 |
kwargs: the Key Fields for the specified entity |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
123 |
""" |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
124 |
|
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
125 |
# set the pagename to include the link_id |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
126 |
page_name = '%s %s' %(page_name, kwargs['link_id']) |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
127 |
|
994
f05c02ba40fc
listRequests now only shows the requests that concerns the given group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
993
diff
changeset
|
128 |
# get the group from the request |
f05c02ba40fc
listRequests now only shows the requests that concerns the given group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
993
diff
changeset
|
129 |
group_logic = params['logic'] |
f05c02ba40fc
listRequests now only shows the requests that concerns the given group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
993
diff
changeset
|
130 |
|
f05c02ba40fc
listRequests now only shows the requests that concerns the given group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
993
diff
changeset
|
131 |
group_entity = group_logic.getFromFields(**kwargs) |
f05c02ba40fc
listRequests now only shows the requests that concerns the given group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
993
diff
changeset
|
132 |
|
998
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
133 |
role_names = params['role_views'].keys() |
994
f05c02ba40fc
listRequests now only shows the requests that concerns the given group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
993
diff
changeset
|
134 |
|
989
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
135 |
# list all incoming requests |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
136 |
filter = { |
1030
a0081c626acb
Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1024
diff
changeset
|
137 |
'scope': group_entity, |
989
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
138 |
'role': role_names, |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
139 |
'state': 'new' |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
140 |
} |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
141 |
|
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
142 |
# create the list parameters |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
143 |
inc_req_params = request_view.getParams() |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
144 |
|
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
145 |
# define the list redirect action to the request processing page |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
146 |
inc_req_params['list_action'] = (redirects.getProcessRequestRedirect, None) |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
147 |
inc_req_params['list_description'] = ugettext( |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
148 |
"An overview of the %(name)s's incoming requests." % params) |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
149 |
|
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
150 |
inc_req_content = list_helper.getListContent( |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
151 |
request, inc_req_params, filter, 0) |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
152 |
|
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
153 |
# list all outstanding invites |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
154 |
filter = { |
1030
a0081c626acb
Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1024
diff
changeset
|
155 |
'scope': group_entity, |
989
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
156 |
'role': role_names, |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
157 |
'state': 'group_accepted' |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
158 |
} |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
159 |
|
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
160 |
# create the list parameters |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
161 |
out_inv_params = request_view.getParams() |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
162 |
|
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
163 |
# define the list redirect action to the request processing page |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
164 |
out_inv_params['list_action'] = (redirects.getProcessRequestRedirect, None) |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
165 |
out_inv_params['list_description'] = ugettext( |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
166 |
"An overview of the %(name)s's outstanding invites." % params) |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
167 |
|
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
168 |
out_inv_content = list_helper.getListContent( |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
169 |
request, out_inv_params, filter, 1) |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
170 |
|
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
171 |
# list all ignored requests |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
172 |
filter = { |
1030
a0081c626acb
Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1024
diff
changeset
|
173 |
'scope': group_entity, |
989
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
174 |
'role': role_names, |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
175 |
'state': 'ignored' |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
176 |
} |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
177 |
|
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
178 |
# create the list parameters |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
179 |
ignored_params = request_view.getParams() |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
180 |
|
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
181 |
# define the list redirect action to the request processing page |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
182 |
ignored_params['list_action'] = (redirects.getProcessRequestRedirect, None) |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
183 |
ignored_params['list_description'] = ugettext( |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
184 |
"An overview of the %(name)s's ignored requests." % params) |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
185 |
|
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
186 |
ignored_content = list_helper.getListContent( |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
187 |
request, ignored_params, filter, 2) |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
188 |
|
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
189 |
contents = [inc_req_content, out_inv_content, ignored_content] |
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
190 |
|
f52654ea6350
Moved listRequests from club to group view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
858
diff
changeset
|
191 |
return self._list(request, params, contents, page_name) |
998
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
192 |
|
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
193 |
|
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
194 |
@decorators.merge_params |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
195 |
@decorators.check_access |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
196 |
def listRoles(self, request, access_type, |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
197 |
page_name=None, params=None, **kwargs): |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
198 |
"""Gives an overview of all the roles in a specific group. |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
199 |
|
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
200 |
Args: |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
201 |
request: the standard Django HTTP request object |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
202 |
access_type : the name of the access type which should be checked |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
203 |
page_name: the page name displayed in templates as page and header title |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
204 |
params: a dict with params for this View |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
205 |
kwargs: the Key Fields for the specified entity |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
206 |
""" |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
207 |
|
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
208 |
# set the pagename to include the link_id |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
209 |
page_name = '%s %s' %(page_name, kwargs['link_id']) |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
210 |
|
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
211 |
# get the group from the request |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
212 |
group_logic = params['logic'] |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
213 |
|
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
214 |
group_entity = group_logic.getFromFields(**kwargs) |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
215 |
|
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
216 |
# create the filter |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
217 |
filter = { |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
218 |
'scope' : group_entity, |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
219 |
'state': 'active' |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
220 |
} |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
221 |
|
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
222 |
role_views = params['role_views'] |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
223 |
contents = [] |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
224 |
index = 0 |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
225 |
|
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
226 |
# for each role we create a separate list |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
227 |
for role_name in role_views.keys(): |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
228 |
# create the list parameters |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
229 |
list_params = role_views[role_name].getParams().copy() |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
230 |
|
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
231 |
# TODO(ljvderijk) define the list redirect action to the managing page |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
232 |
list_params['list_action'] = (redirects.getEditRedirect, list_params) |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
233 |
list_params['list_description'] = ugettext( |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
234 |
"An overview of the %s for this %s." % ( |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
235 |
list_params['name_plural'], params['name'])) |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
236 |
|
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
237 |
new_list_content = list_helper.getListContent( |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
238 |
request, list_params, filter, index) |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
239 |
|
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
240 |
contents += [new_list_content] |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
241 |
|
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
242 |
index += 1 |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
243 |
|
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
244 |
# call the _list method from base.View to show the list |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
245 |
return self._list(request, params, contents, page_name) |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
246 |
|
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
247 |
|
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
248 |
def registerRole(self, role_name, role_view): |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
249 |
"""Adds a role to the role_views param. |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
250 |
|
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
251 |
Args: |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
252 |
role_name: The name of the role that needs to be added |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
253 |
role_view: The view that needs to be added to role_views. |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
254 |
""" |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
255 |
|
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
256 |
role_views = self._params['role_views'] |
125257161908
Implemented the listing of all the roles in for a specific group.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
994
diff
changeset
|
257 |
role_views[role_name] = role_view |
1002
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
258 |
|
1017
6ad4fdb48840
Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1003
diff
changeset
|
259 |
def getExtraMenus(self, id, user, params=None): |
1002
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
260 |
"""Returns the extra menu's for this view. |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
261 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
262 |
A menu item is generated for each group that the user has an active |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
263 |
role for. The public page for each group is added as menu item, |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
264 |
as well as all public documents for that group. |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
265 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
266 |
Args: |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
267 |
params: a dict with params for this View. |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
268 |
""" |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
269 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
270 |
params = dicts.merge(params, self._params) |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
271 |
logic = params['logic'] |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
272 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
273 |
# set fields to match every active role this user has |
1017
6ad4fdb48840
Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1003
diff
changeset
|
274 |
fields = {'user': user, |
1030
a0081c626acb
Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1024
diff
changeset
|
275 |
'state': 'active'} |
1002
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
276 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
277 |
# get the role views and start filling group_entities |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
278 |
role_views = self._params['role_views'] |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
279 |
role_descriptions = {} |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
280 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
281 |
for role_name in role_views.keys(): |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
282 |
# get the view for a specific role |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
283 |
role_view = role_views[role_name] |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
284 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
285 |
# get the params for this view |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
286 |
role_view_params = role_view.getParams() |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
287 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
288 |
# get the logic for this view |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
289 |
role_logic = role_view_params['logic'] |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
290 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
291 |
# get all the active roles that this user has |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
292 |
roles = role_logic.getForFields(fields) |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
293 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
294 |
# for each role that we find |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
295 |
for role in roles: |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
296 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
297 |
# get the Key Name of the group |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
298 |
group_key_name = role.scope.key().name() |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
299 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
300 |
# try to get an existing description |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
301 |
existing_role_descriptions = role_descriptions.get(group_key_name) |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
302 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
303 |
if existing_role_descriptions: |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
304 |
# add this description to existing roles |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
305 |
existing_roles = existing_role_descriptions['roles'] |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
306 |
existing_roles[role_name] = role |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
307 |
else: |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
308 |
# create a description of this role |
1030
a0081c626acb
Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1024
diff
changeset
|
309 |
role_description = {'roles': {role_name: role}, |
a0081c626acb
Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1024
diff
changeset
|
310 |
'group': role.scope} |
1002
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
311 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
312 |
# add the new entry to our dictionary |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
313 |
role_descriptions[group_key_name] = role_description |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
314 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
315 |
# get the document view params to add the group's documents to the menu |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
316 |
doc_params = document_view.view.getParams() |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
317 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
318 |
menus = [] |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
319 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
320 |
# for each role description in our collection |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
321 |
for role_description in role_descriptions.itervalues(): |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
322 |
#start with an empty menu |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
323 |
menu = {} |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
324 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
325 |
# get the group for this role description |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
326 |
group_entity = role_description['group'] |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
327 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
328 |
# set the menu header name |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
329 |
menu['heading'] = '%s %s' %(params['name'], |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
330 |
group_entity.short_name) |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
331 |
|
1003
b13da1ddcd50
Added sidebar entries for club entities.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1002
diff
changeset
|
332 |
# get the documents for this group entity |
1002
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
333 |
doc_items = document_view.view.getMenusForScope(group_entity, params) |
1023
d849b47645f9
Bugfixes after recent refactoring
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1017
diff
changeset
|
334 |
doc_items = sidebar.getSidebarMenu(id, user, doc_items, |
d849b47645f9
Bugfixes after recent refactoring
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1017
diff
changeset
|
335 |
params=doc_params) |
1002
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
336 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
337 |
# get the group specific items |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
338 |
group_items = self._getExtraMenuItems(role_description, params) |
1023
d849b47645f9
Bugfixes after recent refactoring
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1017
diff
changeset
|
339 |
group_items = sidebar.getSidebarMenu(id, user, group_items, |
d849b47645f9
Bugfixes after recent refactoring
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1017
diff
changeset
|
340 |
params=self._params) |
1002
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
341 |
|
1003
b13da1ddcd50
Added sidebar entries for club entities.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1002
diff
changeset
|
342 |
# add the items together |
1002
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
343 |
menu['items'] = doc_items + group_items |
1024
2a0ae6483825
Group dynamically generated menu items
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1023
diff
changeset
|
344 |
menu['group'] = 'Clubs' |
1002
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
345 |
|
1003
b13da1ddcd50
Added sidebar entries for club entities.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
1002
diff
changeset
|
346 |
# append this as a new menu |
1002
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
347 |
menus.append(menu) |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
348 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
349 |
return menus |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
350 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
351 |
def _getExtraMenuItems(self, role_description, params=None): |
1030
a0081c626acb
Style fixes in soc.views.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
1024
diff
changeset
|
352 |
"""Used to implement group instance specific needs for the side menu. |
1002
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
353 |
|
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
354 |
Args: |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
355 |
role_description : dict containing all the roles which is a dict of |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
356 |
name and the role entity to which it belongs. Also |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
357 |
group contains the group entity to which these roles |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
358 |
belong. |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
359 |
params: a dict with params for this View. |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
360 |
""" |
11a2aff6c3ad
Added sidebar support for group instances.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
998
diff
changeset
|
361 |
return [] |