29 |
29 |
30 import soc.logic |
30 import soc.logic |
31 from soc.logic import validate |
31 from soc.logic import validate |
32 from soc.logic import out_of_band |
32 from soc.logic import out_of_band |
33 from soc.logic.site import id_user |
33 from soc.logic.site import id_user |
|
34 from soc.logic import models |
34 import soc.models.sponsor |
35 import soc.models.sponsor |
35 from soc.views import helper |
36 from soc.views import helper |
36 from soc.views.helper import access |
37 from soc.views.helper import access |
37 import soc.views.helper.forms |
38 import soc.views.helper.forms |
38 import soc.views.helper.requests |
39 import soc.views.helper.requests |
57 # TODO(pawel.solyga): write validation functions for other fields |
58 # TODO(pawel.solyga): write validation functions for other fields |
58 def clean_link_name(self): |
59 def clean_link_name(self): |
59 link_name = self.cleaned_data.get('link_name') |
60 link_name = self.cleaned_data.get('link_name') |
60 if not validate.isLinkNameFormatValid(link_name): |
61 if not validate.isLinkNameFormatValid(link_name): |
61 raise forms.ValidationError("This link name is in wrong format.") |
62 raise forms.ValidationError("This link name is in wrong format.") |
62 if soc.logic.sponsor_logic.getFromFields(link_name=link_name): |
63 if models.sponsor.logic.getFromFields(link_name=link_name): |
63 raise forms.ValidationError("This link name is already in use.") |
64 raise forms.ValidationError("This link name is already in use.") |
64 return link_name |
65 return link_name |
65 |
66 |
66 |
67 |
67 class EditForm(CreateForm): |
68 class EditForm(CreateForm): |
103 |
104 |
104 # create default template context for use with any templates |
105 # create default template context for use with any templates |
105 context = helper.responses.getUniversalContext(request) |
106 context = helper.responses.getUniversalContext(request) |
106 |
107 |
107 logged_in_id = users.get_current_user() |
108 logged_in_id = users.get_current_user() |
108 user = soc.logic.user_logic.getFromFields(email=logged_in_id) |
109 user = models.user.logic.getFromFields(email=logged_in_id) |
109 sponsor_form = None |
110 sponsor_form = None |
110 existing_sponsor = None |
111 existing_sponsor = None |
111 |
112 |
112 # try to fetch Sponsor entity corresponding to link_name if one exists |
113 # try to fetch Sponsor entity corresponding to link_name if one exists |
113 try: |
114 try: |
114 existing_sponsor = soc.logic.sponsor_logic.getIfFields(link_name=link_name) |
115 existing_sponsor = models.sponsor.logic.getIfFields(link_name=link_name) |
115 except out_of_band.ErrorResponse, error: |
116 except out_of_band.ErrorResponse, error: |
116 # show custom 404 page when link name doesn't exist in Datastore |
117 # show custom 404 page when link name doesn't exist in Datastore |
117 error.message = error.message + DEF_CREATE_NEW_SPONSOR_MSG |
118 error.message = error.message + DEF_CREATE_NEW_SPONSOR_MSG |
118 return simple.errorResponse(request, error, template, context) |
119 return simple.errorResponse(request, error, template, context) |
119 |
120 |
141 fields[field] = value |
142 fields[field] = value |
142 |
143 |
143 fields['founder'] = user |
144 fields['founder'] = user |
144 |
145 |
145 form_ln = fields['link_name'] |
146 form_ln = fields['link_name'] |
146 form_sponsor = soc.logic.sponsor_logic.updateOrCreateFromFields(fields, link_name=form_ln) |
147 form_sponsor = models.sponsor.logic.updateOrCreateFromFields(fields, link_name=form_ln) |
147 |
148 |
148 if not form_sponsor: |
149 if not form_sponsor: |
149 return http.HttpResponseRedirect('/') |
150 return http.HttpResponseRedirect('/') |
150 |
151 |
151 # redirect to new /site/sponsor/profile/form_link_name?s=0 |
152 # redirect to new /site/sponsor/profile/form_link_name?s=0 |
219 |
220 |
220 existing_sponsor = None |
221 existing_sponsor = None |
221 |
222 |
222 # try to fetch Sponsor entity corresponding to link_name if one exists |
223 # try to fetch Sponsor entity corresponding to link_name if one exists |
223 try: |
224 try: |
224 existing_sponsor = soc.logic.sponsor_logic.getIfFields(link_name=link_name) |
225 existing_sponsor = models.sponsor.logic.getIfFields(link_name=link_name) |
225 except out_of_band.ErrorResponse, error: |
226 except out_of_band.ErrorResponse, error: |
226 # show custom 404 page when link name doesn't exist in Datastore |
227 # show custom 404 page when link name doesn't exist in Datastore |
227 error.message = error.message + DEF_CREATE_NEW_SPONSOR_MSG |
228 error.message = error.message + DEF_CREATE_NEW_SPONSOR_MSG |
228 return simple.errorResponse(request, error, template, context) |
229 return simple.errorResponse(request, error, template, context) |
229 |
230 |
230 if existing_sponsor: |
231 if existing_sponsor: |
231 # TODO(pawel.solyga): Create specific delete method for Sponsor model |
232 # TODO(pawel.solyga): Create specific delete method for Sponsor model |
232 # Check if Sponsor can be deleted (has no Hosts and Programs) |
233 # Check if Sponsor can be deleted (has no Hosts and Programs) |
233 soc.logic.sponsor_logic.delete(existing_sponsor) |
234 models.sponsor.logic.delete(existing_sponsor) |
234 |
235 |
235 return http.HttpResponseRedirect('/site/sponsor/list') |
236 return http.HttpResponseRedirect('/site/sponsor/list') |