Mercurial > personas_backend
changeset 39:bd1cdb15ef85
Added persona form submission validation, fixed some things in model logic; submitting forms successfully now properly redirects the user to an edit page.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Mon, 03 Mar 2008 19:01:43 -0600 |
parents | ccdb8d6379d3 |
children | 748547f73357 |
files | PersonasBackend/personas/models.py PersonasBackend/personas/urls.py PersonasBackend/personas/views.py |
diffstat | 3 files changed, 23 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/PersonasBackend/personas/models.py Mon Mar 03 17:13:13 2008 -0600 +++ b/PersonasBackend/personas/models.py Mon Mar 03 19:01:43 2008 -0600 @@ -98,8 +98,7 @@ description = models.TextField( help_text = "HTML is allowed.", - # TODO: Really allow blank descriptions? - blank=True, + blank=False, ) header_img = models.URLField( @@ -107,7 +106,7 @@ help_text=("URL for the image that will be placed behind " "the browser's top chrome."), verify_exists=True, - blank=True, + blank=False, ) footer_img = models.URLField( @@ -115,7 +114,7 @@ help_text=("URL for the image that will be placed behind " "the browser's bottom chrome."), verify_exists=True, - blank=True, + blank=False, ) MAX_COLOR_SCHEME_LENGTH = 10
--- a/PersonasBackend/personas/urls.py Mon Mar 03 17:13:13 2008 -0600 +++ b/PersonasBackend/personas/urls.py Mon Mar 03 19:01:43 2008 -0600 @@ -14,9 +14,11 @@ {'template_name':'personas/logged_out.html'}), # Personas UI - (r'^new/$', - 'PersonasBackend.personas.views.edit_view'), - (r'^(?P<persona_id>\d+)/edit/$', - 'PersonasBackend.personas.views.edit_view'), + url(r'^new/$', + 'PersonasBackend.personas.views.edit_view', + name='new-persona'), + url(r'^(?P<persona_id>\d+)/edit/$', + 'PersonasBackend.personas.views.edit_view', + name='edit-persona'), (r'^$', 'PersonasBackend.personas.views.list_view'), )
--- a/PersonasBackend/personas/views.py Mon Mar 03 17:13:13 2008 -0600 +++ b/PersonasBackend/personas/views.py Mon Mar 03 19:01:43 2008 -0600 @@ -1,6 +1,7 @@ -from django.http import HttpResponse +from django.http import HttpResponse, HttpResponseRedirect from django.template import Context, loader from django.contrib.auth.decorators import login_required +from django.core.urlresolvers import reverse from PersonasBackend.personas import models from PersonasBackend.personas import forms @@ -10,39 +11,25 @@ context = Context({ "personas" : models.Persona.objects.all() }) return HttpResponse( template.render(context) ) -def _save_changes( user, formData, persona ): +def _save_changes( user, formData, persona=None ): """ Save the given changes made by the given user to the given persona. If the given persona is None, then a new one is created. """ - if persona: - form = forms.PersonaForm( formData, - instance=persona ) + form = forms.PersonaForm( formData, + instance=persona ) + if form.is_valid(): + newPersona = form.save( commit=False ) + newPersona.updater = user + newPersona.save() + url = reverse("edit-persona", args=[newPersona.id]) + return HttpResponseRedirect( url ) else: - form = forms.PersonaForm( formData ) - persona = form.save( commit=False ) - persona.updater = user - # TODO: Add validation to ensure that all required fields - # are properly filled out. - persona.save() - # TODO: Redirect user back to editing page or some other - # location. - return HttpResponse( "Persona saved." ) + return _show_edit_form( form ) -def _show_edit_form( persona ): - """ - Show the edit form for the given persona; if None is supplied, - shows an edit form for a new persona. - """ - +def _show_edit_form( form ): template = loader.get_template( "personas/edit.html" ) - if persona: - # We're editing an existing persona. - form = forms.PersonaForm( instance=persona ) - else: - # We're creating a new persona. - form = forms.PersonaForm() context = Context({ "form" : form }) return HttpResponse( template.render(context) ) @@ -59,4 +46,4 @@ if request.method == "POST": return _save_changes( request.user, request.POST, persona ) else: - return _show_edit_form( persona ) + return _show_edit_form( forms.PersonaForm(instance=persona) )