87 DEF_CREATE_NEW_SPONSOR_MSG = ' You can create a new sponsor by visiting' \ |
87 DEF_CREATE_NEW_SPONSOR_MSG = ' You can create a new sponsor by visiting' \ |
88 ' <a href="/site/sponsor/profile">Create ' \ |
88 ' <a href="/site/sponsor/profile">Create ' \ |
89 'a New Sponsor</a> page.' |
89 'a New Sponsor</a> page.' |
90 |
90 |
91 @decorators.view |
91 @decorators.view |
92 def edit(request, page=None, link_name=None, |
92 def edit(request, page_name=None, link_name=None, |
93 template=DEF_SITE_SPONSOR_PROFILE_EDIT_TMPL): |
93 template=DEF_SITE_SPONSOR_PROFILE_EDIT_TMPL): |
94 """View for a Developer to modify the properties of a Sponsor Model entity. |
94 """View for a Developer to modify the properties of a Sponsor Model entity. |
95 |
95 |
96 Args: |
96 Args: |
97 request: the standard django request object |
97 request: the standard django request object |
111 except soc.views.out_of_band.AccessViolationResponse, alt_response: |
111 except soc.views.out_of_band.AccessViolationResponse, alt_response: |
112 return alt_response.response() |
112 return alt_response.response() |
113 |
113 |
114 # create default template context for use with any templates |
114 # create default template context for use with any templates |
115 context = helper.responses.getUniversalContext(request) |
115 context = helper.responses.getUniversalContext(request) |
116 context['page'] = page |
116 context['page_name'] = page_name |
117 |
117 |
118 user = models.user.logic.getForFields( |
118 user = models.user.logic.getForFields( |
119 {'account': users.get_current_user()}, unique=True) |
119 {'account': users.get_current_user()}, unique=True) |
120 sponsor_form = None |
120 sponsor_form = None |
121 existing_sponsor = None |
121 existing_sponsor = None |
124 try: |
124 try: |
125 existing_sponsor = sponsor.logic.getIfFields(link_name=link_name) |
125 existing_sponsor = sponsor.logic.getIfFields(link_name=link_name) |
126 except out_of_band.ErrorResponse, error: |
126 except out_of_band.ErrorResponse, error: |
127 # show custom 404 page when link name doesn't exist in Datastore |
127 # show custom 404 page when link name doesn't exist in Datastore |
128 error.message = error.message + DEF_CREATE_NEW_SPONSOR_MSG |
128 error.message = error.message + DEF_CREATE_NEW_SPONSOR_MSG |
129 return simple.errorResponse(request, page, error, template, context) |
129 return simple.errorResponse(request, page_name, error, template, context) |
130 |
130 |
131 if request.method == 'POST': |
131 if request.method == 'POST': |
132 if existing_sponsor: |
132 if existing_sponsor: |
133 sponsor_form = EditForm(request.POST) |
133 sponsor_form = EditForm(request.POST) |
134 else: |
134 else: |
140 # abuse that manually, so we check if form link_name is the same as |
140 # abuse that manually, so we check if form link_name is the same as |
141 # url link_name |
141 # url link_name |
142 if sponsor_form.cleaned_data.get('link_name') != link_name: |
142 if sponsor_form.cleaned_data.get('link_name') != link_name: |
143 msg = DEF_SPONSOR_NO_LINKNAME_CHANGE_MSG |
143 msg = DEF_SPONSOR_NO_LINKNAME_CHANGE_MSG |
144 error = out_of_band.ErrorResponse(msg) |
144 error = out_of_band.ErrorResponse(msg) |
145 return simple.errorResponse(request, page, error, template, context) |
145 return simple.errorResponse(request, page_name, error, template, context) |
146 |
146 |
147 fields = {} |
147 fields = {} |
148 |
148 |
149 # Ask for all the fields and pull them out |
149 # Ask for all the fields and pull them out |
150 for field in sponsor_form.cleaned_data: |
150 for field in sponsor_form.cleaned_data: |
205 |
205 |
206 |
206 |
207 DEF_SITE_SPONSOR_PROFILE_CREATE_TMPL = 'soc/group/profile/edit.html' |
207 DEF_SITE_SPONSOR_PROFILE_CREATE_TMPL = 'soc/group/profile/edit.html' |
208 |
208 |
209 @decorators.view |
209 @decorators.view |
210 def create(request, page=None, template=DEF_SITE_SPONSOR_PROFILE_CREATE_TMPL): |
210 def create(request, page_name=None, template=DEF_SITE_SPONSOR_PROFILE_CREATE_TMPL): |
211 """create() view is same as edit() view, but with no link_name supplied. |
211 """create() view is same as edit() view, but with no link_name supplied. |
212 """ |
212 """ |
213 return edit(request, page=page, link_name=None, template=template) |
213 return edit(request, page_name=page_name, link_name=None, template=template) |
214 |
214 |
215 |
215 |
216 @decorators.view |
216 @decorators.view |
217 def delete(request, page=None, link_name=None, |
217 def delete(request, page_name=None, link_name=None, |
218 template=DEF_SITE_SPONSOR_PROFILE_EDIT_TMPL): |
218 template=DEF_SITE_SPONSOR_PROFILE_EDIT_TMPL): |
219 """Request handler for a Developer to delete Sponsor Model entity. |
219 """Request handler for a Developer to delete Sponsor Model entity. |
220 |
220 |
221 Args: |
221 Args: |
222 request: the standard django request object |
222 request: the standard django request object |
236 except soc.views.out_of_band.AccessViolationResponse, alt_response: |
236 except soc.views.out_of_band.AccessViolationResponse, alt_response: |
237 return alt_response.response() |
237 return alt_response.response() |
238 |
238 |
239 # create default template context for use with any templates |
239 # create default template context for use with any templates |
240 context = helper.responses.getUniversalContext(request) |
240 context = helper.responses.getUniversalContext(request) |
241 context['page'] = page |
241 context['page_name'] = page_name |
242 |
242 |
243 existing_sponsor = None |
243 existing_sponsor = None |
244 |
244 |
245 # try to fetch Sponsor entity corresponding to link_name if one exists |
245 # try to fetch Sponsor entity corresponding to link_name if one exists |
246 try: |
246 try: |
247 existing_sponsor = models.sponsor.logic.getIfFields(link_name=link_name) |
247 existing_sponsor = models.sponsor.logic.getIfFields(link_name=link_name) |
248 except out_of_band.ErrorResponse, error: |
248 except out_of_band.ErrorResponse, error: |
249 # show custom 404 page when link name doesn't exist in Datastore |
249 # show custom 404 page when link name doesn't exist in Datastore |
250 error.message = error.message + DEF_CREATE_NEW_SPONSOR_MSG |
250 error.message = error.message + DEF_CREATE_NEW_SPONSOR_MSG |
251 return simple.errorResponse(request, page, error, template, context) |
251 return simple.errorResponse(request, page_name, error, template, context) |
252 |
252 |
253 if existing_sponsor: |
253 if existing_sponsor: |
254 # TODO(pawel.solyga): Create specific delete method for Sponsor model |
254 # TODO(pawel.solyga): Create specific delete method for Sponsor model |
255 # Check if Sponsor can be deleted (has no Hosts and Programs) |
255 # Check if Sponsor can be deleted (has no Hosts and Programs) |
256 models.sponsor.logic.delete(existing_sponsor) |
256 models.sponsor.logic.delete(existing_sponsor) |