26 from django import forms |
26 from django import forms |
27 |
27 |
28 from soc.logic import cleaning |
28 from soc.logic import cleaning |
29 from soc.logic import dicts |
29 from soc.logic import dicts |
30 from soc.logic import accounts |
30 from soc.logic import accounts |
|
31 from soc.logic.models import mentor as mentor_logic |
31 from soc.logic.models import organization as org_logic |
32 from soc.logic.models import organization as org_logic |
32 from soc.logic.models import org_admin as org_admin_logic |
33 from soc.logic.models import org_admin as org_admin_logic |
33 from soc.logic.models import org_app as org_app_logic |
34 from soc.logic.models import org_app as org_app_logic |
34 from soc.views.helper import access |
35 from soc.views.helper import access |
35 from soc.views.helper import decorators |
36 from soc.views.helper import decorators |
72 [org_admin_logic.logic, all])] |
73 [org_admin_logic.logic, all])] |
73 rights['list_roles'] = [('checkHasActiveRoleForScope', |
74 rights['list_roles'] = [('checkHasActiveRoleForScope', |
74 [org_admin_logic.logic, all])] |
75 [org_admin_logic.logic, all])] |
75 rights['applicant'] = [('checkIsApplicationAccepted', |
76 rights['applicant'] = [('checkIsApplicationAccepted', |
76 org_app_logic.logic)] |
77 org_app_logic.logic)] |
|
78 rights['list_proposals'] = [('checkHasAny', [ |
|
79 [('checkHasActiveRoleForScope', [org_admin_logic.logic, all]), |
|
80 ('checkHasActiveRoleForScope', [mentor_logic.logic, all])] |
|
81 ])] |
77 |
82 |
78 new_params = {} |
83 new_params = {} |
79 new_params['logic'] = soc.logic.models.organization.logic |
84 new_params['logic'] = soc.logic.models.organization.logic |
80 new_params['rights'] = rights |
85 new_params['rights'] = rights |
81 |
86 |
97 |
102 |
98 patterns = [] |
103 patterns = [] |
99 |
104 |
100 patterns += [(r'^%(url_name)s/(?P<access_type>apply_mentor)/%(scope)s$', |
105 patterns += [(r'^%(url_name)s/(?P<access_type>apply_mentor)/%(scope)s$', |
101 'soc.views.models.%(module_name)s.apply_mentor', |
106 'soc.views.models.%(module_name)s.apply_mentor', |
102 "List of all %(name_plural)s you can apply to"),] |
107 "List of all %(name_plural)s you can apply to"), |
|
108 (r'^%(url_name)s/(?P<access_type>list_proposals)/%(key_fields)s$', |
|
109 'soc.views.models.%(module_name)s.list_proposals', |
|
110 "List of all Student Proposals for this %(name)s"),] |
103 |
111 |
104 new_params['extra_django_patterns'] = patterns |
112 new_params['extra_django_patterns'] = patterns |
105 |
113 |
106 new_params['create_extra_dynaproperties'] = { |
114 new_params['create_extra_dynaproperties'] = { |
107 'scope_path': forms.CharField(widget=forms.HiddenInput, |
115 'scope_path': forms.CharField(widget=forms.HiddenInput, |
158 return self.list(request, access_type, |
166 return self.list(request, access_type, |
159 page_name, params=list_params, filter=filter) |
167 page_name, params=list_params, filter=filter) |
160 |
168 |
161 @decorators.merge_params |
169 @decorators.merge_params |
162 @decorators.check_access |
170 @decorators.check_access |
|
171 def listProposals(self, request, access_type, |
|
172 page_name=None, params=None, **kwargs): |
|
173 """Lists all proposals for the organization given in kwargs. |
|
174 |
|
175 For params see base.View.public(). |
|
176 """ |
|
177 |
|
178 from soc.views.models import student_proposal as student_proposal_view |
|
179 |
|
180 org_entity = org_logic.logic.getFromKeyFields(kwargs) |
|
181 |
|
182 filter = {'org' : org_entity, |
|
183 'status': ['new', 'pending', 'accepted']} |
|
184 |
|
185 list_params = student_proposal_view.view.getParams().copy() |
|
186 list_params['list_description'] = 'List of %s send to %s ' %( |
|
187 list_params['name_plural'], org_entity.name) |
|
188 list_params['list_action'] = (redirects.getPublicRedirect, list_params) |
|
189 |
|
190 return self.list(request, access_type=access_type, page_name=page_name, |
|
191 params=list_params, filter=filter, **kwargs) |
|
192 |
|
193 @decorators.merge_params |
|
194 @decorators.check_access |
163 def listPublic(self, request, access_type, page_name=None, |
195 def listPublic(self, request, access_type, page_name=None, |
164 params=None, filter=None, **kwargs): |
196 params=None, filter=None, **kwargs): |
165 """See base.View.list. |
197 """See base.View.list. |
166 """ |
198 """ |
167 |
199 |
192 submenus = [] |
224 submenus = [] |
193 |
225 |
194 group_entity = role_description['group'] |
226 group_entity = role_description['group'] |
195 roles = role_description['roles'] |
227 roles = role_description['roles'] |
196 |
228 |
|
229 if roles.get('org_admin') or roles.get('mentor'): |
|
230 # add a link to view all the student proposals |
|
231 submenu = (redirects.getListProposalsRedirect(group_entity, params), |
|
232 "View all student proposals", 'any_access') |
|
233 submenus.append(submenu) |
|
234 |
|
235 |
197 if roles.get('org_admin'): |
236 if roles.get('org_admin'): |
198 # add a link to the management page |
237 # add a link to the management page |
199 submenu = (redirects.getListRolesRedirect(group_entity, params), |
238 submenu = (redirects.getListRolesRedirect(group_entity, params), |
200 "Manage Admins and Mentors", 'any_access') |
239 "Manage Admins and Mentors", 'any_access') |
201 submenus.append(submenu) |
240 submenus.append(submenu) |
226 submenus.append(submenu) |
265 submenus.append(submenu) |
227 |
266 |
228 submenu = (redirects.getListDocumentsRedirect(group_entity, 'org'), |
267 submenu = (redirects.getListDocumentsRedirect(group_entity, 'org'), |
229 "List Documents", 'any_access') |
268 "List Documents", 'any_access') |
230 submenus.append(submenu) |
269 submenus.append(submenu) |
|
270 |
231 |
271 |
232 if roles.get('org_admin'): |
272 if roles.get('org_admin'): |
233 # add a link to the resign page |
273 # add a link to the resign page |
234 submenu = (redirects.getManageRedirect(roles['org_admin'], |
274 submenu = (redirects.getManageRedirect(roles['org_admin'], |
235 {'url_name': 'org_admin'}), |
275 {'url_name': 'org_admin'}), |
239 # add a link to the edit page |
279 # add a link to the edit page |
240 submenu = (redirects.getEditRedirect(roles['org_admin'], |
280 submenu = (redirects.getEditRedirect(roles['org_admin'], |
241 {'url_name': 'org_admin'}), |
281 {'url_name': 'org_admin'}), |
242 "Edit My Admin Profile", 'any_access') |
282 "Edit My Admin Profile", 'any_access') |
243 submenus.append(submenu) |
283 submenus.append(submenu) |
|
284 |
244 |
285 |
245 if roles.get('mentor'): |
286 if roles.get('mentor'): |
246 # add a link to the resign page |
287 # add a link to the resign page |
247 submenu = (redirects.getManageRedirect(roles['mentor'], |
288 submenu = (redirects.getManageRedirect(roles['mentor'], |
248 {'url_name' : 'mentor'}), |
289 {'url_name' : 'mentor'}), |