* Add an addCharacter view to the influences app.
[matthijs/projects/xerxes.git] / influences / views.py
index 4450efadc8e863fe825e9e5871d9cb0faf42fca8..50ce60001996f26b82db32c2f8372aab70db8f5a 100644 (file)
@@ -1,23 +1,46 @@
 from django.shortcuts import render_to_response
 from django.shortcuts import get_object_or_404
+from django.utils.translation import ugettext as _
 from ee.influences.models import Character
 from ee.influences.models import Influence
-from django import newforms as forms
+from ee.tools.forms import ContextModelForm
 
-class AddInfluenceForm(forms.Form):
-       contact     = forms.CharField(max_length=255, help_text='Which contact will you ask?')
-       description = forms.CharField(help_text='What do you want to achieve')
+class InfluenceForm(ContextModelForm):
+       class Meta:
+               model = Influence
+               fields = ('character', 'contact', 'description')
 
-def addinfluence(request, character_id):
-       character = get_object_or_404(Character, id=character_id)
+class CharacterForm(ContextModelForm):
+    class Meta:
+        model = Character
+        fields = ('name')
+
+def add(request, character_id):
        message = None
+
        if (request.method == "POST"):
-               f = AddInfluenceForm(request.POST)
+               f = InfluenceForm(request.POST)
                if (f.is_valid()):
-                       inf = character.influence_set.create(contact = f.clean_data['contact'], description = f.clean_data['description'])
-                       message = "Influence added"
+                       f.save()
+                       message = _("Influence added.")
                        f = None
        else:
-               f = AddInfluenceForm()
+               f = InfluenceForm()
+       
+       if f:
+               # Only allow characters of the current user
+               f.fields['character']._set_queryset(request.user.character_set.all())
+
+       return render_to_response('influences/character_addinfluence.html', {'message' : message, 'form' : f})
+
+def addCharacter(request):
+    message = None
+    f = CharacterForm(request=request)
+    if (f.is_valid()):
+        c = f.save(commit=False)
+        c.player = request.user
+        c.save()
+        message = _("Character added.")
+        f = None
 
-       return render_to_response('influences/character_addinfluence.html', {'character' : character, 'message' : message, 'form' : f})
+    return render_to_response('influences/add_character.html', {'message' : message, 'form' : f})