author | Sverre Rabbelier <srabbelier@gmail.com> |
Sat, 29 Nov 2008 17:20:52 +0000 | |
changeset 610 | e0bd276ffd82 |
parent 606 | 65d35584ee31 |
child 611 | 2ec30182e5f1 |
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 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
17 |
"""Helpers functions for displaying views. |
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:
428
diff
changeset
|
21 |
'"Sverre Rabbelier" <sverre@rabbelier.nl>', |
516
ec1dcd70b97e
The list method in models/base.py can now use a filter to make a selection of entities to show.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
514
diff
changeset
|
22 |
'"Lennard de Rijk" <ljvderijk@gmail.com>', |
471
dcb1f7821b39
Remove stop parameter from home_settings and site_settings views. This is something Sverre didn't mean to commit :-) Add missing params description to the models Base class docs.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
459
diff
changeset
|
23 |
'"Pawel Solyga" <pawel.solyga@gmail.com>', |
363
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 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
27 |
from django import http |
606 | 28 |
from django import forms |
494
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
29 |
from django.conf.urls import defaults |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
30 |
from django.utils.translation import ugettext_lazy |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
31 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
32 |
import soc.logic |
539
e30462354e26
Allow for multiple list objects
Sverre Rabbelier <srabbelier@gmail.com>
parents:
537
diff
changeset
|
33 |
import soc.logic.lists |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
34 |
import soc.views.helper.lists |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
35 |
import soc.views.helper.responses |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
36 |
|
606 | 37 |
from soc.logic import cleaning |
387
c55195361cb6
Addressed comments by Todd on r822
Sverre Rabbelier <srabbelier@gmail.com>
parents:
373
diff
changeset
|
38 |
from soc.logic import dicts |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
39 |
from soc.logic import models |
533
ba3309b2fd30
Move LINK_ID and SCOPE_PATH regular expressions to soc/models/linkable.py.
Todd Larsen <tlarsen@google.com>
parents:
528
diff
changeset
|
40 |
from soc.models import linkable |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
41 |
from soc.views import helper |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
42 |
from soc.views import out_of_band |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
43 |
from soc.views.helper import access |
606 | 44 |
from soc.views.helper import dynaform |
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 |
|
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
47 |
class View(object): |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
48 |
"""Views for entity classes. |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
49 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
50 |
The View class functions specific to Entity classes by relying |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
51 |
on the the child-classes to define the following fields: |
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 |
self._logic: the logic singleton for this entity |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
54 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
55 |
|
387
c55195361cb6
Addressed comments by Todd on r822
Sverre Rabbelier <srabbelier@gmail.com>
parents:
373
diff
changeset
|
56 |
DEF_SUBMIT_MSG_PARAM_NAME = 's' |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
57 |
DEF_SUBMIT_MSG_PROFILE_SAVED = 0 |
387
c55195361cb6
Addressed comments by Todd on r822
Sverre Rabbelier <srabbelier@gmail.com>
parents:
373
diff
changeset
|
58 |
|
542
7cc99461b64d
Remove redundant dicts for URL patterns and sidebar menu text, and use the
Todd Larsen <tlarsen@google.com>
parents:
539
diff
changeset
|
59 |
DEF_CREATE_NEW_ENTITY_MSG_FMT = ugettext_lazy( |
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:
500
diff
changeset
|
60 |
' You can create a new %(entity_type)s by visiting' |
387
c55195361cb6
Addressed comments by Todd on r822
Sverre Rabbelier <srabbelier@gmail.com>
parents:
373
diff
changeset
|
61 |
' <a href="%(create)s">Create ' |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
62 |
'a New %(entity_type)s</a> page.') |
387
c55195361cb6
Addressed comments by Todd on r822
Sverre Rabbelier <srabbelier@gmail.com>
parents:
373
diff
changeset
|
63 |
|
507
3603fdafabf7
Fold the _rights dictionary into params
Sverre Rabbelier <srabbelier@gmail.com>
parents:
502
diff
changeset
|
64 |
def __init__(self, params=None): |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
65 |
""" |
373
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
66 |
|
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
67 |
Args: |
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
68 |
params: This dictionary should be filled with the parameters |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
69 |
specific to this entity. See the methods in this class on |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
70 |
the fields it should contain, and how they are used. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
71 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
72 |
|
507
3603fdafabf7
Fold the _rights dictionary into params
Sverre Rabbelier <srabbelier@gmail.com>
parents:
502
diff
changeset
|
73 |
rights = {} |
3603fdafabf7
Fold the _rights dictionary into params
Sverre Rabbelier <srabbelier@gmail.com>
parents:
502
diff
changeset
|
74 |
rights['unspecified'] = [] |
587
7504504209a3
Fixed some access related bugs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
586
diff
changeset
|
75 |
rights['any_access'] = [access.checkIsLoggedIn] |
551
2ee7ad5266a8
Define a default for rights['public'] in views/models/base.py. Alter rights
Todd Larsen <tlarsen@google.com>
parents:
548
diff
changeset
|
76 |
rights['public'] = [access.checkIsUser] |
507
3603fdafabf7
Fold the _rights dictionary into params
Sverre Rabbelier <srabbelier@gmail.com>
parents:
502
diff
changeset
|
77 |
rights['create'] = [access.checkIsDeveloper] |
509
e8acc0a907fb
Adds the rights['edit'] to models/base.py wich was left out in r1049.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
507
diff
changeset
|
78 |
rights['edit'] = [access.checkIsDeveloper] |
507
3603fdafabf7
Fold the _rights dictionary into params
Sverre Rabbelier <srabbelier@gmail.com>
parents:
502
diff
changeset
|
79 |
rights['delete'] = [access.checkIsDeveloper] |
3603fdafabf7
Fold the _rights dictionary into params
Sverre Rabbelier <srabbelier@gmail.com>
parents:
502
diff
changeset
|
80 |
rights['list'] = [access.checkIsDeveloper] |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
81 |
|
587
7504504209a3
Fixed some access related bugs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
586
diff
changeset
|
82 |
if 'rights' in params: |
7504504209a3
Fixed some access related bugs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
586
diff
changeset
|
83 |
rights = dicts.merge(params['rights'], rights) |
7504504209a3
Fixed some access related bugs
Sverre Rabbelier <srabbelier@gmail.com>
parents:
586
diff
changeset
|
84 |
|
492
4abdeedfc08e
Fixed redirection after creation to Just Work
Sverre Rabbelier <srabbelier@gmail.com>
parents:
490
diff
changeset
|
85 |
new_params = {} |
507
3603fdafabf7
Fold the _rights dictionary into params
Sverre Rabbelier <srabbelier@gmail.com>
parents:
502
diff
changeset
|
86 |
new_params['rights'] = rights |
554
68c7a1dd3c52
Renamed templates/soc/entity/list/entity_*.html to *.html
Sverre Rabbelier <srabbelier@gmail.com>
parents:
553
diff
changeset
|
87 |
new_params['create_redirect'] = '/%(url_name)s' % params |
563
4a8565ce48c6
Fixed redirects to work consistently
Sverre Rabbelier <srabbelier@gmail.com>
parents:
560
diff
changeset
|
88 |
new_params['edit_redirect'] = '/%(url_name)s/edit' % params |
554
68c7a1dd3c52
Renamed templates/soc/entity/list/entity_*.html to *.html
Sverre Rabbelier <srabbelier@gmail.com>
parents:
553
diff
changeset
|
89 |
new_params['missing_redirect'] = '/%(url_name)s/create' % params |
68c7a1dd3c52
Renamed templates/soc/entity/list/entity_*.html to *.html
Sverre Rabbelier <srabbelier@gmail.com>
parents:
553
diff
changeset
|
90 |
new_params['delete_redirect'] = '/%(url_name)s/list' % params |
68c7a1dd3c52
Renamed templates/soc/entity/list/entity_*.html to *.html
Sverre Rabbelier <srabbelier@gmail.com>
parents:
553
diff
changeset
|
91 |
new_params['invite_redirect'] = '/request/list' |
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:
500
diff
changeset
|
92 |
|
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
93 |
new_params['sidebar'] = None |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
94 |
new_params['sidebar_defaults'] = [ |
586
a4a36b06a870
Make the sidebar dynamic depending on the user's rights
Sverre Rabbelier <srabbelier@gmail.com>
parents:
576
diff
changeset
|
95 |
('/%s/create', 'New %(name)s', 'create'), |
a4a36b06a870
Make the sidebar dynamic depending on the user's rights
Sverre Rabbelier <srabbelier@gmail.com>
parents:
576
diff
changeset
|
96 |
('/%s/list', 'List %(name_plural)s', 'list'), |
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
97 |
] |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
98 |
new_params['sidebar_additional'] = [] |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
99 |
|
494
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
100 |
new_params['key_fields_prefix'] = [] |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
101 |
|
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
102 |
new_params['django_patterns'] = None |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
103 |
new_params['django_patterns_defaults'] = [ |
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:
500
diff
changeset
|
104 |
(r'^%(url_name)s/show/%(key_fields)s$', |
542
7cc99461b64d
Remove redundant dicts for URL patterns and sidebar menu text, and use the
Todd Larsen <tlarsen@google.com>
parents:
539
diff
changeset
|
105 |
'soc.views.models.%s.public', 'Show %(name_short)s'), |
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:
500
diff
changeset
|
106 |
(r'^%(url_name)s/create$', |
542
7cc99461b64d
Remove redundant dicts for URL patterns and sidebar menu text, and use the
Todd Larsen <tlarsen@google.com>
parents:
539
diff
changeset
|
107 |
'soc.views.models.%s.create', 'Create %(name_short)s'), |
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:
500
diff
changeset
|
108 |
(r'^%(url_name)s/create/%(key_fields)s$', |
542
7cc99461b64d
Remove redundant dicts for URL patterns and sidebar menu text, and use the
Todd Larsen <tlarsen@google.com>
parents:
539
diff
changeset
|
109 |
'soc.views.models.%s.create', 'Create %(name_short)s'), |
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:
500
diff
changeset
|
110 |
(r'^%(url_name)s/delete/%(key_fields)s$', |
542
7cc99461b64d
Remove redundant dicts for URL patterns and sidebar menu text, and use the
Todd Larsen <tlarsen@google.com>
parents:
539
diff
changeset
|
111 |
'soc.views.models.%s.delete', 'Delete %(name_short)s'), |
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:
500
diff
changeset
|
112 |
(r'^%(url_name)s/edit/%(key_fields)s$', |
542
7cc99461b64d
Remove redundant dicts for URL patterns and sidebar menu text, and use the
Todd Larsen <tlarsen@google.com>
parents:
539
diff
changeset
|
113 |
'soc.views.models.%s.edit', 'Edit %(name_short)s'), |
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:
500
diff
changeset
|
114 |
(r'^%(url_name)s/list$', |
494
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
115 |
'soc.views.models.%s.list', 'List %(name_plural)s'), |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
116 |
] |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
117 |
|
554
68c7a1dd3c52
Renamed templates/soc/entity/list/entity_*.html to *.html
Sverre Rabbelier <srabbelier@gmail.com>
parents:
553
diff
changeset
|
118 |
new_params['public_template'] = 'soc/%(module_name)s/public.html' % params |
68c7a1dd3c52
Renamed templates/soc/entity/list/entity_*.html to *.html
Sverre Rabbelier <srabbelier@gmail.com>
parents:
553
diff
changeset
|
119 |
new_params['create_template'] = 'soc/models/edit.html' |
553
c0cc20b4afc9
Make redirect generic using the new Lists object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
552
diff
changeset
|
120 |
new_params['edit_template'] = 'soc/models/edit.html' |
c0cc20b4afc9
Make redirect generic using the new Lists object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
552
diff
changeset
|
121 |
new_params['list_template'] = 'soc/models/list.html' |
c0cc20b4afc9
Make redirect generic using the new Lists object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
552
diff
changeset
|
122 |
new_params['invite_template'] = 'soc/models/invite.html' |
c0cc20b4afc9
Make redirect generic using the new Lists object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
552
diff
changeset
|
123 |
|
573
1b37588c4922
Moved the custom error.html page for Site to it's proper place
Sverre Rabbelier <srabbelier@gmail.com>
parents:
572
diff
changeset
|
124 |
new_params['error_public'] = 'soc/%(module_name)s/error.html' % params |
1b37588c4922
Moved the custom error.html page for Site to it's proper place
Sverre Rabbelier <srabbelier@gmail.com>
parents:
572
diff
changeset
|
125 |
new_params['error_edit'] = 'soc/%(module_name)s/error.html' % params |
1b37588c4922
Moved the custom error.html page for Site to it's proper place
Sverre Rabbelier <srabbelier@gmail.com>
parents:
572
diff
changeset
|
126 |
|
554
68c7a1dd3c52
Renamed templates/soc/entity/list/entity_*.html to *.html
Sverre Rabbelier <srabbelier@gmail.com>
parents:
553
diff
changeset
|
127 |
new_params['list_main'] = 'soc/list/main.html' |
68c7a1dd3c52
Renamed templates/soc/entity/list/entity_*.html to *.html
Sverre Rabbelier <srabbelier@gmail.com>
parents:
553
diff
changeset
|
128 |
new_params['list_pagination'] = 'soc/list/pagination.html' |
68c7a1dd3c52
Renamed templates/soc/entity/list/entity_*.html to *.html
Sverre Rabbelier <srabbelier@gmail.com>
parents:
553
diff
changeset
|
129 |
new_params['list_row'] = 'soc/%(module_name)s/list/row.html' % params |
68c7a1dd3c52
Renamed templates/soc/entity/list/entity_*.html to *.html
Sverre Rabbelier <srabbelier@gmail.com>
parents:
553
diff
changeset
|
130 |
new_params['list_heading'] = 'soc/%(module_name)s/list/heading.html' % params |
68c7a1dd3c52
Renamed templates/soc/entity/list/entity_*.html to *.html
Sverre Rabbelier <srabbelier@gmail.com>
parents:
553
diff
changeset
|
131 |
|
560
a32be584ee04
Requests are almost working now
Sverre Rabbelier <srabbelier@gmail.com>
parents:
555
diff
changeset
|
132 |
new_params['list_action'] = (self.getEditRedirect, None) |
553
c0cc20b4afc9
Make redirect generic using the new Lists object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
552
diff
changeset
|
133 |
new_params['list_params'] = { |
c0cc20b4afc9
Make redirect generic using the new Lists object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
552
diff
changeset
|
134 |
'list_action': 'action', |
c0cc20b4afc9
Make redirect generic using the new Lists object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
552
diff
changeset
|
135 |
'list_description': 'description', |
c0cc20b4afc9
Make redirect generic using the new Lists object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
552
diff
changeset
|
136 |
'list_main': 'main', |
c0cc20b4afc9
Make redirect generic using the new Lists object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
552
diff
changeset
|
137 |
'list_pagination': 'pagination', |
c0cc20b4afc9
Make redirect generic using the new Lists object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
552
diff
changeset
|
138 |
'list_row': 'row', |
c0cc20b4afc9
Make redirect generic using the new Lists object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
552
diff
changeset
|
139 |
'list_heading': 'heading', |
c0cc20b4afc9
Make redirect generic using the new Lists object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
552
diff
changeset
|
140 |
} |
495
87afae6e4c51
Added basic 'invite' functionality
Sverre Rabbelier <srabbelier@gmail.com>
parents:
494
diff
changeset
|
141 |
|
591
530fa94faffe
Lists now use plural_name instead of name in the description.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
587
diff
changeset
|
142 |
description = ugettext_lazy('List of %(name_plural)s in Google Open Source Programs.') |
539
e30462354e26
Allow for multiple list objects
Sverre Rabbelier <srabbelier@gmail.com>
parents:
537
diff
changeset
|
143 |
new_params['list_description'] = description % params |
514
55bd39dab49c
Move saved message to the base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
512
diff
changeset
|
144 |
new_params['save_message'] = [ugettext_lazy('Profile saved.')] |
55bd39dab49c
Move saved message to the base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
512
diff
changeset
|
145 |
new_params['edit_params'] = { |
55bd39dab49c
Move saved message to the base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
512
diff
changeset
|
146 |
self.DEF_SUBMIT_MSG_PARAM_NAME: self.DEF_SUBMIT_MSG_PROFILE_SAVED, |
55bd39dab49c
Move saved message to the base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
512
diff
changeset
|
147 |
} |
55bd39dab49c
Move saved message to the base class
Sverre Rabbelier <srabbelier@gmail.com>
parents:
512
diff
changeset
|
148 |
|
606 | 149 |
new_params['dynabase'] = helper.forms.BaseForm |
150 |
||
151 |
new_params['create_dynainclude'] = [] + params.get('extra_dynainclude', []) |
|
152 |
new_params['create_dynaexclude'] = ['scope', 'scope_path'] + \ |
|
153 |
params.get('extra_dynaexclude', []) |
|
154 |
new_params['create_dynafields'] = { |
|
155 |
'clean_link_id': cleaning.clean_new_link_id(params['logic']), |
|
156 |
'clean_feed_url': cleaning.clean_feed_url, |
|
157 |
} |
|
158 |
||
159 |
dynafields = { |
|
160 |
'clean_link_id': cleaning.clean_link_id, |
|
161 |
'link_id': forms.CharField(widget=helper.widgets.ReadOnlyInput()), |
|
162 |
} |
|
163 |
dynafields.update(params.get('extra_dynafields', {})) |
|
164 |
||
165 |
new_params['edit_dynainclude'] = None |
|
166 |
new_params['edit_dynaexclude'] = None |
|
167 |
new_params['edit_dynafields'] = dynafields |
|
168 |
||
492
4abdeedfc08e
Fixed redirection after creation to Just Work
Sverre Rabbelier <srabbelier@gmail.com>
parents:
490
diff
changeset
|
169 |
self._params = dicts.merge(params, new_params) |
605
4a384d412640
Made _logic a param
Sverre Rabbelier <srabbelier@gmail.com>
parents:
591
diff
changeset
|
170 |
self._logic = self._params['logic'] |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
171 |
|
606 | 172 |
# These need to be constructed seperately, because they require |
173 |
# parameters that can be defined either in params, or new_params. |
|
174 |
if 'create_form' not in self._params: |
|
175 |
self._params['create_form'] = dynaform.newDynaForm( |
|
176 |
dynabase = self._params['dynabase'], |
|
177 |
dynamodel = self._logic.getModel(), |
|
178 |
dynainclude = self._params['create_dynainclude'], |
|
179 |
dynaexclude = self._params['create_dynaexclude'], |
|
180 |
dynafields = self._params['create_dynafields'], |
|
181 |
) |
|
182 |
||
183 |
if 'edit_form' not in self._params: |
|
184 |
self._params['edit_form'] = dynaform.extendDynaForm( |
|
185 |
dynaform = self._params['create_form'], |
|
186 |
dynainclude = self._params['edit_dynainclude'], |
|
187 |
dynaexclude = self._params['edit_dynaexclude'], |
|
188 |
dynafields = self._params['edit_dynafields'], |
|
189 |
) |
|
190 |
||
482
839740b061ad
Factor out direct use of the page object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
471
diff
changeset
|
191 |
def public(self, request, page_name=None, params=None, **kwargs): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
192 |
"""Displays the public page for the entity specified by **kwargs. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
193 |
|
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
194 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
195 |
rights: The rights dictionary is used to check if the user has |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
196 |
the required rights to view the public page for this entity. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
197 |
See checkAccess for more details on how the rights dictionary |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
198 |
is used to check access rights. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
199 |
error_public: The error_public value is used as template when |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
200 |
the key values (as defined by the page's url) do not |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
201 |
correspond to an existing entity. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
202 |
name: The name value is used to set the entity_type in the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
203 |
context so that the template can refer to it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
204 |
public_template: The public_template value is used as template |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
205 |
to display the public page of the found entity. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
206 |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
207 |
Args: |
373
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
208 |
request: the standard Django HTTP request object |
500
44ea4620c5c0
Replace old page parameter doc string description with new one for page_name.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
499
diff
changeset
|
209 |
page_name: the page name displayed in templates as page and header title |
471
dcb1f7821b39
Remove stop parameter from home_settings and site_settings views. This is something Sverre didn't mean to commit :-) Add missing params description to the models Base class docs.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
459
diff
changeset
|
210 |
params: a dict with params for this View |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
211 |
kwargs: the Key Fields for the specified entity |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
212 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
213 |
|
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
214 |
params = dicts.merge(params, self._params) |
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
215 |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
216 |
try: |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
217 |
self.checkAccess('public', request, rights=params['rights']) |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
218 |
except out_of_band.Error, error: |
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
219 |
return error.response(request) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
220 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
221 |
# create default template context for use with any templates |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
222 |
context = helper.responses.getUniversalContext(request) |
482
839740b061ad
Factor out direct use of the page object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
471
diff
changeset
|
223 |
context['page_name'] = page_name |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
224 |
entity = None |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
225 |
|
446
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
226 |
if not all(kwargs.values()): |
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
227 |
#TODO: Change this into a proper redirect |
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
228 |
return http.HttpResponseRedirect('/') |
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
229 |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
230 |
try: |
435
829fe8302a8b
Refactor out the abundance of dictionary (un)packing
Sverre Rabbelier <srabbelier@gmail.com>
parents:
429
diff
changeset
|
231 |
key_fields = self._logic.getKeyFieldsFromDict(kwargs) |
829fe8302a8b
Refactor out the abundance of dictionary (un)packing
Sverre Rabbelier <srabbelier@gmail.com>
parents:
429
diff
changeset
|
232 |
entity = self._logic.getIfFields(key_fields) |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
233 |
except out_of_band.Error, error: |
573
1b37588c4922
Moved the custom error.html page for Site to it's proper place
Sverre Rabbelier <srabbelier@gmail.com>
parents:
572
diff
changeset
|
234 |
return error.response(request, template=params['error_public'], |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
235 |
context=context) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
236 |
|
446
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
237 |
self._public(request, entity, context) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
238 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
239 |
context['entity'] = entity |
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
240 |
context['entity_type'] = params['name'] |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
241 |
|
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
242 |
template = params['public_template'] |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
243 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
244 |
return helper.responses.respond(request, template, context) |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
245 |
|
482
839740b061ad
Factor out direct use of the page object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
471
diff
changeset
|
246 |
def create(self, request, page_name=None, params=None, **kwargs): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
247 |
"""Displays the create page for this entity type. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
248 |
|
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
249 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
250 |
The params dictionary is passed on to edit, see the docstring |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
251 |
for edit on how it uses it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
252 |
|
373
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
253 |
Args: |
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
254 |
request: the standard Django HTTP request object |
500
44ea4620c5c0
Replace old page parameter doc string description with new one for page_name.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
499
diff
changeset
|
255 |
page_name: the page name displayed in templates as page and header title |
471
dcb1f7821b39
Remove stop parameter from home_settings and site_settings views. This is something Sverre didn't mean to commit :-) Add missing params description to the models Base class docs.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
459
diff
changeset
|
256 |
params: a dict with params for this View |
373
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
257 |
kwargs: not used for create() |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
258 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
259 |
|
492
4abdeedfc08e
Fixed redirection after creation to Just Work
Sverre Rabbelier <srabbelier@gmail.com>
parents:
490
diff
changeset
|
260 |
params = dicts.merge(params, self._params) |
4abdeedfc08e
Fixed redirection after creation to Just Work
Sverre Rabbelier <srabbelier@gmail.com>
parents:
490
diff
changeset
|
261 |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
262 |
# Create page is an edit page with no key fields |
490
7cfa2ad62944
Allow pre-seeding a create form
Sverre Rabbelier <srabbelier@gmail.com>
parents:
482
diff
changeset
|
263 |
empty_kwargs = {} |
410
2af7f84f4fc7
Moved all key_name related things to the logic modules
Sverre Rabbelier <srabbelier@gmail.com>
parents:
409
diff
changeset
|
264 |
fields = self._logic.getKeyFieldNames() |
2af7f84f4fc7
Moved all key_name related things to the logic modules
Sverre Rabbelier <srabbelier@gmail.com>
parents:
409
diff
changeset
|
265 |
for field in fields: |
490
7cfa2ad62944
Allow pre-seeding a create form
Sverre Rabbelier <srabbelier@gmail.com>
parents:
482
diff
changeset
|
266 |
empty_kwargs[field] = None |
410
2af7f84f4fc7
Moved all key_name related things to the logic modules
Sverre Rabbelier <srabbelier@gmail.com>
parents:
409
diff
changeset
|
267 |
|
490
7cfa2ad62944
Allow pre-seeding a create form
Sverre Rabbelier <srabbelier@gmail.com>
parents:
482
diff
changeset
|
268 |
if not kwargs: |
537
f2bd9c465a6d
Fix getKeyValues() method footprint mismatches in soc.logic.models.site.Logic
Todd Larsen <tlarsen@google.com>
parents:
533
diff
changeset
|
269 |
return self.edit(request, page_name=page_name, params=params, |
f2bd9c465a6d
Fix getKeyValues() method footprint mismatches in soc.logic.models.site.Logic
Todd Larsen <tlarsen@google.com>
parents:
533
diff
changeset
|
270 |
**empty_kwargs) |
490
7cfa2ad62944
Allow pre-seeding a create form
Sverre Rabbelier <srabbelier@gmail.com>
parents:
482
diff
changeset
|
271 |
else: |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
272 |
return self.edit(request, page_name=page_name, params=params, |
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
273 |
seed=kwargs, **empty_kwargs) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
274 |
|
490
7cfa2ad62944
Allow pre-seeding a create form
Sverre Rabbelier <srabbelier@gmail.com>
parents:
482
diff
changeset
|
275 |
def edit(self, request, page_name=None, params=None, seed=None, **kwargs): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
276 |
"""Displays the edit page for the entity specified by **kwargs. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
277 |
|
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
278 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
279 |
The params dictionary is passed on to either editGet or editPost |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
280 |
depending on the method type of the request. See the docstring |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
281 |
for editGet and editPost on how they use it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
282 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
283 |
rights: The rights dictionary is used to check if the user has |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
284 |
the required rights to edit (or create) a new entity. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
285 |
See checkAccess for more details on how the rights dictionary |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
286 |
is used to check access rights. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
287 |
name: The name value is used to construct the message_fmt of the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
288 |
raised error when there key_values do not define an existing |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
289 |
entity. See DEF_CREATE_NEW_ENTITY_MSG_FMT on how the name |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
290 |
(and the lower() version of it) is used. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
291 |
missing_redirect: The missing_redirect value is also used to |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
292 |
construct the message_fmt mentioned above. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
293 |
error_public: The error_public value is used as the template for |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
294 |
the error response mentioned above. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
295 |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
296 |
Args: |
373
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
297 |
request: the standard Django HTTP request object |
500
44ea4620c5c0
Replace old page parameter doc string description with new one for page_name.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
499
diff
changeset
|
298 |
page_name: the page name displayed in templates as page and header title |
471
dcb1f7821b39
Remove stop parameter from home_settings and site_settings views. This is something Sverre didn't mean to commit :-) Add missing params description to the models Base class docs.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
459
diff
changeset
|
299 |
params: a dict with params for this View |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
300 |
kwargs: The Key Fields for the specified entity |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
301 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
302 |
|
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
303 |
params = dicts.merge(params, self._params) |
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
304 |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
305 |
try: |
507
3603fdafabf7
Fold the _rights dictionary into params
Sverre Rabbelier <srabbelier@gmail.com>
parents:
502
diff
changeset
|
306 |
self.checkAccess('edit', request, rights=params['rights']) |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
307 |
except out_of_band.Error, error: |
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
308 |
return error.response(request) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
309 |
|
373
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
310 |
context = helper.responses.getUniversalContext(request) |
482
839740b061ad
Factor out direct use of the page object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
471
diff
changeset
|
311 |
context['page_name'] = page_name |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
312 |
entity = None |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
313 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
314 |
try: |
439
0658c3c9a9dc
Minor fixes needed for generic key name
Sverre Rabbelier <srabbelier@gmail.com>
parents:
438
diff
changeset
|
315 |
if all(kwargs.values()): |
0658c3c9a9dc
Minor fixes needed for generic key name
Sverre Rabbelier <srabbelier@gmail.com>
parents:
438
diff
changeset
|
316 |
key_fields = self._logic.getKeyFieldsFromDict(kwargs) |
0658c3c9a9dc
Minor fixes needed for generic key name
Sverre Rabbelier <srabbelier@gmail.com>
parents:
438
diff
changeset
|
317 |
entity = self._logic.getIfFields(key_fields) |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
318 |
except out_of_band.Error, error: |
490
7cfa2ad62944
Allow pre-seeding a create form
Sverre Rabbelier <srabbelier@gmail.com>
parents:
482
diff
changeset
|
319 |
if not seed: |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
320 |
error.message_fmt = ( |
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
321 |
error.message_fmt + self.DEF_CREATE_NEW_ENTITY_MSG_FMT % { |
490
7cfa2ad62944
Allow pre-seeding a create form
Sverre Rabbelier <srabbelier@gmail.com>
parents:
482
diff
changeset
|
322 |
'entity_type_lower' : params['name'].lower(), |
7cfa2ad62944
Allow pre-seeding a create form
Sverre Rabbelier <srabbelier@gmail.com>
parents:
482
diff
changeset
|
323 |
'entity_type' : params['name'], |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
324 |
'create' : params['missing_redirect']}) |
573
1b37588c4922
Moved the custom error.html page for Site to it's proper place
Sverre Rabbelier <srabbelier@gmail.com>
parents:
572
diff
changeset
|
325 |
return error.response(request, template=params['error_public'], |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
326 |
context=context) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
327 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
328 |
if request.method == 'POST': |
490
7cfa2ad62944
Allow pre-seeding a create form
Sverre Rabbelier <srabbelier@gmail.com>
parents:
482
diff
changeset
|
329 |
return self.editPost(request, entity, context, params) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
330 |
else: |
490
7cfa2ad62944
Allow pre-seeding a create form
Sverre Rabbelier <srabbelier@gmail.com>
parents:
482
diff
changeset
|
331 |
return self.editGet(request, entity, context, seed, params) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
332 |
|
490
7cfa2ad62944
Allow pre-seeding a create form
Sverre Rabbelier <srabbelier@gmail.com>
parents:
482
diff
changeset
|
333 |
def editPost(self, request, entity, context, params): |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
334 |
"""Processes POST requests for the specified entity |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
335 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
336 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
337 |
The params dictionary is passed to _constructResponse when the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
338 |
form is not valid (see edit_form and create_form below). See |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
339 |
the docstring of _constructResponse on how it uses it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
340 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
341 |
edit_form: The edit_form value is used as form when there is an |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
342 |
existing entity. It is provided with with the request.POST |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
343 |
dictionary on construction. The collectCleanedFields method |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
344 |
is called with the newly constructed form. If the form is |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
345 |
not valid, it is passed as argument to _constructResponse. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
346 |
create_form: The create_form value is used in a similar way to |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
347 |
edit_form, only it is used when there is no existing entity. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
348 |
edit_redirect: The edit_redirect value is used as the first part |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
349 |
of the url if the form was valid. The last part of the url is |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
350 |
created using the getKeySuffix method of the _logic object. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
351 |
edit_params: The edit_params dictionary is used as argument to |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
352 |
redirectToChangedSuffix, it will be appended to the url in the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
353 |
standard ?key=value format. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
354 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
355 |
Args: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
356 |
request: a django request object |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
357 |
entity: the entity that will be modified or created, may be None |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
358 |
context: the context dictionary that will be provided to Django |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
359 |
params: a dict with params for this View |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
360 |
""" |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
361 |
|
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
362 |
params = dicts.merge(params, self._params) |
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
363 |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
364 |
if entity: |
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
365 |
form = params['edit_form'](request.POST) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
366 |
else: |
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
367 |
form = params['create_form'](request.POST) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
368 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
369 |
if not form.is_valid(): |
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
370 |
return self._constructResponse(request, entity, context, form, params) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
371 |
|
459
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
458
diff
changeset
|
372 |
key_name, fields = self.collectCleanedFields(form) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
373 |
|
563
4a8565ce48c6
Fixed redirects to work consistently
Sverre Rabbelier <srabbelier@gmail.com>
parents:
560
diff
changeset
|
374 |
request.path = params['edit_redirect'] |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
375 |
self._editPost(request, entity, fields) |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
376 |
|
459
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
458
diff
changeset
|
377 |
if not key_name: |
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
458
diff
changeset
|
378 |
key_fields = self._logic.getKeyFieldsFromDict(fields) |
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
458
diff
changeset
|
379 |
key_name = self._logic.getKeyNameForFields(key_fields) |
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
458
diff
changeset
|
380 |
|
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
458
diff
changeset
|
381 |
entity = self._logic.updateOrCreateFromKeyName(fields, key_name) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
382 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
383 |
if not entity: |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
384 |
return http.HttpResponseRedirect('/') |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
385 |
|
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
386 |
page_params = params['edit_params'] |
563
4a8565ce48c6
Fixed redirects to work consistently
Sverre Rabbelier <srabbelier@gmail.com>
parents:
560
diff
changeset
|
387 |
new_suffix = self._logic.getKeySuffix(entity) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
388 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
389 |
# redirect to (possibly new) location of the entity |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
390 |
# (causes 'Profile saved' message to be displayed) |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
391 |
return helper.responses.redirectToChangedSuffix( |
563
4a8565ce48c6
Fixed redirects to work consistently
Sverre Rabbelier <srabbelier@gmail.com>
parents:
560
diff
changeset
|
392 |
request, None, new_suffix, |
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
393 |
params=page_params) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
394 |
|
490
7cfa2ad62944
Allow pre-seeding a create form
Sverre Rabbelier <srabbelier@gmail.com>
parents:
482
diff
changeset
|
395 |
def editGet(self, request, entity, context, seed, params): |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
396 |
"""Processes GET requests for the specified entity |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
397 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
398 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
399 |
The params dictionary is passed to _constructResponse, see the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
400 |
docstring of _constructResponse on how it uses it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
401 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
402 |
save_message: The save_message list is used as argument to |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
403 |
getSingleIndexedParamValue when an existing entity was saved. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
404 |
edit_form: The edit_form is used as form if there is an existing |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
405 |
entity. The existing entity is passed as instance to it on |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
406 |
construction. If key_name is part of it's fields it will be |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
407 |
set to the entity's key().name() value. It is also passed as |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
408 |
argument to the _editGet method. See the docstring for |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
409 |
_editGet on how it uses it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
410 |
create_form: The create_form is used as form if there was no |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
411 |
existing entity. If the seed argument is present, it is passed |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
412 |
as the 'initial' argument on construction. Otherwise, it is |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
413 |
called with no arguments. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
414 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
415 |
Args: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
416 |
request: the django request object |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
417 |
entity: the entity that will be edited, may be None |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
418 |
context: the context dictionary that will be provided to django |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
419 |
seed: if no entity is provided, the initial values for the new entity |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
420 |
params: a dict with paras for this View |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
421 |
""" |
403
d3e545a8bd26
Some more improvements to the generic view code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
402
diff
changeset
|
422 |
|
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
423 |
params = dicts.merge(params, self._params) |
410
2af7f84f4fc7
Moved all key_name related things to the logic modules
Sverre Rabbelier <srabbelier@gmail.com>
parents:
409
diff
changeset
|
424 |
suffix = self._logic.getKeySuffix(entity) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
425 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
426 |
# Remove the params from the request, this is relevant only if |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
427 |
# someone bookmarked a POST page. |
387
c55195361cb6
Addressed comments by Todd on r822
Sverre Rabbelier <srabbelier@gmail.com>
parents:
373
diff
changeset
|
428 |
is_self_referrer = helper.requests.isReferrerSelf(request, suffix=suffix) |
402
021e86368600
Incorperated suggestions by Todd
Sverre Rabbelier <srabbelier@gmail.com>
parents:
399
diff
changeset
|
429 |
if request.GET.get(self.DEF_SUBMIT_MSG_PARAM_NAME): |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
430 |
if (not entity) or (not is_self_referrer): |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
431 |
return http.HttpResponseRedirect(request.path) |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
432 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
433 |
if entity: |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
434 |
# Note: no message will be displayed if parameter is not present |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
435 |
context['notice'] = helper.requests.getSingleIndexedParamValue( |
402
021e86368600
Incorperated suggestions by Todd
Sverre Rabbelier <srabbelier@gmail.com>
parents:
399
diff
changeset
|
436 |
request, self.DEF_SUBMIT_MSG_PARAM_NAME, |
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
437 |
values=params['save_message']) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
438 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
439 |
# populate form with the existing entity |
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
440 |
form = params['edit_form'](instance=entity) |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
441 |
|
459
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
458
diff
changeset
|
442 |
if 'key_name' in form.fields: |
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
458
diff
changeset
|
443 |
form.fields['key_name'].initial = entity.key().name() |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
444 |
|
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
445 |
self._editGet(request, entity, form) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
446 |
else: |
490
7cfa2ad62944
Allow pre-seeding a create form
Sverre Rabbelier <srabbelier@gmail.com>
parents:
482
diff
changeset
|
447 |
if seed: |
495
87afae6e4c51
Added basic 'invite' functionality
Sverre Rabbelier <srabbelier@gmail.com>
parents:
494
diff
changeset
|
448 |
self._editSeed(request, seed) |
490
7cfa2ad62944
Allow pre-seeding a create form
Sverre Rabbelier <srabbelier@gmail.com>
parents:
482
diff
changeset
|
449 |
form = params['create_form'](initial=seed) |
7cfa2ad62944
Allow pre-seeding a create form
Sverre Rabbelier <srabbelier@gmail.com>
parents:
482
diff
changeset
|
450 |
else: |
7cfa2ad62944
Allow pre-seeding a create form
Sverre Rabbelier <srabbelier@gmail.com>
parents:
482
diff
changeset
|
451 |
form = params['create_form']() |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
452 |
|
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
453 |
return self._constructResponse(request, entity, context, form, params) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
454 |
|
516
ec1dcd70b97e
The list method in models/base.py can now use a filter to make a selection of entities to show.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
514
diff
changeset
|
455 |
def list(self, request, page_name=None, params=None, filter=None): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
456 |
"""Displays the list page for the entity type. |
373
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
457 |
|
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
458 |
Args: |
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
459 |
request: the standard Django HTTP request object |
500
44ea4620c5c0
Replace old page parameter doc string description with new one for page_name.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
499
diff
changeset
|
460 |
page_name: the page name displayed in templates as page and header title |
471
dcb1f7821b39
Remove stop parameter from home_settings and site_settings views. This is something Sverre didn't mean to commit :-) Add missing params description to the models Base class docs.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
459
diff
changeset
|
461 |
params: a dict with params for this View |
516
ec1dcd70b97e
The list method in models/base.py can now use a filter to make a selection of entities to show.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
514
diff
changeset
|
462 |
filter: a dict for the properties that the entities should have |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
463 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
464 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
465 |
The params dictionary is passed as argument to getListContent in |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
466 |
the soc.views.helper.list module. See the docstring for |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
467 |
getListContent on how it uses it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
468 |
The params dictionary is also passed as argument to the _list |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
469 |
method. See the docstring for _list on how it uses it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
470 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
471 |
rights: The rights dictionary is used to check if the user has |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
472 |
the required rights to list all entities of this View's type. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
473 |
See checkAccess for more details on how the rights dictionary |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
474 |
is used to check access rights. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
475 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
476 |
|
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
477 |
params = dicts.merge(params, self._params) |
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
478 |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
479 |
try: |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
480 |
self.checkAccess('list', request, rights=params['rights']) |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
481 |
except out_of_band.Error, error: |
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
482 |
return error.response(request) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
483 |
|
555
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
484 |
content = helper.lists.getListContent(request, params, self._logic, filter) |
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
485 |
contents = [content] |
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
486 |
|
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
487 |
return self._list(request, params, contents, page_name) |
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
488 |
|
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
489 |
def _list(self, request, params, contents, page_name): |
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
490 |
"""Returns the list page for the specified contents |
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
491 |
|
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
492 |
Args: |
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
493 |
request: the standard Django HTTP request object |
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
494 |
params: a dict with params for this View |
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
495 |
contents: a list of content dicts |
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
496 |
page_name: the page name displayed in templates as page and header title |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
497 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
498 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
499 |
name: The name value is used to set the entity_type in the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
500 |
context so that the template can refer to it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
501 |
name_plural: The name_plural value is used to set |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
502 |
the entity_type_plural value in the context so that the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
503 |
template can refer to it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
504 |
list_template: The list_template value is used as template for |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
505 |
to display the list of all entities for this View. |
555
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
506 |
""" |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
507 |
|
555
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
508 |
context = helper.responses.getUniversalContext(request) |
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
509 |
context['page_name'] = page_name |
3cdfb42d941b
Split the list view code up in three pieces
Sverre Rabbelier <srabbelier@gmail.com>
parents:
554
diff
changeset
|
510 |
context['list'] = soc.logic.lists.Lists(contents) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
511 |
|
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
512 |
context['entity_type'] = params['name'] |
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
513 |
context['entity_type_plural'] = params['name_plural'] |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
514 |
|
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
515 |
template = params['list_template'] |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
516 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
517 |
return helper.responses.respond(request, template, context) |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
518 |
|
482
839740b061ad
Factor out direct use of the page object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
471
diff
changeset
|
519 |
def delete(self, request, page_name=None, params=None, **kwargs): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
520 |
"""Shows the delete page for the entity specified by **kwargs. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
521 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
522 |
Args: |
373
dcd7013ae0d5
Add the Page object to the context of each view method. Also, add some missing
Todd Larsen <tlarsen@google.com>
parents:
363
diff
changeset
|
523 |
request: the standard Django HTTP request object |
500
44ea4620c5c0
Replace old page parameter doc string description with new one for page_name.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
499
diff
changeset
|
524 |
page_name: the page name displayed in templates as page and header title |
471
dcb1f7821b39
Remove stop parameter from home_settings and site_settings views. This is something Sverre didn't mean to commit :-) Add missing params description to the models Base class docs.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
459
diff
changeset
|
525 |
params: a dict with params for this View |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
526 |
kwargs: The Key Fields for the specified entity |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
527 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
528 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
529 |
rights: The rights dictionary is used to check if the user has |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
530 |
the required rights to delete the specified entity. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
531 |
See checkAccess for more details on how the rights dictionary |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
532 |
is used to check access rights. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
533 |
name: used in the same way as in edit(), see it's docstring for |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
534 |
a more detailed explanation on how it is used. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
535 |
missing_redirect: see name |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
536 |
error_edit: see name |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
537 |
delete_redirect: The delete_redirect value is used as the url to |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
538 |
redirect to after having successfully deleted the entity. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
539 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
540 |
|
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
541 |
params = dicts.merge(params, self._params) |
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
542 |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
543 |
try: |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
544 |
self.checkAccess('delete', request, rights=params['rights']) |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
545 |
except out_of_band.Error, error: |
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
546 |
return error.response(request) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
547 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
548 |
# create default template context for use with any templates |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
549 |
context = helper.responses.getUniversalContext(request) |
482
839740b061ad
Factor out direct use of the page object
Sverre Rabbelier <srabbelier@gmail.com>
parents:
471
diff
changeset
|
550 |
context['page_name'] = page_name |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
551 |
entity = None |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
552 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
553 |
try: |
438
af082c92ddda
Quick fix to fix user profile creation
Sverre Rabbelier <srabbelier@gmail.com>
parents:
435
diff
changeset
|
554 |
key_fields = self._logic.getKeyFieldsFromDict(kwargs) |
435
829fe8302a8b
Refactor out the abundance of dictionary (un)packing
Sverre Rabbelier <srabbelier@gmail.com>
parents:
429
diff
changeset
|
555 |
entity = self._logic.getIfFields(key_fields) |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
556 |
except out_of_band.Error, error: |
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
557 |
error.message_fmt = ( |
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
558 |
error.message_fmt + self.DEF_CREATE_NEW_ENTITY_MSG_FMT % { |
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
559 |
'entity_type_lower' : params['name'].lower(), |
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
560 |
'entity_type' : params['name'], |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
561 |
'create' : params['missing_redirect']}) |
573
1b37588c4922
Moved the custom error.html page for Site to it's proper place
Sverre Rabbelier <srabbelier@gmail.com>
parents:
572
diff
changeset
|
562 |
return error.response(request, template=params['error_edit'], |
543
280a1ac6bcc1
Merge soc/logic/out_of_band.py into soc/views/out_of_band.py. Merge
Todd Larsen <tlarsen@google.com>
parents:
542
diff
changeset
|
563 |
context=context) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
564 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
565 |
if not entity: |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
566 |
#TODO: Create a proper error page for this |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
567 |
return http.HttpResponseRedirect('/') |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
568 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
569 |
if not self._logic.isDeletable(entity): |
389
9b873166d7d5
Fix identions, too long lines, unused imports and some other mistakes.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
387
diff
changeset
|
570 |
# TODO: Update the notice area telling the user that they |
9b873166d7d5
Fix identions, too long lines, unused imports and some other mistakes.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
387
diff
changeset
|
571 |
# can't delete the entity |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
572 |
pass |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
573 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
574 |
self._logic.delete(entity) |
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
575 |
redirect = params['delete_redirect'] |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
576 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
577 |
return http.HttpResponseRedirect(redirect) |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
578 |
|
560
a32be584ee04
Requests are almost working now
Sverre Rabbelier <srabbelier@gmail.com>
parents:
555
diff
changeset
|
579 |
def getEditRedirect(self, entity, _): |
a32be584ee04
Requests are almost working now
Sverre Rabbelier <srabbelier@gmail.com>
parents:
555
diff
changeset
|
580 |
"""Returns the edit redirect for the specified entity |
a32be584ee04
Requests are almost working now
Sverre Rabbelier <srabbelier@gmail.com>
parents:
555
diff
changeset
|
581 |
""" |
a32be584ee04
Requests are almost working now
Sverre Rabbelier <srabbelier@gmail.com>
parents:
555
diff
changeset
|
582 |
|
a32be584ee04
Requests are almost working now
Sverre Rabbelier <srabbelier@gmail.com>
parents:
555
diff
changeset
|
583 |
suffix = self._logic.getKeySuffix(entity) |
a32be584ee04
Requests are almost working now
Sverre Rabbelier <srabbelier@gmail.com>
parents:
555
diff
changeset
|
584 |
url_name = self._params['url_name'] |
a32be584ee04
Requests are almost working now
Sverre Rabbelier <srabbelier@gmail.com>
parents:
555
diff
changeset
|
585 |
return '/%s/edit/%s' % (url_name, suffix) |
a32be584ee04
Requests are almost working now
Sverre Rabbelier <srabbelier@gmail.com>
parents:
555
diff
changeset
|
586 |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
587 |
def _editPost(self, request, entity, fields): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
588 |
"""Performs any required processing on the entity to post its edit page. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
589 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
590 |
Args: |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
591 |
request: the django request object |
402
021e86368600
Incorperated suggestions by Todd
Sverre Rabbelier <srabbelier@gmail.com>
parents:
399
diff
changeset
|
592 |
entity: the entity to create or update from POST contents |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
593 |
fields: the new field values |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
594 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
595 |
|
446
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
596 |
pass |
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
597 |
|
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
598 |
def _public(self, request, entity, context): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
599 |
"""Performs any required processing to get an entities public page. |
446
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
600 |
|
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
601 |
Args: |
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
602 |
request: the django request object |
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
603 |
entity: the entity to make public |
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
604 |
context: the context object |
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
605 |
""" |
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
606 |
|
0b479d573a4c
Refactoring of {site/home}_settings to make them use base.View
Sverre Rabbelier <srabbelier@gmail.com>
parents:
445
diff
changeset
|
607 |
pass |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
608 |
|
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
609 |
def _editGet(self, request, entity, form): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
610 |
"""Performs any required processing on the form to get its edit page. |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
611 |
|
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
612 |
Args: |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
613 |
request: the django request object |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
614 |
entity: the entity to get |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
615 |
form: the django form that will be used for the page |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
616 |
""" |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
617 |
|
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
618 |
pass |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
619 |
|
497
73666a7cd718
Added a default _editSeed method
Sverre Rabbelier <srabbelier@gmail.com>
parents:
495
diff
changeset
|
620 |
def _editSeed(self, request, seed): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
621 |
"""Performs any required processing on the form to get its edit page. |
497
73666a7cd718
Added a default _editSeed method
Sverre Rabbelier <srabbelier@gmail.com>
parents:
495
diff
changeset
|
622 |
|
73666a7cd718
Added a default _editSeed method
Sverre Rabbelier <srabbelier@gmail.com>
parents:
495
diff
changeset
|
623 |
Args: |
73666a7cd718
Added a default _editSeed method
Sverre Rabbelier <srabbelier@gmail.com>
parents:
495
diff
changeset
|
624 |
request: the django request object |
73666a7cd718
Added a default _editSeed method
Sverre Rabbelier <srabbelier@gmail.com>
parents:
495
diff
changeset
|
625 |
seed: the fields to seed the create page with |
73666a7cd718
Added a default _editSeed method
Sverre Rabbelier <srabbelier@gmail.com>
parents:
495
diff
changeset
|
626 |
""" |
73666a7cd718
Added a default _editSeed method
Sverre Rabbelier <srabbelier@gmail.com>
parents:
495
diff
changeset
|
627 |
|
73666a7cd718
Added a default _editSeed method
Sverre Rabbelier <srabbelier@gmail.com>
parents:
495
diff
changeset
|
628 |
pass |
73666a7cd718
Added a default _editSeed method
Sverre Rabbelier <srabbelier@gmail.com>
parents:
495
diff
changeset
|
629 |
|
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
630 |
def _constructResponse(self, request, entity, context, form, params): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
631 |
"""Updates the context and returns a response for the specified arguments. |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
632 |
|
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
633 |
Args: |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
634 |
request: the django request object |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
635 |
entity: the entity that is used and set in the context |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
636 |
context: the context to be used |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
637 |
form: the form that will be used and set in the context |
471
dcb1f7821b39
Remove stop parameter from home_settings and site_settings views. This is something Sverre didn't mean to commit :-) Add missing params description to the models Base class docs.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
459
diff
changeset
|
638 |
params: a dict with params for this View |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
639 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
640 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
641 |
name: The name_plural value is used to set the entity_type |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
642 |
value in the context so that the template can refer to it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
643 |
name_plural: same as name, but used to set entity_type_plural |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
644 |
name_short: same as name, but used to set entity_type_short |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
645 |
url_name: same as name, but used to set entity_type_url |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
646 |
edit_template: The edit_template value is used as template when |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
647 |
there is an existing entity to display the edit page for the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
648 |
specified entity. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
649 |
create_template: similar to edit_template, but is used when |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
650 |
there is no existing entity. |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
651 |
""" |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
652 |
|
410
2af7f84f4fc7
Moved all key_name related things to the logic modules
Sverre Rabbelier <srabbelier@gmail.com>
parents:
409
diff
changeset
|
653 |
suffix = self._logic.getKeySuffix(entity) |
403
d3e545a8bd26
Some more improvements to the generic view code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
402
diff
changeset
|
654 |
|
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
655 |
context['form'] = form |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
656 |
context['entity'] = entity |
403
d3e545a8bd26
Some more improvements to the generic view code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
402
diff
changeset
|
657 |
context['entity_suffix'] = suffix |
455
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
658 |
context['entity_type'] = params['name'] |
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
659 |
context['entity_type_plural'] = params['name_plural'] |
4d98832b43ba
Added support for providing a custom params dict
Sverre Rabbelier <srabbelier@gmail.com>
parents:
446
diff
changeset
|
660 |
context['entity_type_short'] = params['name_short'] |
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:
500
diff
changeset
|
661 |
context['entity_type_url'] = params['url_name'] |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
662 |
|
576
6614d3f545b7
Fixed spurious 'Invite Host' button in 'create host'
Sverre Rabbelier <srabbelier@gmail.com>
parents:
573
diff
changeset
|
663 |
if entity: |
6614d3f545b7
Fixed spurious 'Invite Host' button in 'create host'
Sverre Rabbelier <srabbelier@gmail.com>
parents:
573
diff
changeset
|
664 |
template = params['edit_template'] |
6614d3f545b7
Fixed spurious 'Invite Host' button in 'create host'
Sverre Rabbelier <srabbelier@gmail.com>
parents:
573
diff
changeset
|
665 |
else: |
6614d3f545b7
Fixed spurious 'Invite Host' button in 'create host'
Sverre Rabbelier <srabbelier@gmail.com>
parents:
573
diff
changeset
|
666 |
template = params['create_template'] |
399
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
667 |
|
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
668 |
return helper.responses.respond(request, template, context) |
b82852e6963e
Various improvements to the generic View code
Sverre Rabbelier <srabbelier@gmail.com>
parents:
389
diff
changeset
|
669 |
|
507
3603fdafabf7
Fold the _rights dictionary into params
Sverre Rabbelier <srabbelier@gmail.com>
parents:
502
diff
changeset
|
670 |
def checkAccess(self, access_type, request, rights=None): |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
671 |
"""Runs all the defined checks for the specified type |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
672 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
673 |
Args: |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
674 |
access_type: the type of request (such as 'list' or 'edit') |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
675 |
request: the Django request object |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
676 |
rights: A dictionary containing access check functions |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
677 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
678 |
Rights usage: The rights dictionary is used to check if the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
679 |
current user is allowed to view the page specified. The |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
680 |
functions defined in this dictionary are always called with the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
681 |
django request object as argument. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
682 |
On any request, regardless of what type, the functions in the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
683 |
'any_access' value are called. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
684 |
If the specified type is not in the rights dictionary, all the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
685 |
functions in the 'unspecified' value are called. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
686 |
When the specified type _is_ in the rights dictionary, all the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
687 |
functions in that access_type's value are called. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
688 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
689 |
Returns: |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
690 |
True: If all the required access checks have been made successfully |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
691 |
False: If a check failed, in this case self._response will contain |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
692 |
the response provided by the failed access check. |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
693 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
694 |
|
507
3603fdafabf7
Fold the _rights dictionary into params
Sverre Rabbelier <srabbelier@gmail.com>
parents:
502
diff
changeset
|
695 |
rights = dicts.merge(rights, self._params['rights']) |
3603fdafabf7
Fold the _rights dictionary into params
Sverre Rabbelier <srabbelier@gmail.com>
parents:
502
diff
changeset
|
696 |
|
418
e035f31d131e
Always check if a user filled in a user profile
Sverre Rabbelier <srabbelier@gmail.com>
parents:
410
diff
changeset
|
697 |
# Call each access checker |
507
3603fdafabf7
Fold the _rights dictionary into params
Sverre Rabbelier <srabbelier@gmail.com>
parents:
502
diff
changeset
|
698 |
for check in rights['any_access']: |
418
e035f31d131e
Always check if a user filled in a user profile
Sverre Rabbelier <srabbelier@gmail.com>
parents:
410
diff
changeset
|
699 |
check(request) |
e035f31d131e
Always check if a user filled in a user profile
Sverre Rabbelier <srabbelier@gmail.com>
parents:
410
diff
changeset
|
700 |
|
507
3603fdafabf7
Fold the _rights dictionary into params
Sverre Rabbelier <srabbelier@gmail.com>
parents:
502
diff
changeset
|
701 |
if access_type not in rights: |
3603fdafabf7
Fold the _rights dictionary into params
Sverre Rabbelier <srabbelier@gmail.com>
parents:
502
diff
changeset
|
702 |
for check in rights['unspecified']: |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
703 |
# No checks defined, so do the 'generic' checks and bail out |
554
68c7a1dd3c52
Renamed templates/soc/entity/list/entity_*.html to *.html
Sverre Rabbelier <srabbelier@gmail.com>
parents:
553
diff
changeset
|
704 |
check(request) |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
705 |
return |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
706 |
|
507
3603fdafabf7
Fold the _rights dictionary into params
Sverre Rabbelier <srabbelier@gmail.com>
parents:
502
diff
changeset
|
707 |
for check in rights[access_type]: |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
708 |
check(request) |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
709 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
710 |
def collectCleanedFields(self, form): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
711 |
"""Collects all cleaned fields and returns them with the key_name. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
712 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
713 |
Args: |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
714 |
form: The form from which the cleaned fields should be collected |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
715 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
716 |
Returns: All the fields that are in the form's cleaned_data |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
717 |
property are returned. If there is a key_name field, it is not |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
718 |
included in the returend fields, instead, it is returned as the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
719 |
first element in the returned tuple. If no key_name field is |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
720 |
present, None is returned as first value instead. |
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
721 |
""" |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
722 |
|
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
723 |
fields = {} |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
724 |
|
459
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
458
diff
changeset
|
725 |
key_name = None |
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
458
diff
changeset
|
726 |
if 'key_name' in form.cleaned_data: |
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
458
diff
changeset
|
727 |
key_name = form.cleaned_data.pop('key_name') |
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
458
diff
changeset
|
728 |
|
363
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
729 |
for field, value in form.cleaned_data.iteritems(): |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
730 |
fields[field] = value |
d35ffa6ca643
Add a framework for generic views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff
changeset
|
731 |
|
459
2cfcedaf7c16
Preparation for generic user views
Sverre Rabbelier <srabbelier@gmail.com>
parents:
458
diff
changeset
|
732 |
return key_name, fields |
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
733 |
|
494
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
734 |
def getKeyFieldsPattern(self, params): |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
735 |
"""Returns the Django pattern for this View's entity |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
736 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
737 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
738 |
key_fields_prefix: The key_fields_prefix value is used as the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
739 |
first part of the returned pattern. |
494
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
740 |
""" |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
741 |
|
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
742 |
names = self._logic.getKeyFieldNames() |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
743 |
patterns = params['key_fields_prefix'] |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
744 |
|
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
745 |
for name in names: |
533
ba3309b2fd30
Move LINK_ID and SCOPE_PATH regular expressions to soc/models/linkable.py.
Todd Larsen <tlarsen@google.com>
parents:
528
diff
changeset
|
746 |
pattern = r'(?P<%s>%s)' % (name, linkable.LINK_ID_PATTERN_CORE) |
494
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
747 |
patterns.append(pattern) |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
748 |
|
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
749 |
result = '/'.join(patterns) |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
750 |
return result |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
751 |
|
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
752 |
def _getSidebarItems(self, params): |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
753 |
"""Retrieves a list of sidebar entries for this view |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
754 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
755 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
756 |
The params dictionary is provided to the menu_text's format. |
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
757 |
|
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
758 |
sidebar: The sidebar value is returned directly if non-False |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
759 |
sidebar_defaults: The sidebar_defaults are used to construct the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
760 |
sidebar items for this View. It is expected to be a tuple of |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
761 |
three items, the item's url, it's menu_text, and it's |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
762 |
access_type, see getSidebarLinks on how access_type is used. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
763 |
sidebar_additional: The sidebar_additional values are appended |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
764 |
to the list of items verbatim, and should be in the format |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
765 |
expected by getSidebarLinks. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
766 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
767 |
Args: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
768 |
params: a dict with params for this View. |
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
769 |
""" |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
770 |
|
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
771 |
# Return the found result |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
772 |
if params['sidebar']: |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
773 |
return params['sidebar'] |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
774 |
|
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
775 |
# Construct defaults manualy |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
776 |
defaults = params['sidebar_defaults'] |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
777 |
|
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
778 |
result = [] |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
779 |
|
586
a4a36b06a870
Make the sidebar dynamic depending on the user's rights
Sverre Rabbelier <srabbelier@gmail.com>
parents:
576
diff
changeset
|
780 |
for url, menu_text, access_type in defaults: |
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:
500
diff
changeset
|
781 |
url = url % params['url_name'].lower() |
586
a4a36b06a870
Make the sidebar dynamic depending on the user's rights
Sverre Rabbelier <srabbelier@gmail.com>
parents:
576
diff
changeset
|
782 |
item = (url, menu_text % params, access_type) |
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
783 |
result.append(item) |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
784 |
|
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
785 |
for item in params['sidebar_additional']: |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
786 |
result.append(item) |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
787 |
|
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
788 |
return result |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
789 |
|
586
a4a36b06a870
Make the sidebar dynamic depending on the user's rights
Sverre Rabbelier <srabbelier@gmail.com>
parents:
576
diff
changeset
|
790 |
def getSidebarLinks(self, request, params=None): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
791 |
"""Returns an dictionary with one sidebar entry. |
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
792 |
|
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
793 |
Calls _getSidebarItems to retrieve the items that should be in the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
794 |
menu. Expected is a tuple with an url, a menu_text, and an |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
795 |
access_type. The access_type is then passed to checkAccess, if it |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
796 |
raises out_of_band.Error, the item will not be added. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
797 |
|
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
798 |
Args: |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
799 |
request: the django request object |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
800 |
params: a dict with params for this View |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
801 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
802 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
803 |
The params dictionary is passed as argument to _getSidebarItems, |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
804 |
see the docstring of _getSidebarItems on how it uses it. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
805 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
806 |
rights: The rights dictionary is used to check if the user has |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
807 |
the required rights to see a sidebar item. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
808 |
See checkAccess for more details on how the rights dictionary |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
809 |
is used to check access rights. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
810 |
sidebar_heading: The sidebar_heading value is used to set the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
811 |
heading variable in the result. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
812 |
name: The name value is used if sidebar_heading is not present. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
813 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
814 |
Returns: A dictionary is returned with it's 'heading' value set |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
815 |
as explained above. It's 'items' value is constructed by |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
816 |
calling _getSidebarItems. It constists of dictionaries with a |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
817 |
url and a title field. |
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
818 |
""" |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
819 |
|
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
820 |
params = dicts.merge(params, self._params) |
586
a4a36b06a870
Make the sidebar dynamic depending on the user's rights
Sverre Rabbelier <srabbelier@gmail.com>
parents:
576
diff
changeset
|
821 |
rights = params['rights'] |
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
822 |
|
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
823 |
items = [] |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
824 |
|
586
a4a36b06a870
Make the sidebar dynamic depending on the user's rights
Sverre Rabbelier <srabbelier@gmail.com>
parents:
576
diff
changeset
|
825 |
for url, menu_text, access_type in self._getSidebarItems(params): |
a4a36b06a870
Make the sidebar dynamic depending on the user's rights
Sverre Rabbelier <srabbelier@gmail.com>
parents:
576
diff
changeset
|
826 |
try: |
a4a36b06a870
Make the sidebar dynamic depending on the user's rights
Sverre Rabbelier <srabbelier@gmail.com>
parents:
576
diff
changeset
|
827 |
self.checkAccess(access_type, request, rights) |
a4a36b06a870
Make the sidebar dynamic depending on the user's rights
Sverre Rabbelier <srabbelier@gmail.com>
parents:
576
diff
changeset
|
828 |
items.append({'url': url, 'title': menu_text}) |
a4a36b06a870
Make the sidebar dynamic depending on the user's rights
Sverre Rabbelier <srabbelier@gmail.com>
parents:
576
diff
changeset
|
829 |
except out_of_band.Error: |
a4a36b06a870
Make the sidebar dynamic depending on the user's rights
Sverre Rabbelier <srabbelier@gmail.com>
parents:
576
diff
changeset
|
830 |
pass |
a4a36b06a870
Make the sidebar dynamic depending on the user's rights
Sverre Rabbelier <srabbelier@gmail.com>
parents:
576
diff
changeset
|
831 |
|
a4a36b06a870
Make the sidebar dynamic depending on the user's rights
Sverre Rabbelier <srabbelier@gmail.com>
parents:
576
diff
changeset
|
832 |
if not items: |
a4a36b06a870
Make the sidebar dynamic depending on the user's rights
Sverre Rabbelier <srabbelier@gmail.com>
parents:
576
diff
changeset
|
833 |
return |
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
834 |
|
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
835 |
res = {} |
542
7cc99461b64d
Remove redundant dicts for URL patterns and sidebar menu text, and use the
Todd Larsen <tlarsen@google.com>
parents:
539
diff
changeset
|
836 |
|
586
a4a36b06a870
Make the sidebar dynamic depending on the user's rights
Sverre Rabbelier <srabbelier@gmail.com>
parents:
576
diff
changeset
|
837 |
if 'sidebar_heading' not in params: |
542
7cc99461b64d
Remove redundant dicts for URL patterns and sidebar menu text, and use the
Todd Larsen <tlarsen@google.com>
parents:
539
diff
changeset
|
838 |
params['sidebar_heading'] = params['name'] |
7cc99461b64d
Remove redundant dicts for URL patterns and sidebar menu text, and use the
Todd Larsen <tlarsen@google.com>
parents:
539
diff
changeset
|
839 |
|
7cc99461b64d
Remove redundant dicts for URL patterns and sidebar menu text, and use the
Todd Larsen <tlarsen@google.com>
parents:
539
diff
changeset
|
840 |
res['heading'] = params['sidebar_heading'] |
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
841 |
res['items'] = items |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
842 |
|
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
492
diff
changeset
|
843 |
return res |
494
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
844 |
|
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
845 |
def getDjangoURLPatterns(self, params=None): |
499
d22e4fe8e64b
Fix missing dots in doc strings and some other doc string corrections.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
497
diff
changeset
|
846 |
"""Retrieves a list of sidebar entries for this view from self._params. |
494
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
847 |
|
542
7cc99461b64d
Remove redundant dicts for URL patterns and sidebar menu text, and use the
Todd Larsen <tlarsen@google.com>
parents:
539
diff
changeset
|
848 |
If self._params['django_patterns'] is None default entries will be |
7cc99461b64d
Remove redundant dicts for URL patterns and sidebar menu text, and use the
Todd Larsen <tlarsen@google.com>
parents:
539
diff
changeset
|
849 |
constructed. |
610
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
850 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
851 |
Params usage: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
852 |
The params dictionary is passed to the getKeyFieldsPatterns |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
853 |
method, see it's docstring on how it is used. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
854 |
django_patterns: The django_patterns value is returned directly |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
855 |
if it is non-False. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
856 |
django_patterns_defaults: The dajngo_patterns_defaults value is |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
857 |
used to construct the url patterns. It is expected to be a |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
858 |
list of tuples. The tuples should contain an url, a module |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
859 |
name, and the name of the url. The name is used as the |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
860 |
page_name passed as keyword argument, but also as the name |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
861 |
by which the url is known to Django internally. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
862 |
url_name: The url_name argument is passed as argument to each |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
863 |
url, together with the link_id pattern, the link_id core |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
864 |
pattern, and the key fields for this View. |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
865 |
|
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
866 |
Args: |
e0bd276ffd82
Documented params usage in soc/views/models/base.py
Sverre Rabbelier <srabbelier@gmail.com>
parents:
606
diff
changeset
|
867 |
params: a dict with params for this View |
494
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
868 |
""" |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
869 |
|
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
870 |
params = dicts.merge(params, self._params) |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
871 |
|
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
872 |
# Return the found result |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
873 |
if params['django_patterns']: |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
874 |
return params['django_patterns'] |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
875 |
|
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
876 |
# Construct defaults manualy |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
877 |
default_patterns = params['django_patterns_defaults'] |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
878 |
key_fields_pattern = self.getKeyFieldsPattern(params) |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
879 |
|
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
880 |
patterns = [] |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
881 |
|
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
882 |
for url, module, name in default_patterns: |
542
7cc99461b64d
Remove redundant dicts for URL patterns and sidebar menu text, and use the
Todd Larsen <tlarsen@google.com>
parents:
539
diff
changeset
|
883 |
name = name % params |
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:
500
diff
changeset
|
884 |
module = module % params['module_name'] |
494
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
885 |
|
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
886 |
url = url % { |
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:
500
diff
changeset
|
887 |
'url_name': params['url_name'], |
533
ba3309b2fd30
Move LINK_ID and SCOPE_PATH regular expressions to soc/models/linkable.py.
Todd Larsen <tlarsen@google.com>
parents:
528
diff
changeset
|
888 |
'lnp': linkable.LINK_ID_ARG_PATTERN, |
ba3309b2fd30
Move LINK_ID and SCOPE_PATH regular expressions to soc/models/linkable.py.
Todd Larsen <tlarsen@google.com>
parents:
528
diff
changeset
|
889 |
'ulnp': linkable.LINK_ID_PATTERN_CORE, |
494
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
890 |
'key_fields': key_fields_pattern, |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
891 |
} |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
892 |
|
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
893 |
kwargs = {'page_name': name} |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
894 |
|
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
895 |
item = (url, module, kwargs, name) |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
896 |
patterns.append(item) |
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
897 |
|
5e9c656a1b68
Refactored SiteMap to be generic
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
898 |
return patterns |