app/soc/views/models/club.py
changeset 983 1bbf226ade8e
parent 963 24c0a9da6360
child 989 f52654ea6350
equal deleted inserted replaced
982:9efcedcfeb3e 983:1bbf226ade8e
    25 
    25 
    26 from google.appengine.api import users
    26 from google.appengine.api import users
    27 
    27 
    28 from django import http
    28 from django import http
    29 from django import forms
    29 from django import forms
       
    30 from django.utils.translation import ugettext
    30 
    31 
    31 from soc.logic import dicts
    32 from soc.logic import dicts
    32 from soc.logic.models import user as user_logic
    33 from soc.logic.models import user as user_logic
    33 from soc.logic.models import club_app as club_app_logic
    34 from soc.logic.models import club_app as club_app_logic
    34 from soc.logic.models import club as club_logic
    35 from soc.logic.models import club as club_logic
       
    36 from soc.logic.models import request as request_logic
    35 from soc.views import out_of_band
    37 from soc.views import out_of_band
    36 from soc.views.helper import access
    38 from soc.views.helper import access
    37 from soc.views.helper import decorators
    39 from soc.views.helper import decorators
    38 from soc.views.helper import dynaform
    40 from soc.views.helper import dynaform
       
    41 from soc.views.helper import lists as list_helper
       
    42 from soc.views.helper import redirects
    39 from soc.views.helper import responses
    43 from soc.views.helper import responses
    40 from soc.views.helper import widgets
    44 from soc.views.helper import widgets
    41 from soc.views.models import base
    45 from soc.views.models import base
       
    46 from soc.views.models.request import view as request_view
    42 
    47 
    43 import soc.logic.models.club
    48 import soc.logic.models.club
    44 import soc.views.helper
    49 import soc.views.helper
    45 
    50 
    46 
    51 
    59     rights = {}
    64     rights = {}
    60     rights['create'] = [access.checkIsDeveloper]
    65     rights['create'] = [access.checkIsDeveloper]
    61     rights['edit'] = [access.checkIsClubAdminForClub]
    66     rights['edit'] = [access.checkIsClubAdminForClub]
    62     rights['delete'] = [access.checkIsDeveloper]
    67     rights['delete'] = [access.checkIsDeveloper]
    63     rights['list'] = [access.checkIsDeveloper]
    68     rights['list'] = [access.checkIsDeveloper]
       
    69     rights['list_requests'] = [access.checkIsClubAdminForClub]
    64     rights['applicant'] = [access.checkIsApplicationAccepted(club_app_logic)]
    70     rights['applicant'] = [access.checkIsApplicationAccepted(club_app_logic)]
    65 
    71 
    66     new_params = {}
    72     new_params = {}
    67     new_params['logic'] = soc.logic.models.club.logic
    73     new_params['logic'] = soc.logic.models.club.logic
    68     new_params['rights'] = rights
    74     new_params['rights'] = rights
    69     new_params['name'] = "Club"
    75     new_params['name'] = "Club"
    70 
    76 
    71     patterns = []
    77     patterns = []
    72     
    78 
    73     # TODO(ljvderijk) implement requests list for clubs
       
    74     page_name = "Club Creation via Accepted Application"
       
    75     patterns += [(r'^%(url_name)s/(?P<access_type>applicant)/%(key_fields)s$',
    79     patterns += [(r'^%(url_name)s/(?P<access_type>applicant)/%(key_fields)s$',
    76                   'soc.views.models.%(module_name)s.applicant', page_name),]
    80         'soc.views.models.%(module_name)s.applicant', 
    77         #(r'^%(url_name)s/(?P<access_type>list_requests)/%(key_fields)s$',
    81         "%(name)s Creation via Accepted Application"),
    78         #'soc.views.models.%(module_name)s.list_requests',
    82         (r'^%(url_name)s/(?P<access_type>list_requests)/%(key_fields)s$',
    79         #'List of requests for %(name_plural)s')]
    83         'soc.views.models.%(module_name)s.list_requests',
       
    84         'List of requests for %(name)s')]
    80 
    85 
    81     new_params['extra_django_patterns'] = patterns
    86     new_params['extra_django_patterns'] = patterns
    82 
    87 
    83     new_params['extra_dynaexclude'] = ['founder', 'home']
    88     new_params['extra_dynaexclude'] = ['founder', 'home']
    84     new_params['edit_extra_dynafields'] = {
    89     new_params['edit_extra_dynafields'] = {
   186     entity = self._logic.updateOrCreateFromKeyName(fields, key_name)
   191     entity = self._logic.updateOrCreateFromKeyName(fields, key_name)
   187 
   192 
   188     # redirect to notifications list to see the admin invite
   193     # redirect to notifications list to see the admin invite
   189     return http.HttpResponseRedirect('/notification/list')
   194     return http.HttpResponseRedirect('/notification/list')
   190 
   195 
       
   196 
       
   197   @decorators.merge_params
       
   198   @decorators.check_access
       
   199   def listRequests(self, request, access_type,
       
   200                 page_name=None, params=None, **kwargs):
       
   201     """Gives an overview of all the requests for a specific club.
       
   202 
       
   203     Args:
       
   204       request: the standard Django HTTP request object
       
   205       access_type : the name of the access type which should be checked
       
   206       page_name: the page name displayed in templates as page and header title
       
   207       params: a dict with params for this View
       
   208       kwargs: the Key Fields for the specified entity
       
   209     """
       
   210 
       
   211     # set the pagename to include the link_id
       
   212     page_name = '%s %s' %(page_name, kwargs['link_id'])
       
   213 
       
   214     club_roles = ['club_admin', 'club_member']
       
   215 
       
   216     # list all incoming requests
       
   217     filter = {
       
   218         'role': club_roles,
       
   219         'state': 'new'
       
   220         }
       
   221 
       
   222     # create the list parameters
       
   223     inc_req_params = request_view.getParams()
       
   224 
       
   225     # define the list redirect action to the request processing page
       
   226     inc_req_params['list_action'] = (redirects.getProcessRequestRedirect, None)
       
   227     inc_req_params['list_description'] = ugettext(
       
   228         "An overview of the club's incoming requests.")
       
   229     
       
   230     inc_req_content = list_helper.getListContent(
       
   231         request, inc_req_params, filter, 0)
       
   232 
       
   233     # list all outstanding invites
       
   234     filter = {
       
   235         'role': club_roles,
       
   236         'state': 'group_accepted'
       
   237         }
       
   238 
       
   239     # create the list parameters
       
   240     out_inv_params = request_view.getParams()
       
   241 
       
   242     # define the list redirect action to the request processing page
       
   243     out_inv_params['list_action'] = (redirects.getProcessRequestRedirect, None)
       
   244     out_inv_params['list_description'] = ugettext(
       
   245         "An overview of the club's outstanding invites.")
       
   246 
       
   247     out_inv_content = list_helper.getListContent(
       
   248         request, out_inv_params, filter, 1)
       
   249 
       
   250     # list all ignored requests
       
   251     filter = {
       
   252         'role': club_roles,
       
   253         'state': 'ignored'
       
   254         }
       
   255 
       
   256     # create the list parameters
       
   257     ignored_params = request_view.getParams()
       
   258 
       
   259     # define the list redirect action to the request processing page
       
   260     ignored_params['list_action'] = (redirects.getProcessRequestRedirect, None)
       
   261     ignored_params['list_description'] = ugettext(
       
   262         "An overview of the club's ignored requests.")
       
   263     
       
   264     ignored_content = list_helper.getListContent(
       
   265         request, ignored_params, filter, 2)
       
   266 
       
   267 
       
   268     contents = [inc_req_content, out_inv_content, ignored_content]
       
   269 
       
   270     return self._list(request, params, contents, page_name)
       
   271 
       
   272 
   191   def _editGet(self, request, entity, form):
   273   def _editGet(self, request, entity, form):
   192     """See base.View._editGet().
   274     """See base.View._editGet().
   193     """
   275     """
   194 
   276 
   195     # fill in the founded_by with data from the entity
   277     # fill in the founded_by with data from the entity
   214 applicant = view.applicant
   296 applicant = view.applicant
   215 create = view.create
   297 create = view.create
   216 delete = view.delete
   298 delete = view.delete
   217 edit = view.edit
   299 edit = view.edit
   218 list = view.list
   300 list = view.list
       
   301 list_requests = view.listRequests
   219 public = view.public
   302 public = view.public
   220 export = view.export
   303 export = view.export
   221 pick = view.pick
   304 pick = view.pick