app/soc/views/models/program.py
changeset 1863 d5272c2ded9f
parent 1857 febcaeb4234b
child 1865 f00720cddea0
equal deleted inserted replaced
1862:e913c635575b 1863:d5272c2ded9f
   107           'Assign slots (JSON)'),
   107           'Assign slots (JSON)'),
   108         (r'^%(url_name)s/(?P<access_type>show_duplicates)/%(key_fields)s$',
   108         (r'^%(url_name)s/(?P<access_type>show_duplicates)/%(key_fields)s$',
   109           'soc.views.models.%(module_name)s.show_duplicates',
   109           'soc.views.models.%(module_name)s.show_duplicates',
   110           'Show duplicate slot assignments'),
   110           'Show duplicate slot assignments'),
   111         (r'^%(url_name)s/(?P<access_type>assigned_proposals)/%(key_fields)s$',
   111         (r'^%(url_name)s/(?P<access_type>assigned_proposals)/%(key_fields)s$',
   112         'soc.views.models.%(module_name)s.assigned_proposals',
   112           'soc.views.models.%(module_name)s.assigned_proposals',
   113         "Assigned proposals for multiple orgs"),
   113           "Assigned proposals for multiple orgs"),
       
   114         (r'^%(url_name)s/(?P<access_type>accepted_orgs)/%(key_fields)s$',
       
   115           'soc.views.models.%(module_name)s.accepted_orgs',
       
   116           "List all accepted orgs"),
   114         ]
   117         ]
   115 
   118 
   116     new_params['extra_django_patterns'] = patterns
   119     new_params['extra_django_patterns'] = patterns
   117 
   120 
   118     # TODO add clean field to check for uniqueness in link_id and scope_path
   121     # TODO add clean field to check for uniqueness in link_id and scope_path
   162     new_params['references'] = document_references
   165     new_params['references'] = document_references
   163 
   166 
   164     params = dicts.merge(params, new_params, sub_merge=True)
   167     params = dicts.merge(params, new_params, sub_merge=True)
   165 
   168 
   166     super(View, self).__init__(params=params)
   169     super(View, self).__init__(params=params)
       
   170 
       
   171   @decorators.merge_params
       
   172   @decorators.check_access
       
   173   def acceptedOrgs(self, request, access_type,
       
   174                    page_name=None, params=None, filter=None, **kwargs):
       
   175     """See base.View.list.
       
   176     """
       
   177 
       
   178     contents = []
       
   179     logic = params['logic']
       
   180 
       
   181     program_entity = logic.getFromKeyFieldsOr404(kwargs)
       
   182 
       
   183     filter = {
       
   184         'status': 'accepted',
       
   185         'scope': program_entity,
       
   186         }
       
   187 
       
   188     from soc.views.models import org_app as org_app_view
       
   189     aa_params = org_app_view.view.getParams().copy() # accepted applications
       
   190 
       
   191     # define the list redirect action to show the notification
       
   192     aa_params['list_action'] = (redirects.getPublicRedirect, aa_params)
       
   193     aa_params['list_description'] = ugettext(
       
   194         "An overview of accepted org applications.")
       
   195 
       
   196     aa_list = lists.getListContent(request, aa_params, filter, idx=0,
       
   197                                    need_content=True)
       
   198 
       
   199     if aa_list:
       
   200       contents.append(aa_list)
       
   201 
       
   202     filter['status'] = ['new', 'active']
       
   203 
       
   204     from soc.views.models import organization as org_view
       
   205     ao_params = org_view.view.getParams().copy() # active orgs
       
   206 
       
   207     ao_params['list_action'] = (redirects.getHomeRedirect, ao_params)
       
   208     ao_params['list_description'] = ugettext(
       
   209         "An overview of all organizations.")
       
   210 
       
   211     ao_list = lists.getListContent(request, ao_params, filter, idx=1,
       
   212                                    need_content=True)
       
   213 
       
   214     if ao_list:
       
   215       contents.append(ao_list)
       
   216 
       
   217     return self._list(request, params, contents, page_name)
   167 
   218 
   168   @decorators.merge_params
   219   @decorators.merge_params
   169   @decorators.check_access
   220   @decorators.check_access
   170   def slots(self, request, acces_type, page_name=None, params=None, **kwargs):
   221   def slots(self, request, acces_type, page_name=None, params=None, **kwargs):
   171     """Returns a JSON object with all orgs allocation.
   222     """Returns a JSON object with all orgs allocation.
   568       if timeline_helper.isActivePeriod(timeline_entity, 'student_signup'):
   619       if timeline_helper.isActivePeriod(timeline_entity, 'student_signup'):
   569         # this user does not have a role yet for this program
   620         # this user does not have a role yet for this program
   570         items += [('/student/apply/%s' % (program_entity.key().name()),
   621         items += [('/student/apply/%s' % (program_entity.key().name()),
   571             "Register as a Student", 'any_access')]
   622             "Register as a Student", 'any_access')]
   572 
   623 
   573     if timeline_helper.isAfterEvent(timeline_entity,
   624     deadline = 'accepted_organization_announced_deadline'
   574         'accepted_organization_announced_deadline'):
   625 
       
   626     if timeline_helper.isAfterEvent(timeline_entity, deadline):
       
   627       url = redirects.getAcceptedOrgsRedirect(program_entity, params)
   575       # add a link to list all the organizations
   628       # add a link to list all the organizations
   576       items += [(redirects.getPublicListRedirect(program_entity, 
   629       items += [(url, "List participating Organizations", 'any_access')]
   577           {'url_name': 'org'}),
       
   578           "List participating Organizations", 'any_access')]
       
   579 
   630 
   580       if not student_entity:
   631       if not student_entity:
   581         # add apply to become a mentor link
   632         # add apply to become a mentor link
   582         items += [('/org/apply_mentor/%s' % (program_entity.key().name()),
   633         items += [('/org/apply_mentor/%s' % (program_entity.key().name()),
   583          "Apply to become a Mentor", 'any_access')]
   634          "Apply to become a Mentor", 'any_access')]
   616     return items
   667     return items
   617 
   668 
   618 
   669 
   619 view = View()
   670 view = View()
   620 
   671 
       
   672 accepted_orgs = decorators.view(view.acceptedOrgs)
   621 admin = decorators.view(view.admin)
   673 admin = decorators.view(view.admin)
   622 assign_slots = decorators.view(view.assignSlots)
   674 assign_slots = decorators.view(view.assignSlots)
   623 assigned_proposals = decorators.view(view.assignedProposals)
   675 assigned_proposals = decorators.view(view.assignedProposals)
   624 create = decorators.view(view.create)
   676 create = decorators.view(view.create)
   625 delete = decorators.view(view.delete)
   677 delete = decorators.view(view.delete)