app/soc/views/sitemap/sidebar.py
author Lennard de Rijk <ljvderijk@gmail.com>
Fri, 03 Jul 2009 21:59:10 +0200
changeset 2518 66405056baf8
parent 2333 221482a54238
permissions -rw-r--r--
Only initialize a SurveyTakeForm in take instead of in takeGet and takePost. This will allow for other subclassed views to easily replace the form the view is using. Also small style fix in Survey helper.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
#
1308
35b75ffcbb37 Partially reverted "Update the copyright notice for 2009."
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1307
diff changeset
     3
# Copyright 2008 the Melange authors.
31
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
987
6fd5c561b446 Cache sidebar with a simple caching API
Sverre Rabbelier <srabbelier@gmail.com>
parents: 973
diff changeset
    27
872
70e0b6d8ff73 Prepare access to receive args and kwargs as argument
Sverre Rabbelier <srabbelier@gmail.com>
parents: 840
diff changeset
    28
SIDEBAR_ACCESS_ARGS = ['SIDEBAR_CALLING']
70e0b6d8ff73 Prepare access to receive args and kwargs as argument
Sverre Rabbelier <srabbelier@gmail.com>
parents: 840
diff changeset
    29
SIDEBAR_ACCESS_KWARGS = {'SIDEBAR_CALLING': True}
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
614
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    32
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    33
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
    34
  """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
    35
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    36
  Params usage:
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    37
    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
    38
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    39
    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
    40
    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
    41
      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
    42
      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
    43
      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
    44
    sidebar_additional: The sidebar_additional values are appended
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    45
      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
    46
      expected by getSidebarMenus.
614
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    47
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    48
  Args:
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    49
    params: a dict with params for this View.
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    50
  """
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    51
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    52
  # Return the found result
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    53
  if params['sidebar']:
840
d3f9fff0860b When constructing the sidebar don't overide 'sidebar'
Sverre Rabbelier <srabbelier@gmail.com>
parents: 714
diff changeset
    54
    default = params['sidebar']
d3f9fff0860b When constructing the sidebar don't overide 'sidebar'
Sverre Rabbelier <srabbelier@gmail.com>
parents: 714
diff changeset
    55
    result = default[:]
d3f9fff0860b When constructing the sidebar don't overide 'sidebar'
Sverre Rabbelier <srabbelier@gmail.com>
parents: 714
diff changeset
    56
    for item in params['sidebar_additional']:
d3f9fff0860b When constructing the sidebar don't overide 'sidebar'
Sverre Rabbelier <srabbelier@gmail.com>
parents: 714
diff changeset
    57
      result.append(item)
d3f9fff0860b When constructing the sidebar don't overide 'sidebar'
Sverre Rabbelier <srabbelier@gmail.com>
parents: 714
diff changeset
    58
    return result
614
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    59
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    60
  # Construct defaults manualy
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    61
  defaults = params['sidebar_defaults']
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    62
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    63
  result = []
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    64
704
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
    65
  for item in params['sidebar_additional']:
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
    66
    result.append(item)
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
    67
614
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    68
  for url, menu_text, access_type in defaults:
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    69
    url = url % params['url_name'].lower()
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    70
    item = (url, menu_text % params, access_type)
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    71
    result.append(item)
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    72
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    73
  return result
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
1017
6ad4fdb48840 Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1007
diff changeset
    76
def getSidebarMenu(id, user, items, params):
614
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    77
  """Returns an dictionary with one sidebar entry.
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    78
704
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
    79
  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
    80
  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
    81
  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
    82
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    83
  Args:
704
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
    84
    items: see above
614
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    85
    params: a dict with params for this View
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    86
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    87
  Params usage:
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    88
    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
    89
    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
    90
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    91
    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
    92
      the required rights to see a sidebar item.
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    93
      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
    94
      is used to check access rights.
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    95
    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
    96
      heading variable in the result.
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
    97
    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
    98
637
86ec079d8302 Some docstring and missing blank lines fixes in soc.views.sitemap modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 615
diff changeset
    99
  Returns: 
86ec079d8302 Some docstring and missing blank lines fixes in soc.views.sitemap modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 615
diff changeset
   100
    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
   101
    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
   102
    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
   103
  """
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
   104
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
   105
  rights = params['rights']
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
   106
704
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
   107
  submenus = []
614
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
   108
2069
08b13ca90666 Remove unused imports in soc.views.sitemap modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1308
diff changeset
   109
  # args = SIDEBAR_ACCESS_ARGS
872
70e0b6d8ff73 Prepare access to receive args and kwargs as argument
Sverre Rabbelier <srabbelier@gmail.com>
parents: 840
diff changeset
   110
  kwargs = SIDEBAR_ACCESS_KWARGS
70e0b6d8ff73 Prepare access to receive args and kwargs as argument
Sverre Rabbelier <srabbelier@gmail.com>
parents: 840
diff changeset
   111
1017
6ad4fdb48840 Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1007
diff changeset
   112
  # reset and pre-fill the Checker's cache
6ad4fdb48840 Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1007
diff changeset
   113
  rights.setCurrentUser(id, user)
6ad4fdb48840 Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1007
diff changeset
   114
704
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
   115
  for url, menu_text, access_type in items:
614
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
   116
    try:
1007
3b66772d21a5 Major refactor of the access module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 987
diff changeset
   117
      rights.checkAccess(access_type, kwargs)
704
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
   118
      submenus.append({'url': url, 'title': menu_text})
614
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
   119
    except out_of_band.Error:
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
   120
      pass
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
   121
704
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
   122
  return submenus
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
   123
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
   124
1017
6ad4fdb48840 Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1007
diff changeset
   125
def getSidebarMenus(id, user, params=None):
704
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
   126
  """Constructs the default sidebar menu for a View.
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
   127
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
   128
  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
   129
  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
   130
  docstrings for an explanation on what they do.
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
   131
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
   132
  Args:
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
   133
    params: a dict with params for this View
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
   134
  """
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
   135
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
   136
  items = getSidebarItems(params)
1017
6ad4fdb48840 Cache access checks and disable sidebar caching
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1007
diff changeset
   137
  submenus = getSidebarMenu(id, user, items, params)
704
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
  if not submenus:
614
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
   140
    return
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
   141
697
190b65431579 Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents: 637
diff changeset
   142
  menu = {}
614
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
   143
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
   144
  if 'sidebar_heading' not in params:
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
   145
    params['sidebar_heading'] = params['name']
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
   146
697
190b65431579 Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents: 637
diff changeset
   147
  menu['heading'] = params['sidebar_heading']
704
8647e6b441fc Factor out sidebar entry construction
Sverre Rabbelier <srabbelier@gmail.com>
parents: 703
diff changeset
   148
  menu['items'] = submenus
1024
2a0ae6483825 Group dynamically generated menu items
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1017
diff changeset
   149
  menu['group'] = params['sidebar_grouping']
614
53a3e46fc512 Moved getSidebarLinks to sitemap.sidebar
Sverre Rabbelier <srabbelier@gmail.com>
parents: 589
diff changeset
   150
697
190b65431579 Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents: 637
diff changeset
   151
  menus = [menu]
190b65431579 Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents: 637
diff changeset
   152
190b65431579 Prepare for callbacks that return more than one menu
Sverre Rabbelier <srabbelier@gmail.com>
parents: 637
diff changeset
   153
  return menus