app/soc/views/models/organization.py
changeset 1325 8368086dd3a7
parent 1317 fad74cf4e5da
child 1343 4ba39392c854
equal deleted inserted replaced
1324:8cf30dee8048 1325:8368086dd3a7
    29 from soc.logic import dicts
    29 from soc.logic import dicts
    30 from soc.logic.models import organization as org_logic
    30 from soc.logic.models import organization as org_logic
    31 from soc.logic.models import org_admin as org_admin_logic
    31 from soc.logic.models import org_admin as org_admin_logic
    32 from soc.logic.models import org_app as org_app_logic
    32 from soc.logic.models import org_app as org_app_logic
    33 from soc.views.helper import access
    33 from soc.views.helper import access
       
    34 from soc.views.helper import decorators
    34 from soc.views.helper import dynaform
    35 from soc.views.helper import dynaform
       
    36 from soc.views.helper import lists
    35 from soc.views.helper import redirects
    37 from soc.views.helper import redirects
    36 from soc.views.helper import widgets
    38 from soc.views.helper import widgets
    37 from soc.views.models import group
    39 from soc.views.models import group
    38 from soc.views.models import program as program_view
    40 from soc.views.models import program as program_view
    39 
    41 
    40 import soc.models.organization
    42 import soc.models.organization
    41 import soc.logic.models.organization
    43 import soc.logic.models.organization
    42 
    44 
    43 
       
    44 class View(group.View):
    45 class View(group.View):
    45   """View methods for the Organization model.
    46   """View methods for the Organization model.
    46   """
    47   """
    47 
    48 
    48   def __init__(self, params=None):
    49   def __init__(self, params=None):
    52     Params:
    53     Params:
    53       original_params: a dict with params for this View
    54       original_params: a dict with params for this View
    54     """
    55     """
    55 
    56 
    56     rights = access.Checker(params)
    57     rights = access.Checker(params)
       
    58     rights['any_access'] = ['allow']
       
    59     rights['show'] = ['allow']
    57     rights['create'] = ['checkIsDeveloper']
    60     rights['create'] = ['checkIsDeveloper']
    58     rights['edit'] = [('checkHasActiveRoleForScope', 
    61     rights['edit'] = [('checkHasActiveRoleForScope', 
    59                            [org_admin_logic.logic, 'link_id']),
    62                            [org_admin_logic.logic, 'link_id']),
    60                       ('checkIsActive', [org_logic.logic, None])]
    63                       ('checkIsActive', [org_logic.logic, None])]
    61     rights['delete'] = ['checkIsDeveloper']
    64     rights['delete'] = ['checkIsDeveloper']
    62     rights['home'] = ['allow']
    65     rights['home'] = ['allow']
    63     rights['list'] = ['checkIsDeveloper']
    66     rights['public_list'] = ['allow']
    64     rights['list_requests'] = [('checkHasActiveRoleForScope', 
    67     rights['list_requests'] = [('checkHasActiveRoleForScope', 
    65                                 [org_admin_logic.logic, 'link_id'])]
    68                                 [org_admin_logic.logic, 'link_id'])]
    66     rights['list_roles'] = [('checkHasActiveRoleForScope', 
    69     rights['list_roles'] = [('checkHasActiveRoleForScope', 
    67                              [org_admin_logic.logic, 'link_id'])]
    70                              [org_admin_logic.logic, 'link_id'])]
    68     rights['applicant'] = [('checkIsApplicationAccepted',
    71     rights['applicant'] = [('checkIsApplicationAccepted',
    69                             org_app_logic.logic)]
    72                             org_app_logic.logic)]
    70 
    73 
    71     new_params = {}
    74     new_params = {}
    72     new_params['logic'] = soc.logic.models.organization.logic
    75     new_params['logic'] = soc.logic.models.organization.logic
       
    76     new_params['rights'] = rights
    73 
    77 
    74     new_params['scope_view'] = program_view
    78     new_params['scope_view'] = program_view
    75     new_params['scope_redirect'] = redirects.getCreateRedirect
    79     new_params['scope_redirect'] = redirects.getCreateRedirect
    76 
    80 
    77     new_params['name'] = "Organization"
    81     new_params['name'] = "Organization"
    83     new_params['list_row'] = 'soc/organization/list/row.html'
    87     new_params['list_row'] = 'soc/organization/list/row.html'
    84     new_params['list_heading'] = 'soc/organization/list/heading.html'
    88     new_params['list_heading'] = 'soc/organization/list/heading.html'
    85 
    89 
    86     new_params['application_logic'] = org_app_logic
    90     new_params['application_logic'] = org_app_logic
    87     new_params['group_applicant_url'] = True
    91     new_params['group_applicant_url'] = True
       
    92     new_params['sans_link_id_public_list'] = True
    88 
    93 
    89     new_params['create_extra_dynafields'] = {
    94     new_params['create_extra_dynafields'] = {
    90         'scope_path': forms.CharField(widget=forms.HiddenInput,
    95         'scope_path': forms.CharField(widget=forms.HiddenInput,
    91                                    required=True),
    96                                    required=True),
    92         'clean': cleaning.validate_new_group('link_id', 'scope_path',
    97         'clean': cleaning.validate_new_group('link_id', 'scope_path',
    93             soc.logic.models.organization, org_app_logic)}
    98             soc.logic.models.organization, org_app_logic)
       
    99         }
    94 
   100 
    95     # get rid of the clean method
   101     # get rid of the clean method
    96     new_params['edit_extra_dynafields'] = {
   102     new_params['edit_extra_dynafields'] = {
    97         'clean': (lambda x: x.cleaned_data)}
   103         'clean': (lambda x: x.cleaned_data)}
    98 
   104 
   102 
   108 
   103     # create and store the special form for applicants
   109     # create and store the special form for applicants
   104     updated_fields = {
   110     updated_fields = {
   105         'link_id': forms.CharField(widget=widgets.ReadOnlyInput(),
   111         'link_id': forms.CharField(widget=widgets.ReadOnlyInput(),
   106             required=False),
   112             required=False),
   107         'clean_link_id': cleaning.clean_link_id('link_id')}
   113         'clean_link_id': cleaning.clean_link_id('link_id')
       
   114         }
   108 
   115 
   109     applicant_create_form = dynaform.extendDynaForm(
   116     applicant_create_form = dynaform.extendDynaForm(
   110         dynaform = self._params['create_form'],
   117         dynaform = self._params['create_form'],
   111         dynafields = updated_fields)
   118         dynafields = updated_fields)
   112 
   119 
   113     params['applicant_create_form'] = applicant_create_form
   120     params['applicant_create_form'] = applicant_create_form
   114 
   121 
       
   122   @decorators.merge_params
       
   123   @decorators.check_access
       
   124   def listPublic(self, request, access_type, page_name=None,
       
   125            params=None, filter=None, **kwargs):
       
   126     """See base.View.list.
       
   127     """
       
   128 
       
   129     new_params = {}
       
   130     new_params['list_action'] = (redirects.getPublicRedirect, params)
       
   131     # safe to merge them the wrong way around because of @merge_params
       
   132     params = dicts.merge(new_params, params)
       
   133 
       
   134     new_filter = {}
       
   135     new_filter['status'] = 'active'
       
   136     filter = dicts.merge(filter, new_filter)
       
   137 
       
   138     content = lists.getListContent(request, params, filter)
       
   139     contents = [content]
       
   140 
       
   141     return self._list(request, params, contents, page_name)
   115 
   142 
   116   def _getExtraMenuItems(self, role_description, params=None):
   143   def _getExtraMenuItems(self, role_description, params=None):
   117     """Used to create the specific Organization menu entries.
   144     """Used to create the specific Organization menu entries.
   118 
   145 
   119     For args see group.View._getExtraMenuItems().
   146     For args see group.View._getExtraMenuItems().
   193 create = view.create
   220 create = view.create
   194 delete = view.delete
   221 delete = view.delete
   195 edit = view.edit
   222 edit = view.edit
   196 home = view.home
   223 home = view.home
   197 list = view.list
   224 list = view.list
       
   225 list_public = view.listPublic
   198 list_requests = view.listRequests
   226 list_requests = view.listRequests
   199 list_roles = view.listRoles
   227 list_roles = view.listRoles
   200 public = view.public
   228 public = view.public
   201 export = view.export
   229 export = view.export
   202 pick = view.pick
   230 pick = view.pick