Ajouté les sources de financement des postes
[auf_rh_dae.git] / project / dae / views.py
1 # -*- encoding: utf-8 -*-
2 from django.shortcuts import redirect, render_to_response, get_object_or_404
3 from django.template import RequestContext
4
5 from project.dae.forms import PosteForm, PosteFinancementForm
6 from project.dae import models as dae
7 from project.rh_v1 import models as rh
8
9
10 def index(request):
11 return render_to_response('dae/index.html', {}, RequestContext(request))
12
13
14 def poste(request, key=None):
15 """ Formulaire pour un poste.
16
17 Permet de créer ou modifier un poste. Si le poste n'existe que dans rh_v1
18 il est automatiquement copié dans dae.
19
20 """
21 poste, data, vars = None, dict(), dict()
22
23 if key:
24 # Poste existant
25 data['poste'] = key
26 type, id = key.split('-')
27
28 if type == 'dae':
29 poste = get_object_or_404(dae.Poste, pk=id)
30 elif type == 'rh':
31 p = get_object_or_404(rh.Poste, id=id)
32 # Initialisation avec les valeurs du poste de rh_v1
33 poste = dae.Poste(id_rh=p, nom=p.type_poste.nom)
34 for field in ('implantation', 'type_poste', 'actif'):
35 setattr(poste, field, getattr(p, field))
36 else:
37 # Nouveau poste
38 vars['new'] = True
39
40 if request.POST:
41 data.update(dict(request.POST.items()))
42 form = PosteForm(data, instance=poste)
43 if 'save' in data and form.is_valid():
44 poste = form.save()
45 return redirect('poste', key='dae-%s' % poste.id)
46 else:
47 # 'initial' évite la validation prémature lors d'une copie de poste de
48 # rh_v1 vers dae.
49 form = PosteForm(initial=data, instance=poste)
50
51 vars.update(dict(form=form, poste=poste, poste_key=key))
52
53 return render_to_response('dae/poste.html', vars, RequestContext(request))
54
55
56 def financement(request, key=None, id=None):
57 """ Formulaire pour une source de financement pour un poste. """
58 poste, financement, data, vars = None, None, dict(), dict()
59
60 if request.POST:
61 data.update(dict(request.POST.items()))
62
63 if key:
64 type, poste_id = key.split('-')
65 if type == 'dae':
66 poste = get_object_or_404(dae.Poste, pk=poste_id)
67 if id:
68 # Financement existant
69 financement = get_object_or_404(dae.PosteFinancement, pk=id)
70 else:
71 # Nouveau financement
72 financement = dae.PosteFinancement(poste_id=poste_id)
73 vars['new'] = True
74
75 if not financement:
76 return Http404
77
78 if request.POST:
79 form = PosteFinancementForm(data, instance=financement)
80 if 'delete' in data:
81 financement.delete()
82 elif 'save' in data and form.is_valid():
83 financement = form.save()
84 return redirect('poste', key='dae-%s' % poste.id)
85 else:
86 form = PosteFinancementForm(initial=data, instance=financement)
87
88 vars.update(dict(form=form, financement=financement))
89
90 return render_to_response('dae/financement.html', vars,
91 RequestContext(request))