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 |