* In the add influence view, preselect the first character if it is the user's only...
[matthijs/projects/xerxes.git] / influences / views.py
1 from django.shortcuts import render_to_response
2 from django.shortcuts import get_object_or_404
3 from django.utils.translation import ugettext as _
4 from django.contrib.auth.models import User
5 from ee.influences.models import Character
6 from ee.influences.models import Influence
7 from ee.tools.forms import ContextModelForm
8
9 class InfluenceForm(ContextModelForm):
10     class Meta:
11         model = Influence
12         fields = ('character', 'contact', 'description')
13
14 class CharacterForm(ContextModelForm):
15     class Meta:
16         model = Character
17         fields = ('name')
18
19 def add(request, character_id):
20     message = None
21
22     initial = {}
23     # Get the current user's characters
24     chars = request.user.character_set.all()
25
26     if (character_id):
27         initial['character'] = character_id
28     elif (chars.count() == 1):
29         initial['character'] = chars[0].id
30
31     f = InfluenceForm(request=request, initial=initial)
32     if (f.is_valid()):
33         f.save()
34         message = _("Influence added.")
35         f = None
36      
37     # Only allow characters of the current user
38     if f:
39         f.fields['character']._set_queryset(chars)
40
41     return render_to_response('influences/add.html', {'message' : message, 'form' : f})
42
43 def addCharacter(request):
44     message = None
45     f = CharacterForm(request=request)
46     if (f.is_valid()):
47         c = f.save(commit=False)
48         c.player = request.user
49         c.save()
50         message = _("Character added.")
51         f = None
52
53     return render_to_response('influences/add_character.html', {'message' : message, 'form' : f})
54
55 def index(request):
56     characters = request.user.character_set.all()
57     influences = Influence.objects.filter(character__in=characters)
58     return render_to_response('influences/index.html', {'characters' : characters, 'influences' : influences})