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 )