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