app/soc/views/models/club.py
changeset 983 1bbf226ade8e
parent 963 24c0a9da6360
child 989 f52654ea6350
--- a/app/soc/views/models/club.py	Sun Jan 25 15:01:55 2009 +0000
+++ b/app/soc/views/models/club.py	Sun Jan 25 15:03:12 2009 +0000
@@ -27,18 +27,23 @@
 
 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
 from soc.logic.models import club_app as club_app_logic
 from soc.logic.models import club as club_logic
+from soc.logic.models import request as request_logic
 from soc.views import out_of_band
 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
 
 import soc.logic.models.club
 import soc.views.helper
@@ -61,6 +66,7 @@
     rights['edit'] = [access.checkIsClubAdminForClub]
     rights['delete'] = [access.checkIsDeveloper]
     rights['list'] = [access.checkIsDeveloper]
+    rights['list_requests'] = [access.checkIsClubAdminForClub]
     rights['applicant'] = [access.checkIsApplicationAccepted(club_app_logic)]
 
     new_params = {}
@@ -69,14 +75,13 @@
     new_params['name'] = "Club"
 
     patterns = []
-    
-    # TODO(ljvderijk) implement requests list for clubs
-    page_name = "Club Creation via Accepted Application"
+
     patterns += [(r'^%(url_name)s/(?P<access_type>applicant)/%(key_fields)s$',
-                  'soc.views.models.%(module_name)s.applicant', page_name),]
-        #(r'^%(url_name)s/(?P<access_type>list_requests)/%(key_fields)s$',
-        #'soc.views.models.%(module_name)s.list_requests',
-        #'List of requests for %(name_plural)s')]
+        'soc.views.models.%(module_name)s.applicant', 
+        "%(name)s Creation via Accepted Application"),
+        (r'^%(url_name)s/(?P<access_type>list_requests)/%(key_fields)s$',
+        'soc.views.models.%(module_name)s.list_requests',
+        'List of requests for %(name)s')]
 
     new_params['extra_django_patterns'] = patterns
 
@@ -188,6 +193,83 @@
     # redirect to notifications list to see the admin invite
     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().
     """
@@ -216,6 +298,7 @@
 delete = view.delete
 edit = view.edit
 list = view.list
+list_requests = view.listRequests
 public = view.public
 export = view.export
 pick = view.pick