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)