app/soc/views/models/program.py
changeset 2778 44bb0e89cc1b
parent 2771 eb654b51053b
child 2782 3944749338d3
equal deleted inserted replaced
2777:9dd7c21e330b 2778:44bb0e89cc1b
    88     """
    88     """
    89 
    89 
    90     rights = access.Checker(params)
    90     rights = access.Checker(params)
    91     rights['any_access'] = ['allow']
    91     rights['any_access'] = ['allow']
    92     rights['show'] = ['allow']
    92     rights['show'] = ['allow']
    93     rights['create'] = [('checkSeeded', ['checkHasActiveRoleForScope', 
    93     rights['create'] = [('checkSeeded', ['checkHasActiveRoleForScope',
    94         host_logic.logic])]
    94         host_logic.logic])]
    95     rights['edit'] = ['checkIsHostForProgram']
    95     rights['edit'] = ['checkIsHostForProgram']
    96     rights['delete'] = ['checkIsDeveloper']
    96     rights['delete'] = ['checkIsDeveloper']
    97     rights['assign_slots'] = ['checkIsHostForProgram']
    97     rights['assign_slots'] = ['checkIsHostForProgram']
    98     rights['slots'] = ['checkIsHostForProgram']
    98     rights['slots'] = ['checkIsHostForProgram']
   100     rights['assigned_proposals'] = ['checkIsHostForProgram']
   100     rights['assigned_proposals'] = ['checkIsHostForProgram']
   101     rights['accepted_orgs'] = [('checkIsAfterEvent',
   101     rights['accepted_orgs'] = [('checkIsAfterEvent',
   102         ['accepted_organization_announced_deadline',
   102         ['accepted_organization_announced_deadline',
   103          '__all__', program_logic.logic])]
   103          '__all__', program_logic.logic])]
   104     rights['list_projects'] = [('checkIsAfterEvent',
   104     rights['list_projects'] = [('checkIsAfterEvent',
   105         ['accepted_students_announced_deadline', 
   105         ['accepted_students_announced_deadline',
   106          '__all__', program_logic.logic])]
   106          '__all__', program_logic.logic])]
   107 
   107 
   108     new_params = {}
   108     new_params = {}
   109     new_params['logic'] = soc.logic.models.program.logic
   109     new_params['logic'] = soc.logic.models.program.logic
   110     new_params['rights'] = rights
   110     new_params['rights'] = rights
   270 
   270 
   271     filter['status'] = ['new', 'active']
   271     filter['status'] = ['new', 'active']
   272 
   272 
   273     from soc.views.models.organization import view as org_view
   273     from soc.views.models.organization import view as org_view
   274     ao_params = org_view.getParams().copy() # active orgs
   274     ao_params = org_view.getParams().copy() # active orgs
   275     ao_list = self._getAcceptedOrgsList(description, ao_params, 
   275     ao_list = self._getAcceptedOrgsList(description, ao_params,
   276         filter, use_cache)
   276         filter, use_cache)
   277 
   277 
   278     contents.append(ao_list)
   278     contents.append(ao_list)
   279 
   279 
   280     params = params.copy()
   280     params = params.copy()
   320       request: the standard Django HTTP request object
   320       request: the standard Django HTTP request object
   321       access_type : the name of the access type which should be checked
   321       access_type : the name of the access type which should be checked
   322       page_name: the page name displayed in templates as page and header title
   322       page_name: the page name displayed in templates as page and header title
   323       params: a dict with params for this View, not used
   323       params: a dict with params for this View, not used
   324     """
   324     """
   325     
   325 
   326     from django.utils import simplejson
   326     from django.utils import simplejson
   327 
   327 
   328     program = program_logic.logic.getFromKeyFieldsOr404(kwargs)
   328     program = program_logic.logic.getFromKeyFieldsOr404(kwargs)
   329     program_slots = program.slots
   329     program_slots = program.slots
   330 
   330 
   432 
   432 
   433   @decorators.merge_params
   433   @decorators.merge_params
   434   @decorators.check_access
   434   @decorators.check_access
   435   def showDuplicates(self, request, access_type, page_name=None,
   435   def showDuplicates(self, request, access_type, page_name=None,
   436                      params=None, **kwargs):
   436                      params=None, **kwargs):
   437     """View in which a host can see which students have been assigned 
   437     """View in which a host can see which students have been assigned
   438        multiple slots.
   438        multiple slots.
   439 
   439 
   440     For params see base.view.Public().
   440     For params see base.view.Public().
   441     """
   441     """
   442 
   442 
   527 
   527 
   528     fields = {'scope': program_entity,
   528     fields = {'scope': program_entity,
   529               'slots >': 0,
   529               'slots >': 0,
   530               'status': 'active'}
   530               'status': 'active'}
   531 
   531 
   532     org_entities = org_logic.logic.getForFields(fields, 
   532     org_entities = org_logic.logic.getForFields(fields,
   533         limit=limit, offset=offset)
   533         limit=limit, offset=offset)
   534 
   534 
   535     orgs_data = {}
   535     orgs_data = {}
   536     proposals_data = []
   536     proposals_data = []
   537 
   537 
   741       # add the organization signup link
   741       # add the organization signup link
   742       items += [
   742       items += [
   743           (redirects.getApplyRedirect(program_entity, {'url_name': 'org_app'}),
   743           (redirects.getApplyRedirect(program_entity, {'url_name': 'org_app'}),
   744           "Apply to become an Organization", 'any_access')]
   744           "Apply to become an Organization", 'any_access')]
   745 
   745 
   746     if user and timeline_helper.isAfterEvent(timeline_entity, 
   746     if user and timeline_helper.isAfterEvent(timeline_entity,
   747         'org_signup_start'):
   747         'org_signup_start'):
   748       filter = {
   748       filter = {
   749           'applicant': user,
   749           'applicant': user,
   750           'scope': program_entity,
   750           'scope': program_entity,
   751           }
   751           }
   803           {'url_name':'program'}),
   803           {'url_name':'program'}),
   804           "List all student projects", 'any_access')]
   804           "List all student projects", 'any_access')]
   805 
   805 
   806     return items
   806     return items
   807 
   807 
   808   def _getStudentEntries(self, program_entity, student_entity, 
   808   def _getStudentEntries(self, program_entity, student_entity,
   809                          params, id, user):
   809                          params, id, user):
   810     """Returns a list with menu items for students in a specific program.
   810     """Returns a list with menu items for students in a specific program.
   811     """
   811     """
   812 
   812 
   813     items = []
   813     items = []
   822     if timeline_helper.isAfterEvent(timeline_entity, 'student_signup_start'):
   822     if timeline_helper.isAfterEvent(timeline_entity, 'student_signup_start'):
   823       items += [(redirects.getListSelfRedirect(student_entity,
   823       items += [(redirects.getListSelfRedirect(student_entity,
   824           {'url_name':'student_proposal'}),
   824           {'url_name':'student_proposal'}),
   825           "List my Student Proposals", 'any_access')]
   825           "List my Student Proposals", 'any_access')]
   826 
   826 
   827     items += [(redirects.getEditRedirect(student_entity, 
   827     items += [(redirects.getEditRedirect(student_entity,
   828         {'url_name': 'student'}),
   828         {'url_name': 'student'}),
   829         "Edit my Student Profile", 'any_access')]
   829         "Edit my Student Profile", 'any_access')]
   830 
   830 
   831     if timeline_helper.isAfterEvent(timeline_entity,
   831     if timeline_helper.isAfterEvent(timeline_entity,
   832                                    'accepted_students_announced_deadline'):
   832                                    'accepted_students_announced_deadline'):