app/soc/views/models/organization.py
changeset 1489 e12e08c8b258
parent 1463 d25793debbfb
child 1490 cb7a272bfd04
equal deleted inserted replaced
1488:4b7cec48e26c 1489:e12e08c8b258
    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'}), 
   266 create = view.create
   307 create = view.create
   267 delete = view.delete
   308 delete = view.delete
   268 edit = view.edit
   309 edit = view.edit
   269 home = view.home
   310 home = view.home
   270 list = view.list
   311 list = view.list
       
   312 list_proposals = view.listProposals
   271 list_public = view.listPublic
   313 list_public = view.listPublic
   272 list_requests = view.listRequests
   314 list_requests = view.listRequests
   273 list_roles = view.listRoles
   315 list_roles = view.listRoles
   274 public = view.public
   316 public = view.public
   275 export = view.export
   317 export = view.export