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.models import program as program_logic |
30 from soc.logic.models import program as program_logic |
31 from soc.logic.models import student as student_logic |
31 from soc.logic.models import student as student_logic |
32 from soc.logic.models import user as user_logic |
32 from soc.logic.models import user as user_logic |
|
33 from soc.views import out_of_band |
33 from soc.views.helper import access |
34 from soc.views.helper import access |
34 from soc.views.helper import decorators |
35 from soc.views.helper import decorators |
35 from soc.views.helper import dynaform |
36 from soc.views.helper import dynaform |
36 from soc.views.helper import redirects |
37 from soc.views.helper import redirects |
37 from soc.views.helper import widgets |
38 from soc.views.helper import widgets |
64 ('checkIsActivePeriod', ['student_signup', 'scope_path']), |
65 ('checkIsActivePeriod', ['student_signup', 'scope_path']), |
65 'checkIsNotParticipatingInProgramInScope', |
66 'checkIsNotParticipatingInProgramInScope', |
66 ] |
67 ] |
67 rights['manage'] = [ |
68 rights['manage'] = [ |
68 ('checkIsAllowedToManageRole', [soc.logic.models.host.logic])] |
69 ('checkIsAllowedToManageRole', [soc.logic.models.host.logic])] |
|
70 rights['list_projects'] = [ |
|
71 ('checkHasActiveRoleForScope', student_logic.logic)] |
69 |
72 |
70 new_params = {} |
73 new_params = {} |
71 new_params['logic'] = soc.logic.models.student.logic |
74 new_params['logic'] = soc.logic.models.student.logic |
72 new_params['group_logic'] = program_logic.logic |
75 new_params['group_logic'] = program_logic.logic |
73 new_params['group_view'] = program_view.view |
76 new_params['group_view'] = program_view.view |
82 new_params['sidebar_grouping'] = 'Students' |
85 new_params['sidebar_grouping'] = 'Students' |
83 |
86 |
84 # add apply pattern |
87 # add apply pattern |
85 patterns = [(r'^%(url_name)s/(?P<access_type>apply)/%(scope)s$', |
88 patterns = [(r'^%(url_name)s/(?P<access_type>apply)/%(scope)s$', |
86 'soc.views.models.%(module_name)s.apply', |
89 'soc.views.models.%(module_name)s.apply', |
87 'Become a %(name)s'),] |
90 'Become a %(name)s'), |
|
91 (r'^%(url_name)s/(?P<access_type>list_projects)/%(scope)s$', |
|
92 'soc.views.models.%(module_name)s.list_projects', |
|
93 'List of my Student Projects'),] |
|
94 |
88 new_params['extra_django_patterns'] = patterns |
95 new_params['extra_django_patterns'] = patterns |
89 |
96 |
90 new_params['extra_dynaexclude'] = ['agreed_to_tos', 'school'] |
97 new_params['extra_dynaexclude'] = ['agreed_to_tos', 'school'] |
91 |
98 |
92 new_params['create_extra_dynaproperties'] = { |
99 new_params['create_extra_dynaproperties'] = { |
147 params['create_form'] = params['user_create_form'] |
154 params['create_form'] = params['user_create_form'] |
148 |
155 |
149 return self.create(request, access_type='unspecified', page_name=page_name, |
156 return self.create(request, access_type='unspecified', page_name=page_name, |
150 params=params, link_id=user_entity.link_id, **kwargs) |
157 params=params, link_id=user_entity.link_id, **kwargs) |
151 |
158 |
|
159 @decorators.merge_params |
|
160 @decorators.check_access |
|
161 def listProjects(self, request, access_type, |
|
162 page_name=None, params=None, **kwargs): |
|
163 """View that lists all of the current user's Student Projects for the |
|
164 Program given as Scope. |
|
165 """ |
|
166 |
|
167 from soc.views.models import student_project as project_view |
|
168 |
|
169 user_entity = user_logic.logic.getForCurrentAccount() |
|
170 |
|
171 fields = {'link_id': user_entity.link_id, |
|
172 'scope_path': kwargs['scope_path']} |
|
173 |
|
174 try: |
|
175 student_entity = student_logic.logic.getFromKeyFieldsOr404(fields) |
|
176 except out_of_band.Error, error: |
|
177 return helper.responses.errorResponse( |
|
178 error, request, template=params['error_public']) |
|
179 |
|
180 # set the fields we need for the Student Project list |
|
181 fields = {'student': student_entity} |
|
182 |
|
183 list_params = project_view.view.getParams().copy() |
|
184 list_params['list_description'] = ugettext( |
|
185 'List of my Student Projects for %s') %(student_entity.scope.name) |
|
186 list_params['list_action'] = (redirects.getStudentEditRedirect, list_params) |
|
187 |
|
188 return project_view.view.list(request, access_type, page_name=page_name, |
|
189 params=list_params, filter=fields) |
|
190 |
152 def _editPost(self, request, entity, fields): |
191 def _editPost(self, request, entity, fields): |
153 """See base.View._editPost(). |
192 """See base.View._editPost(). |
154 """ |
193 """ |
155 |
194 |
156 if not entity: |
195 if not entity: |
210 apply = decorators.view(view.apply) |
249 apply = decorators.view(view.apply) |
211 create = decorators.view(view.create) |
250 create = decorators.view(view.create) |
212 delete = decorators.view(view.delete) |
251 delete = decorators.view(view.delete) |
213 edit = decorators.view(view.edit) |
252 edit = decorators.view(view.edit) |
214 list = decorators.view(view.list) |
253 list = decorators.view(view.list) |
|
254 list_projects = decorators.view(view.listProjects) |
215 manage = decorators.view(view.manage) |
255 manage = decorators.view(view.manage) |
216 public = decorators.view(view.public) |
256 public = decorators.view(view.public) |
217 export = decorators.view(view.export) |
257 export = decorators.view(view.export) |