--- a/app/soc/views/models/club.py Wed Jan 21 16:12:48 2009 +0000
+++ b/app/soc/views/models/club.py Wed Jan 21 16:13:03 2009 +0000
@@ -64,13 +64,13 @@
new_params['logic'] = soc.logic.models.club.logic
new_params['rights'] = rights
new_params['name'] = "Club"
-
+
patterns = []
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)]
-
+
new_params['extra_django_patterns'] = patterns
new_params['extra_dynaexclude'] = ['founder', 'home']
@@ -82,45 +82,45 @@
params = dicts.merge(params, new_params)
super(View, self).__init__(params=params)
-
+
# create and store the special form for applicants
updated_fields = {
'link_id': forms.CharField(widget=widgets.ReadOnlyInput(),
required=False)}
-
+
applicant_create_form = dynaform.extendDynaForm(
dynaform = self._params['create_form'],
dynafields = updated_fields)
-
+
params['applicant_create_form'] = applicant_create_form
def applicant(self, request, access_type,
page_name=None, params=None, **kwargs):
"""Handles the creation of a club via an approved club application.
-
+
Args:
request: the standard Django HTTP request object
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
"""
-
-
+
+
# merge the params
params = dicts.merge(params, self._params)
-
+
# check if the current user has access to this page
try:
access.checkAccess(access_type, request, rights=params['rights'])
except out_of_band.Error, error:
return responses.errorResponse(error, request)
-
+
# get the context for this webpage
context = responses.getUniversalContext(request)
context['page_name'] = page_name
-
-
+
+
if request.method == 'POST':
return self.applicantPost(request, context, params, **kwargs)
else:
@@ -129,66 +129,66 @@
def applicantGet(self, request, context, params, **kwargs):
- """Handles the GET request concerning the creation of a club via an
+ """Handles the GET request concerning the creation of a club via an
approved club application.
-
+
Args:
request: the standard Django HTTP request object
context: dictionary containing the context for this view
params: a dict with params for this View
kwargs: the Key Fields for the specified entity
"""
-
+
# find the application
key_fields = group_app_logic.logic.getKeyFieldsFromDict(kwargs)
application = group_app_logic.logic.getFromFields(**key_fields)
-
+
# extract the application fields
field_names = application.properties().keys()
fields = dict( [(i, getattr(application, i)) for i in field_names] )
-
+
# create the form using the fields from the application as the initial value
form = params['applicant_create_form'](initial=fields)
-
+
# construct the appropriate response
- return super(View, self)._constructResponse(request, entity=None,
+ return super(View, self)._constructResponse(request, entity=None,
context=context, form=form, params=params)
def applicantPost(self, request, context, params, **kwargs):
- """Handles the POST request concerning the creation of a club via an
+ """Handles the POST request concerning the creation of a club via an
approved club application.
-
+
Args:
request: the standard Django HTTP request object
context: dictionary containing the context for this view
params: a dict with params for this View
kwargs: the Key Fields for the specified entity
"""
-
+
# populate the form using the POST data
form = params['applicant_create_form'](request.POST)
-
+
if not form.is_valid():
# return the invalid form response
return self._constructResponse(request, entity=None, context=context,
form=form, params=params)
-
+
# collect the cleaned data from the valid form
key_name, fields = soc.views.helper.forms.collectCleanedFields(form)
-
+
# fill in the founder of the club
account = users.get_current_user()
user = user_logic.logic.getForFields({'account': account}, unique=True)
fields['founder'] = user
-
+
if not key_name:
key_fields = self._logic.getKeyFieldsFromDict(fields)
key_name = self._logic.getKeyNameForFields(key_fields)
-
+
# create the club entity
entity = self._logic.updateOrCreateFromKeyName(fields, key_name)
-
+
# redirect to notifications list to see the admin invite
return http.HttpResponseRedirect('/notification/list')