app/soc/views/models/host.py
changeset 998 125257161908
parent 990 fd1e6afb2d62
child 1007 3b66772d21a5
equal deleted inserted replaced
997:d4ba019f1f8b 998:125257161908
    40 import soc.models.host
    40 import soc.models.host
    41 import soc.logic.models.host
    41 import soc.logic.models.host
    42 import soc.views.helper
    42 import soc.views.helper
    43 import soc.views.models.sponsor
    43 import soc.views.models.sponsor
    44 
    44 
    45 # TODO(pawel.solyga): Rename all list methods and functions to something else
       
    46 # and remove this tolist assignment
       
    47 tolist = list
       
    48 
    45 
    49 class View(role.View):
    46 class View(role.View):
    50   """View methods for the Host model.
    47   """View methods for the Host model.
    51   """
    48   """
    52 
    49 
    60 
    57 
    61     rights = {}
    58     rights = {}
    62     rights['create'] = [access.checkIsHost]
    59     rights['create'] = [access.checkIsHost]
    63     rights['edit'] = [access.checkIsMyActiveRole(soc.logic.models.host)]
    60     rights['edit'] = [access.checkIsMyActiveRole(soc.logic.models.host)]
    64     rights['invite'] = [access.checkIsHost]
    61     rights['invite'] = [access.checkIsHost]
    65     rights['list'] = [access.checkIsHost]
    62     rights['list'] = [access.checkIsDeveloper]
    66     rights['accept_invite'] = [access.checkCanCreateFromRequest('host')]
    63     rights['accept_invite'] = [access.checkCanCreateFromRequest('host')]
    67     rights['process_request'] = [access.checkIsHost,
    64     rights['process_request'] = [access.checkIsHost,
    68         access.checkCanProcessRequest('host')]
    65         access.checkCanProcessRequest('host')]
    69 
    66 
    70     new_params = {}
    67     new_params = {}
    94 
    91 
    95     params = dicts.merge(params, new_params)
    92     params = dicts.merge(params, new_params)
    96 
    93 
    97     super(View, self).__init__(params=params)
    94     super(View, self).__init__(params=params)
    98 
    95 
       
    96     # register the role with the group_view
       
    97     params['group_view'].registerRole(params['module_name'], self)
       
    98 
    99     # create and store the special form for invited users
    99     # create and store the special form for invited users
   100     updated_fields = {
   100     updated_fields = {
   101         'link_id': forms.CharField(widget=widgets.ReadOnlyInput(),
   101         'link_id': forms.CharField(widget=widgets.ReadOnlyInput(),
   102             required=False)}
   102             required=False)}
   103 
   103 
   104     invited_create_form = dynaform.extendDynaForm(
   104     invited_create_form = dynaform.extendDynaForm(
   105         dynaform = self._params['create_form'],
   105         dynaform = self._params['create_form'],
   106         dynafields = updated_fields)
   106         dynafields = updated_fields)
   107 
   107 
   108     params['invited_create_form'] = invited_create_form
   108     params['invited_create_form'] = invited_create_form
   109 
       
   110 
       
   111   def list(self, request, access_type, page_name=None, 
       
   112            params=None, filter=None):
       
   113     """See base.View.list.
       
   114 
       
   115     Passes a filter to base.View.list so that only hosts from a sponsor
       
   116     that this user is host for are listed.
       
   117     """
       
   118 
       
   119     user = user_logic.logic.getForCurrentAccount()
       
   120 
       
   121     # Don't bother looking up everything if there's no user
       
   122     if user and (not accounts.isDeveloper(user=user)):
       
   123       hosts = host_logic.logic.getForFields({'user': user})
       
   124       sponsors = tolist((host.scope for host in hosts))
       
   125 
       
   126       new_filter = {'scope': sponsors}
       
   127       filter = dicts.merge(filter, new_filter)
       
   128 
       
   129     return super(View, self).list(request, access_type, page_name=page_name,
       
   130                                   params=params, filter=filter)
       
   131 
   109 
   132   def _editPost(self, request, entity, fields):
   110   def _editPost(self, request, entity, fields):
   133     """See base.View._editPost().
   111     """See base.View._editPost().
   134     """
   112     """
   135     if not entity:
   113     if not entity: