56 rights = access.Checker(params) |
56 rights = access.Checker(params) |
57 rights['any_access'] = ['allow'] |
57 rights['any_access'] = ['allow'] |
58 rights['show'] = ['allow'] |
58 rights['show'] = ['allow'] |
59 rights['create'] = ['checkIsHost'] |
59 rights['create'] = ['checkIsHost'] |
60 rights['edit'] = ['checkIsHostForProgram'] |
60 rights['edit'] = ['checkIsHostForProgram'] |
61 rights['delete'] = ['checkIsHostForProgram'] |
61 rights['delete'] = ['checkIsDeveloper'] |
62 |
62 |
63 new_params = {} |
63 new_params = {} |
64 new_params['logic'] = soc.logic.models.program.logic |
64 new_params['logic'] = soc.logic.models.program.logic |
65 new_params['rights'] = rights |
65 new_params['rights'] = rights |
66 |
66 |
68 new_params['scope_redirect'] = redirects.getCreateRedirect |
68 new_params['scope_redirect'] = redirects.getCreateRedirect |
69 |
69 |
70 new_params['name'] = "Program" |
70 new_params['name'] = "Program" |
71 new_params['sidebar_grouping'] = 'Programs' |
71 new_params['sidebar_grouping'] = 'Programs' |
72 |
72 |
73 new_params['edit_template'] = 'soc/program/edit.html' |
|
74 |
|
75 new_params['extra_dynaexclude'] = ['timeline'] |
73 new_params['extra_dynaexclude'] = ['timeline'] |
76 |
74 |
|
75 # TODO add clean field to check for uniqueness in link_id and scope_path |
77 new_params['create_extra_dynafields'] = { |
76 new_params['create_extra_dynafields'] = { |
78 'description': forms.fields.CharField(widget=helper.widgets.TinyMCE( |
77 'description': forms.fields.CharField(widget=helper.widgets.TinyMCE( |
79 attrs={'rows':10, 'cols':40})), |
78 attrs={'rows':10, 'cols':40})), |
80 |
79 |
81 'scope_path': forms.CharField(widget=forms.HiddenInput, required=True), |
80 'scope_path': forms.CharField(widget=forms.HiddenInput, required=True), |
135 """ |
134 """ |
136 |
135 |
137 logic = params['logic'] |
136 logic = params['logic'] |
138 rights = params['rights'] |
137 rights = params['rights'] |
139 |
138 |
140 entities = logic.getForLimitAndOffset(1000) |
139 # only get all invisible and visible programs |
|
140 fields = {'status':['invisible', 'visible']} |
|
141 entities = logic.getForFields(fields) |
141 |
142 |
142 doc_params = document_view.view.getParams() |
143 #TODO(ljvderijk) Add timeline dependent entries |
|
144 |
143 menus = [] |
145 menus = [] |
144 |
146 |
145 rights.setCurrentUser(id, user) |
147 rights.setCurrentUser(id, user) |
146 filter_args = {} |
148 filter_args = {} |
147 |
149 |
148 for entity in entities: |
150 for entity in entities: |
149 filter_args['entity'] = entity |
151 items = [] |
150 try: |
|
151 rights.doCheck('checkIsProgramActive', filter_args, []) |
|
152 except out_of_band.Error: |
|
153 continue |
|
154 |
152 |
155 items = document_view.view.getMenusForScope(entity, params) |
153 if entity.status == 'visible': |
|
154 # show the documents for this program, even for not logged in users |
|
155 items += document_view.view.getMenusForScope(entity, params) |
156 |
156 |
157 try: |
157 try: |
158 rights.doCachedCheck('checkIsHost', {}, []) |
158 # check if the current user is a host for this program |
159 items += [(redirects.getEditRedirect(entity, params),'Edit','any_access')] |
159 rights.doCachedCheck('checkIsHostForProgram', |
|
160 {'scope_path' : entity.scope_path, |
|
161 'link_id' : entity.link_id, |
|
162 'workflow' : entity.workflow}, []) |
|
163 |
|
164 if entity.status == 'invisible': |
|
165 # still add the document links so hosts can see how it looks like |
|
166 items += document_view.view.getMenusForScope(entity, params) |
|
167 |
|
168 # add link to edit Program Profile |
|
169 items += [(redirects.getEditRedirect(entity, params), |
|
170 'Edit Program Profile','any_access')] |
|
171 # add link to edit Program Timeline |
|
172 items += [(redirects.getEditRedirect(entity, {'url_name': 'timeline'}), |
|
173 "Edit Program Timeline", 'any_access')] |
|
174 # add link to create a new Program Document |
160 items += [(redirects.getCreateDocumentRedirect(entity, 'program'), |
175 items += [(redirects.getCreateDocumentRedirect(entity, 'program'), |
161 "Create new document", 'any_access')] |
176 "Create new document", 'any_access')] |
|
177 |
162 except out_of_band.Error: |
178 except out_of_band.Error: |
163 pass |
179 pass |
164 |
180 |
165 menu = {} |
181 menu = {} |
166 menu['heading'] = entity.short_name |
182 menu['heading'] = entity.short_name |