annotate PersonasBackend/personas/views.py @ 38:ccdb8d6379d3

Moved a TODO from views to models.
author Atul Varma <varmaa@toolness.com>
date Mon, 03 Mar 2008 17:13:13 -0600
parents ad477306dd51
children bd1cdb15ef85
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20
ccb027c6862a Added simple JSON views that generate personas_categories.dat and personas_all.dat.
Atul Varma <varmaa@toolness.com>
parents: 2
diff changeset
1 from django.http import HttpResponse
25
197b05fbd4cc Added a trivial list view.
Atul Varma <varmaa@toolness.com>
parents: 20
diff changeset
2 from django.template import Context, loader
31
ada72ce61fc2 Added a trivial login page.
Atul Varma <varmaa@toolness.com>
parents: 27
diff changeset
3 from django.contrib.auth.decorators import login_required
ada72ce61fc2 Added a trivial login page.
Atul Varma <varmaa@toolness.com>
parents: 27
diff changeset
4
20
ccb027c6862a Added simple JSON views that generate personas_categories.dat and personas_all.dat.
Atul Varma <varmaa@toolness.com>
parents: 2
diff changeset
5 from PersonasBackend.personas import models
27
4439a83c5dc6 Added a trivial new/edit form using the django.newforms system.
Atul Varma <varmaa@toolness.com>
parents: 25
diff changeset
6 from PersonasBackend.personas import forms
20
ccb027c6862a Added simple JSON views that generate personas_categories.dat and personas_all.dat.
Atul Varma <varmaa@toolness.com>
parents: 2
diff changeset
7
25
197b05fbd4cc Added a trivial list view.
Atul Varma <varmaa@toolness.com>
parents: 20
diff changeset
8 def list_view( request ):
197b05fbd4cc Added a trivial list view.
Atul Varma <varmaa@toolness.com>
parents: 20
diff changeset
9 template = loader.get_template( "personas/list.html" )
197b05fbd4cc Added a trivial list view.
Atul Varma <varmaa@toolness.com>
parents: 20
diff changeset
10 context = Context({ "personas" : models.Persona.objects.all() })
197b05fbd4cc Added a trivial list view.
Atul Varma <varmaa@toolness.com>
parents: 20
diff changeset
11 return HttpResponse( template.render(context) )
27
4439a83c5dc6 Added a trivial new/edit form using the django.newforms system.
Atul Varma <varmaa@toolness.com>
parents: 25
diff changeset
12
37
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
13 def _save_changes( user, formData, persona ):
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
14 """
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
15 Save the given changes made by the given user to the given
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
16 persona. If the given persona is None, then a new one is created.
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
17 """
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
18
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
19 if persona:
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
20 form = forms.PersonaForm( formData,
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
21 instance=persona )
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
22 else:
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
23 form = forms.PersonaForm( formData )
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
24 persona = form.save( commit=False )
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
25 persona.updater = user
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
26 # TODO: Add validation to ensure that all required fields
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
27 # are properly filled out.
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
28 persona.save()
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
29 # TODO: Redirect user back to editing page or some other
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
30 # location.
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
31 return HttpResponse( "Persona saved." )
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
32
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
33 def _show_edit_form( persona ):
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
34 """
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
35 Show the edit form for the given persona; if None is supplied,
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
36 shows an edit form for a new persona.
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
37 """
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
38
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
39 template = loader.get_template( "personas/edit.html" )
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
40 if persona:
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
41 # We're editing an existing persona.
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
42 form = forms.PersonaForm( instance=persona )
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
43 else:
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
44 # We're creating a new persona.
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
45 form = forms.PersonaForm()
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
46 context = Context({ "form" : form })
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
47 return HttpResponse( template.render(context) )
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
48
31
ada72ce61fc2 Added a trivial login page.
Atul Varma <varmaa@toolness.com>
parents: 27
diff changeset
49 @login_required
34
f83712466fe6 Added functionality to edit an existing persona, and a number of TODOs.
Atul Varma <varmaa@toolness.com>
parents: 33
diff changeset
50 def edit_view( request, persona_id=None ):
f83712466fe6 Added functionality to edit an existing persona, and a number of TODOs.
Atul Varma <varmaa@toolness.com>
parents: 33
diff changeset
51 # TODO: Perform permissions check to see if user has
f83712466fe6 Added functionality to edit an existing persona, and a number of TODOs.
Atul Varma <varmaa@toolness.com>
parents: 33
diff changeset
52 # the rights to edit the persona or create a new one.
f83712466fe6 Added functionality to edit an existing persona, and a number of TODOs.
Atul Varma <varmaa@toolness.com>
parents: 33
diff changeset
53 if persona_id is None:
f83712466fe6 Added functionality to edit an existing persona, and a number of TODOs.
Atul Varma <varmaa@toolness.com>
parents: 33
diff changeset
54 persona = None
f83712466fe6 Added functionality to edit an existing persona, and a number of TODOs.
Atul Varma <varmaa@toolness.com>
parents: 33
diff changeset
55 else:
f83712466fe6 Added functionality to edit an existing persona, and a number of TODOs.
Atul Varma <varmaa@toolness.com>
parents: 33
diff changeset
56 # TODO: Consider using get_object_or_404() here.
f83712466fe6 Added functionality to edit an existing persona, and a number of TODOs.
Atul Varma <varmaa@toolness.com>
parents: 33
diff changeset
57 persona = models.Persona.objects.get( id=persona_id )
f83712466fe6 Added functionality to edit an existing persona, and a number of TODOs.
Atul Varma <varmaa@toolness.com>
parents: 33
diff changeset
58
33
2b5a8b3b8bef It's now possible for normal end-users to create new personas.
Atul Varma <varmaa@toolness.com>
parents: 31
diff changeset
59 if request.method == "POST":
37
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
60 return _save_changes( request.user, request.POST, persona )
33
2b5a8b3b8bef It's now possible for normal end-users to create new personas.
Atul Varma <varmaa@toolness.com>
parents: 31
diff changeset
61 else:
37
ad477306dd51 A bit of refactoring to view logic.
Atul Varma <varmaa@toolness.com>
parents: 36
diff changeset
62 return _show_edit_form( persona )