# HG changeset patch # User Lennard de Rijk # Date 1232901795 0 # Node ID f52654ea6350e55324bd65a59557de2edf1e7420 # Parent e35b3d98d4698b0b423f3943544e79f654d63b43 Moved listRequests from club to group view. Added a TODO for adding request list to sidebar entry for every group. And for setting the rights for Sponsor view. Patch by: Lennard de Rijk Reviewed by: to-be-reviewed diff -r e35b3d98d469 -r f52654ea6350 app/soc/views/models/club.py --- a/app/soc/views/models/club.py Sun Jan 25 16:29:36 2009 +0000 +++ b/app/soc/views/models/club.py Sun Jan 25 16:43:15 2009 +0000 @@ -27,7 +27,6 @@ from django import http from django import forms -from django.utils.translation import ugettext from soc.logic import dicts from soc.logic.models import user as user_logic @@ -38,18 +37,15 @@ from soc.views.helper import access from soc.views.helper import decorators from soc.views.helper import dynaform -from soc.views.helper import lists as list_helper -from soc.views.helper import redirects from soc.views.helper import responses from soc.views.helper import widgets -from soc.views.models import base -from soc.views.models.request import view as request_view +from soc.views.models import group import soc.logic.models.club import soc.views.helper -class View(base.View): +class View(group.View): """View methods for the Club model. """ @@ -78,10 +74,7 @@ patterns += [(r'^%(url_name)s/(?Papplicant)/%(key_fields)s$', 'soc.views.models.%(module_name)s.applicant', - "%(name)s Creation via Accepted Application"), - (r'^%(url_name)s/(?Plist_requests)/%(key_fields)s$', - 'soc.views.models.%(module_name)s.list_requests', - 'List of requests for %(name)s')] + "%(name)s Creation via Accepted Application"),] new_params['extra_django_patterns'] = patterns @@ -91,6 +84,9 @@ required=False), } + # set the role names for the request overview + new_params['role_names'] = ['club_admin', 'club_member'] + params = dicts.merge(params, new_params) super(View, self).__init__(params=params) @@ -194,82 +190,6 @@ return http.HttpResponseRedirect('/notification/list') - @decorators.merge_params - @decorators.check_access - def listRequests(self, request, access_type, - page_name=None, params=None, **kwargs): - """Gives an overview of all the requests for a specific club. - - Args: - request: the standard Django HTTP request object - access_type : the name of the access type which should be checked - page_name: the page name displayed in templates as page and header title - params: a dict with params for this View - kwargs: the Key Fields for the specified entity - """ - - # set the pagename to include the link_id - page_name = '%s %s' %(page_name, kwargs['link_id']) - - club_roles = ['club_admin', 'club_member'] - - # list all incoming requests - filter = { - 'role': club_roles, - 'state': 'new' - } - - # create the list parameters - inc_req_params = request_view.getParams() - - # define the list redirect action to the request processing page - inc_req_params['list_action'] = (redirects.getProcessRequestRedirect, None) - inc_req_params['list_description'] = ugettext( - "An overview of the club's incoming requests.") - - inc_req_content = list_helper.getListContent( - request, inc_req_params, filter, 0) - - # list all outstanding invites - filter = { - 'role': club_roles, - 'state': 'group_accepted' - } - - # create the list parameters - out_inv_params = request_view.getParams() - - # define the list redirect action to the request processing page - out_inv_params['list_action'] = (redirects.getProcessRequestRedirect, None) - out_inv_params['list_description'] = ugettext( - "An overview of the club's outstanding invites.") - - out_inv_content = list_helper.getListContent( - request, out_inv_params, filter, 1) - - # list all ignored requests - filter = { - 'role': club_roles, - 'state': 'ignored' - } - - # create the list parameters - ignored_params = request_view.getParams() - - # define the list redirect action to the request processing page - ignored_params['list_action'] = (redirects.getProcessRequestRedirect, None) - ignored_params['list_description'] = ugettext( - "An overview of the club's ignored requests.") - - ignored_content = list_helper.getListContent( - request, ignored_params, filter, 2) - - - contents = [inc_req_content, out_inv_content, ignored_content] - - return self._list(request, params, contents, page_name) - - def _editGet(self, request, entity, form): """See base.View._editGet(). """ diff -r e35b3d98d469 -r f52654ea6350 app/soc/views/models/group.py --- a/app/soc/views/models/group.py Sun Jan 25 16:29:36 2009 +0000 +++ b/app/soc/views/models/group.py Sun Jan 25 16:43:15 2009 +0000 @@ -19,23 +19,31 @@ __authors__ = [ '"Sverre Rabbelier" ', + '"Lennard de Rijk" ', ] from google.appengine.api import users from django import forms +from django.utils.translation import ugettext from soc.logic import dicts from soc.logic.models import user as user_logic +from soc.views.helper import decorators +from soc.views.helper import lists as list_helper +from soc.views.helper import redirects from soc.views.helper import widgets from soc.views.models import base +from soc.views.models.request import view as request_view class View(base.View): """View methods for the Group model. """ + # TODO(ljvderijk) add sidebar entry for listRequests to each group + def __init__(self, params=None): """Defines the fields and methods required for the base View class to provide the user with list, public, create, edit and delete views. @@ -56,6 +64,19 @@ required=False), } + #set the extra_django_patterns and include the one from params + patterns = params.get('extra_django_patterns') + + if not patterns: + patterns = [] + + patterns += [ + (r'^%(url_name)s/(?Plist_requests)/%(key_fields)s$', + 'soc.views.models.%(module_name)s.list_requests', + 'List of requests for %(name)s')] + + new_params['extra_django_patterns'] = patterns + # TODO(tlarsen): Add support for Django style template lookup new_params['public_template'] = 'soc/group/public.html' @@ -86,3 +107,76 @@ super(View, self)._editPost(request, entity, fields) + @decorators.merge_params + @decorators.check_access + def listRequests(self, request, access_type, + page_name=None, params=None, **kwargs): + """Gives an overview of all the requests for a specific group. + + Args: + request: the standard Django HTTP request object + access_type : the name of the access type which should be checked + page_name: the page name displayed in templates as page and header title + params: a dict with params for this View + kwargs: the Key Fields for the specified entity + """ + + # set the pagename to include the link_id + page_name = '%s %s' %(page_name, kwargs['link_id']) + + role_names = params['role_names'] + + # list all incoming requests + filter = { + 'role': role_names, + 'state': 'new' + } + + # create the list parameters + inc_req_params = request_view.getParams() + + # define the list redirect action to the request processing page + inc_req_params['list_action'] = (redirects.getProcessRequestRedirect, None) + inc_req_params['list_description'] = ugettext( + "An overview of the %(name)s's incoming requests." % params) + + inc_req_content = list_helper.getListContent( + request, inc_req_params, filter, 0) + + # list all outstanding invites + filter = { + 'role': role_names, + 'state': 'group_accepted' + } + + # create the list parameters + out_inv_params = request_view.getParams() + + # define the list redirect action to the request processing page + out_inv_params['list_action'] = (redirects.getProcessRequestRedirect, None) + out_inv_params['list_description'] = ugettext( + "An overview of the %(name)s's outstanding invites." % params) + + out_inv_content = list_helper.getListContent( + request, out_inv_params, filter, 1) + + # list all ignored requests + filter = { + 'role': role_names, + 'state': 'ignored' + } + + # create the list parameters + ignored_params = request_view.getParams() + + # define the list redirect action to the request processing page + ignored_params['list_action'] = (redirects.getProcessRequestRedirect, None) + ignored_params['list_description'] = ugettext( + "An overview of the %(name)s's ignored requests." % params) + + ignored_content = list_helper.getListContent( + request, ignored_params, filter, 2) + + contents = [inc_req_content, out_inv_content, ignored_content] + + return self._list(request, params, contents, page_name) diff -r e35b3d98d469 -r f52654ea6350 app/soc/views/models/sponsor.py --- a/app/soc/views/models/sponsor.py Sun Jan 25 16:29:36 2009 +0000 +++ b/app/soc/views/models/sponsor.py Sun Jan 25 16:43:15 2009 +0000 @@ -47,9 +47,14 @@ new_params = {} new_params['logic'] = soc.logic.models.sponsor.logic + # TODO(ljvderijk) Set rights for the different views including list_requests + new_params['name'] = "Program Owner" new_params['module_name'] = "sponsor" + # set the role names for the request overview + new_params['role_names'] = ['host'] + params = dicts.merge(params, new_params) super(View, self).__init__(params=params) @@ -61,6 +66,7 @@ delete = view.delete edit = view.edit list = view.list +list_requests = view.listRequests public = view.public export = view.export pick = view.pick