author | Sverre Rabbelier <srabbelier@gmail.com> |
Sun, 07 Dec 2008 17:01:44 +0000 | |
changeset 704 | 8647e6b441fc |
parent 703 | c4f3997becd9 |
child 714 | 3e2ce3d8057a |
permissions | -rw-r--r-- |
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
284
diff
changeset
|
1 |
#!/usr/bin/python2.5 |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
284
diff
changeset
|
2 |
# |
31
8b43c541afa7
First iteration of a "prototype" Melange app, along with an initial Person
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
3 |
# Copyright 2008 the Melange authors. |
8b43c541afa7
First iteration of a "prototype" Melange app, along with an initial Person
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
4 |
# |
8b43c541afa7
First iteration of a "prototype" Melange app, along with an initial Person
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
5 |
# Licensed under the Apache License, Version 2.0 (the "License"); |
8b43c541afa7
First iteration of a "prototype" Melange app, along with an initial Person
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
6 |
# you may not use this file except in compliance with the License. |
8b43c541afa7
First iteration of a "prototype" Melange app, along with an initial Person
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
7 |
# You may obtain a copy of the License at |
8b43c541afa7
First iteration of a "prototype" Melange app, along with an initial Person
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
8 |
# |
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
284
diff
changeset
|
9 |
# http://www.apache.org/licenses/LICENSE-2.0 |
31
8b43c541afa7
First iteration of a "prototype" Melange app, along with an initial Person
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
10 |
# |
8b43c541afa7
First iteration of a "prototype" Melange app, along with an initial Person
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
11 |
# Unless required by applicable law or agreed to in writing, software |
8b43c541afa7
First iteration of a "prototype" Melange app, along with an initial Person
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
12 |
# distributed under the License is distributed on an "AS IS" BASIS, |
8b43c541afa7
First iteration of a "prototype" Melange app, along with an initial Person
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
13 |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
8b43c541afa7
First iteration of a "prototype" Melange app, along with an initial Person
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
14 |
# See the License for the specific language governing permissions and |
8b43c541afa7
First iteration of a "prototype" Melange app, along with an initial Person
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
15 |
# limitations under the License. |
8b43c541afa7
First iteration of a "prototype" Melange app, along with an initial Person
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
16 |
|
637
86ec079d8302
Some docstring and missing blank lines fixes in soc.views.sitemap modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
615
diff
changeset
|
17 |
"""Module contains sidebar related functions. |
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
284
diff
changeset
|
18 |
""" |
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
284
diff
changeset
|
19 |
|
31
8b43c541afa7
First iteration of a "prototype" Melange app, along with an initial Person
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
20 |
__authors__ = [ |
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
284
diff
changeset
|
21 |
'"Sverre Rabbelier" <sverre@rabbelier.nl>', |
31
8b43c541afa7
First iteration of a "prototype" Melange app, along with an initial Person
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
22 |
] |
8b43c541afa7
First iteration of a "prototype" Melange app, along with an initial Person
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
23 |
|
8b43c541afa7
First iteration of a "prototype" Melange app, along with an initial Person
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
24 |
|
615
1d09147de51f
Fixed a bug in latest commit
Sverre Rabbelier <srabbelier@gmail.com>
parents:
614
diff
changeset
|
25 |
from soc.views import out_of_band |
1d09147de51f
Fixed a bug in latest commit
Sverre Rabbelier <srabbelier@gmail.com>
parents:
614
diff
changeset
|
26 |
from soc.views.helper import access |
1d09147de51f
Fixed a bug in latest commit
Sverre Rabbelier <srabbelier@gmail.com>
parents:
614
diff
changeset
|
27 |
|
637
86ec079d8302
Some docstring and missing blank lines fixes in soc.views.sitemap modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
615
diff
changeset
|
28 |
|
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
284
diff
changeset
|
29 |
SIDEBAR = [] |
226
a92b11181a49
Update some of the URL patterns to get their link_name parsing from the new
Todd Larsen <tlarsen@google.com>
parents:
205
diff
changeset
|
30 |
|
31
8b43c541afa7
First iteration of a "prototype" Melange app, along with an initial Person
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
31 |
|
585
903890857ed8
Have the sidebar be rebuilt on every request with callbacks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
32 |
def addMenu(callback): |
697
190b65431579
Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents:
637
diff
changeset
|
33 |
"""Adds a callback to the menu builder. |
190b65431579
Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents:
637
diff
changeset
|
34 |
|
190b65431579
Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents:
637
diff
changeset
|
35 |
The callback should return a list of menu's when called. |
190b65431579
Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents:
637
diff
changeset
|
36 |
""" |
190b65431579
Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents:
637
diff
changeset
|
37 |
|
493
6976c4d8d0ac
Refactor the sidebar to use Django templates
Sverre Rabbelier <srabbelier@gmail.com>
parents:
284
diff
changeset
|
38 |
global SIDEBAR |
585
903890857ed8
Have the sidebar be rebuilt on every request with callbacks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
39 |
SIDEBAR.append(callback) |
903890857ed8
Have the sidebar be rebuilt on every request with callbacks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
40 |
|
586
a4a36b06a870
Make the sidebar dynamic depending on the user's rights
Sverre Rabbelier <srabbelier@gmail.com>
parents:
585
diff
changeset
|
41 |
def getSidebar(request): |
697
190b65431579
Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents:
637
diff
changeset
|
42 |
"""Constructs a sidebar for the specified request |
190b65431579
Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents:
637
diff
changeset
|
43 |
""" |
190b65431579
Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents:
637
diff
changeset
|
44 |
|
585
903890857ed8
Have the sidebar be rebuilt on every request with callbacks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
45 |
sidebar = [] |
903890857ed8
Have the sidebar be rebuilt on every request with callbacks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
46 |
|
903890857ed8
Have the sidebar be rebuilt on every request with callbacks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
47 |
for callback in SIDEBAR: |
697
190b65431579
Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents:
637
diff
changeset
|
48 |
menus = callback(request) |
190b65431579
Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents:
637
diff
changeset
|
49 |
|
190b65431579
Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents:
637
diff
changeset
|
50 |
for menu in (menus if menus else []): |
589
ee9122db04af
Fixes empty spaces appearing in the menu if a person is not allowed to see this menu or if no menu is defined.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
586
diff
changeset
|
51 |
sidebar.append(menu) |
585
903890857ed8
Have the sidebar be rebuilt on every request with callbacks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
52 |
|
903890857ed8
Have the sidebar be rebuilt on every request with callbacks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
493
diff
changeset
|
53 |
return sidebar |
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
54 |
|
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
55 |
|
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
56 |
def getSidebarItems(params): |
637
86ec079d8302
Some docstring and missing blank lines fixes in soc.views.sitemap modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
615
diff
changeset
|
57 |
"""Retrieves a list of sidebar entries for this view. |
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
58 |
|
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
59 |
Params usage: |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
60 |
The params dictionary is provided to the menu_text's format. |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
61 |
|
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
62 |
sidebar: The sidebar value is returned directly if non-False |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
63 |
sidebar_defaults: The sidebar_defaults are used to construct the |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
64 |
sidebar items for this View. It is expected to be a tuple of |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
65 |
three items, the item's url, it's menu_text, and it's |
703
c4f3997becd9
Rename getSidebarLinks to getSidebarMenus
Sverre Rabbelier <srabbelier@gmail.com>
parents:
697
diff
changeset
|
66 |
access_type, see getSidebarMenus on how access_type is used. |
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
67 |
sidebar_additional: The sidebar_additional values are appended |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
68 |
to the list of items verbatim, and should be in the format |
703
c4f3997becd9
Rename getSidebarLinks to getSidebarMenus
Sverre Rabbelier <srabbelier@gmail.com>
parents:
697
diff
changeset
|
69 |
expected by getSidebarMenus. |
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
70 |
|
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
71 |
Args: |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
72 |
params: a dict with params for this View. |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
73 |
""" |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
74 |
|
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
75 |
# Return the found result |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
76 |
if params['sidebar']: |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
77 |
return params['sidebar'] |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
78 |
|
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
79 |
# Construct defaults manualy |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
80 |
defaults = params['sidebar_defaults'] |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
81 |
|
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
82 |
result = [] |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
83 |
|
704
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
84 |
for item in params['sidebar_additional']: |
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
85 |
result.append(item) |
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
86 |
|
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
87 |
for url, menu_text, access_type in defaults: |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
88 |
url = url % params['url_name'].lower() |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
89 |
item = (url, menu_text % params, access_type) |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
90 |
result.append(item) |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
91 |
|
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
92 |
return result |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
93 |
|
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
94 |
|
704
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
95 |
def getSidebarMenu(request, items, params): |
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
96 |
"""Returns an dictionary with one sidebar entry. |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
97 |
|
704
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
98 |
Items is expected to be a tuple with an url, a menu_text, and an |
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
99 |
access_type. The access_type is then passed to checkAccess, if it |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
100 |
raises out_of_band.Error, the item will not be added. |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
101 |
|
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
102 |
Args: |
704
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
103 |
items: see above |
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
104 |
request: the django request object |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
105 |
params: a dict with params for this View |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
106 |
|
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
107 |
Params usage: |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
108 |
The params dictionary is passed as argument to getSidebarItems, |
637
86ec079d8302
Some docstring and missing blank lines fixes in soc.views.sitemap modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
615
diff
changeset
|
109 |
see the docstring of getSidebarItems on how it uses it. |
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
110 |
|
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
111 |
rights: The rights dictionary is used to check if the user has |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
112 |
the required rights to see a sidebar item. |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
113 |
See checkAccess for more details on how the rights dictionary |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
114 |
is used to check access rights. |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
115 |
sidebar_heading: The sidebar_heading value is used to set the |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
116 |
heading variable in the result. |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
117 |
name: The name value is used if sidebar_heading is not present. |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
118 |
|
637
86ec079d8302
Some docstring and missing blank lines fixes in soc.views.sitemap modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
615
diff
changeset
|
119 |
Returns: |
86ec079d8302
Some docstring and missing blank lines fixes in soc.views.sitemap modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
615
diff
changeset
|
120 |
A dictionary is returned with it's 'heading' value set as explained above. |
86ec079d8302
Some docstring and missing blank lines fixes in soc.views.sitemap modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
615
diff
changeset
|
121 |
It's 'items' value is constructed by calling _getSidebarItems. It constists |
86ec079d8302
Some docstring and missing blank lines fixes in soc.views.sitemap modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
615
diff
changeset
|
122 |
of dictionaries with a url and a title field. |
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
123 |
""" |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
124 |
|
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
125 |
rights = params['rights'] |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
126 |
|
704
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
127 |
submenus = [] |
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
128 |
|
704
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
129 |
for url, menu_text, access_type in items: |
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
130 |
try: |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
131 |
access.checkAccess(access_type, request, rights) |
704
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
132 |
submenus.append({'url': url, 'title': menu_text}) |
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
133 |
except out_of_band.Error: |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
134 |
pass |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
135 |
|
704
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
136 |
return submenus |
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
137 |
|
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
138 |
|
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
139 |
def getSidebarMenus(request, params=None): |
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
140 |
"""Constructs the default sidebar menu for a View. |
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
141 |
|
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
142 |
Calls getSidebarItems to retrieve the items that should be in the |
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
143 |
menu. Then passes the result to getSidebarMenu. See the respective |
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
144 |
docstrings for an explanation on what they do. |
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
145 |
|
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
146 |
Args: |
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
147 |
request: the django request object |
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
148 |
params: a dict with params for this View |
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
149 |
""" |
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
150 |
|
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
151 |
items = getSidebarItems(params) |
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
152 |
submenus = getSidebarMenu(request, items, params) |
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
153 |
|
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
154 |
if not submenus: |
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
155 |
return |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
156 |
|
697
190b65431579
Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents:
637
diff
changeset
|
157 |
menu = {} |
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
158 |
|
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
159 |
if 'sidebar_heading' not in params: |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
160 |
params['sidebar_heading'] = params['name'] |
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
161 |
|
697
190b65431579
Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents:
637
diff
changeset
|
162 |
menu['heading'] = params['sidebar_heading'] |
704
8647e6b441fc
Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents:
703
diff
changeset
|
163 |
menu['items'] = submenus |
614
53a3e46fc512
Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents:
589
diff
changeset
|
164 |
|
697
190b65431579
Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents:
637
diff
changeset
|
165 |
menus = [menu] |
190b65431579
Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents:
637
diff
changeset
|
166 |
|
190b65431579
Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents:
637
diff
changeset
|
167 |
return menus |