app/soc/views/models/student.py
changeset 2154 a0a1594e58ae
parent 2076 1cd180cc56c9
child 2157 139cd2731412
equal deleted inserted replaced
2153:7c8adb14c7fb 2154:a0a1594e58ae
    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)