app/soc/views/models/host.py
changeset 725 6180b32d990f
parent 716 26dc12dae79f
child 744 cd9bf163473c
equal deleted inserted replaced
724:b26295df0d9a 725:6180b32d990f
    20 __authors__ = [
    20 __authors__ = [
    21     '"Sverre Rabbelier" <sverre@rabbelier.nl>',
    21     '"Sverre Rabbelier" <sverre@rabbelier.nl>',
    22   ]
    22   ]
    23 
    23 
    24 
    24 
       
    25 from soc.logic import accounts
    25 from soc.logic import dicts
    26 from soc.logic import dicts
       
    27 from soc.logic.models import host as host_logic
    26 from soc.logic.models import user as user_logic
    28 from soc.logic.models import user as user_logic
    27 from soc.logic.models import sponsor as sponsor_logic
    29 from soc.logic.models import sponsor as sponsor_logic
    28 from soc.views import helper
    30 from soc.views import helper
    29 from soc.views.models import role
    31 from soc.views.models import role
    30 from soc.views.models import sponsor as sponsor_view
    32 from soc.views.models import sponsor as sponsor_view
    32 
    34 
    33 import soc.models.host
    35 import soc.models.host
    34 import soc.logic.models.host
    36 import soc.logic.models.host
    35 import soc.views.helper
    37 import soc.views.helper
    36 import soc.views.models.sponsor
    38 import soc.views.models.sponsor
       
    39 
       
    40 tolist = list
    37 
    41 
    38 
    42 
    39 class CreateForm(helper.forms.BaseForm):
    43 class CreateForm(helper.forms.BaseForm):
    40   """Django form displayed when creating a Host.
    44   """Django form displayed when creating a Host.
    41   """
    45   """
    86     """
    90     """
    87 
    91 
    88     rights = {}
    92     rights = {}
    89     rights['create'] = [access.checkIsHost]
    93     rights['create'] = [access.checkIsHost]
    90     rights['edit'] = [access.checkIsHost]
    94     rights['edit'] = [access.checkIsHost]
       
    95     rights['list'] = [access.checkIsHost]
    91 
    96 
    92     new_params = {}
    97     new_params = {}
    93     new_params['rights'] = rights
    98     new_params['rights'] = rights
    94     new_params['logic'] = soc.logic.models.host.logic
    99     new_params['logic'] = soc.logic.models.host.logic
    95 
   100 
   110 
   115 
   111     params = dicts.merge(params, new_params)
   116     params = dicts.merge(params, new_params)
   112 
   117 
   113     super(View, self).__init__(params=params)
   118     super(View, self).__init__(params=params)
   114 
   119 
       
   120   def list(self, request, access_type,
       
   121                page_name=None, params=None, filter=None):
       
   122     """See base.View.list
       
   123 
       
   124     Passes a filter to base.View.list so that only hosts from a sponsor
       
   125     that this user is host for are listed.
       
   126     """
       
   127 
       
   128     user = user_logic.logic.getForCurrentAccount()
       
   129 
       
   130     # Don't bother looking up everything if there's no user
       
   131     if user and (not accounts.isDeveloper(user=user)):
       
   132       hosts = host_logic.logic.getForFields({'user': user})
       
   133       sponsors = tolist((host.scope for host in hosts))
       
   134 
       
   135       new_filter = {'scope': sponsors}
       
   136       filter = dicts.merge(filter, new_filter)
       
   137 
       
   138     return super(View, self).list(request, access_type, page_name=page_name,
       
   139                                   params=params, filter=filter)
       
   140 
   115   def _editPost(self, request, entity, fields):
   141   def _editPost(self, request, entity, fields):
   116     """See base.View._editPost().
   142     """See base.View._editPost().
   117     """
   143     """
   118 
   144 
   119     user = user_logic.logic.getFromKeyName(fields['link_id'])
   145     user = user_logic.logic.getFromKeyName(fields['link_id'])