Mercurial > personas_backend
changeset 37:ad477306dd51
A bit of refactoring to view logic.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Thu, 28 Feb 2008 17:14:25 -0800 |
parents | d65b749fe547 |
children | ccdb8d6379d3 |
files | PersonasBackend/personas/views.py |
diffstat | 1 files changed, 42 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/PersonasBackend/personas/views.py Thu Feb 28 17:06:30 2008 -0800 +++ b/PersonasBackend/personas/views.py Thu Feb 28 17:14:25 2008 -0800 @@ -10,6 +10,46 @@ context = Context({ "personas" : models.Persona.objects.all() }) return HttpResponse( template.render(context) ) +def _save_changes( user, formData, persona ): + """ + 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 ) + else: + form = forms.PersonaForm( formData ) + persona = form.save( commit=False ) + persona.updater = user + # TODO: Based on the permissions of the user, the status + # should be set to "needs review" or "published", depending on + # how much we trust them. + persona.status = "needs_review" + # 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." ) + +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. + """ + + 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) ) + @login_required def edit_view( request, persona_id=None ): # TODO: Perform permissions check to see if user has @@ -21,30 +61,6 @@ persona = models.Persona.objects.get( id=persona_id ) if request.method == "POST": - if persona: - form = forms.PersonaForm( request.POST, - instance=persona ) - else: - form = forms.PersonaForm( request.POST ) - persona = form.save( commit=False ) - persona.updater = request.user - # TODO: Based on the permissions of the user, the status - # should be set to "needs review" or "published", depending on - # how much we trust them. - persona.status = "needs_review" - # 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 _save_changes( request.user, request.POST, persona ) else: - 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) ) + return _show_edit_form( persona )