26 from django import forms |
26 from django import forms |
27 |
27 |
28 from soc.logic import dicts |
28 from soc.logic import dicts |
29 from soc.logic.models import program as program_logic |
29 from soc.logic.models import program as program_logic |
30 from soc.views import helper |
30 from soc.views import helper |
|
31 from soc.views import out_of_band |
31 from soc.views.helper import access |
32 from soc.views.helper import access |
|
33 from soc.views.helper import decorators |
32 from soc.views.helper import redirects |
34 from soc.views.helper import redirects |
33 from soc.views.helper import widgets |
35 from soc.views.helper import widgets |
34 from soc.views.models import presence |
36 from soc.views.models import presence |
35 from soc.views.models import document as document_view |
37 from soc.views.models import document as document_view |
36 from soc.views.models import sponsor as sponsor_view |
38 from soc.views.models import sponsor as sponsor_view |
115 properties = {'scope_path': key_name} |
117 properties = {'scope_path': key_name} |
116 |
118 |
117 timeline = timeline_logic.updateOrCreateFromFields(properties, properties) |
119 timeline = timeline_logic.updateOrCreateFromFields(properties, properties) |
118 return timeline |
120 return timeline |
119 |
121 |
|
122 @decorators.merge_params |
120 def getExtraMenus(self, id, user, params=None): |
123 def getExtraMenus(self, id, user, params=None): |
121 """Returns the extra menu's for this view. |
124 """Returns the extra menu's for this view. |
122 |
125 |
123 A menu item is generated for each program that is currently |
126 A menu item is generated for each program that is currently |
124 running. The public page for each program is added as menu item, |
127 running. The public page for each program is added as menu item, |
126 |
129 |
127 Args: |
130 Args: |
128 params: a dict with params for this View. |
131 params: a dict with params for this View. |
129 """ |
132 """ |
130 |
133 |
131 params = dicts.merge(params, self._params) |
|
132 logic = params['logic'] |
134 logic = params['logic'] |
|
135 rights = params['rights'] |
133 |
136 |
134 entities = logic.getForLimitAndOffset(1000) |
137 entities = logic.getForLimitAndOffset(1000) |
135 |
138 |
136 doc_params = document_view.view.getParams() |
139 doc_params = document_view.view.getParams() |
137 menus = [] |
140 menus = [] |
138 |
141 |
|
142 rights.setCurrentUser(id, user) |
|
143 filter_args = {} |
|
144 |
139 for entity in entities: |
145 for entity in entities: |
|
146 filter_args['scope_path'] = entity.key().name() |
|
147 try: |
|
148 rights.doCheck('checkIsHost', filter_args, []) |
|
149 except out_of_band.Error: |
|
150 continue |
|
151 |
140 menu = {} |
152 menu = {} |
141 menu['heading'] = entity.short_name |
153 menu['heading'] = entity.short_name |
142 items = document_view.view.getMenusForScope(entity, params) |
154 items = document_view.view.getMenusForScope(entity, params) |
143 items += [(redirects.getEditRedirect(entity, params),'Edit','edit')] |
155 items += [(redirects.getEditRedirect(entity, params),'Edit','edit')] |
144 menu['items'] = sidebar.getSidebarMenu(id, user, items, params=doc_params) |
156 menu['items'] = sidebar.getSidebarMenu(id, user, items, params=params) |
145 menu['group'] = 'Programs' |
157 menu['group'] = 'Programs' |
146 menus.append(menu) |
158 menus.append(menu) |
147 |
159 |
148 return menus |
160 return menus |
149 |
161 |