f463e74144211e1eb7d7754bc7b109e30233ec19
[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 def postes_liste(request):
56 """ Liste des postes
57 """
58 postes = dae.Poste.objects.all()
59 vars = dict()
60 vars['postes'] = postes
61 return render_to_response('dae/postes_liste.html', vars, RequestContext(request))
62
63 def financement(request, key=None, id=None):
64 """ Formulaire pour une source de financement pour un poste. """
65 poste, financement, data, vars = None, None, dict(), dict()
66
67 if request.POST:
68 data.update(dict(request.POST.items()))
69
70 if key:
71 type, poste_id = key.split('-')
72 vars['poste_key'] = key
73 if type == 'dae':
74 poste = get_object_or_404(dae.Poste, pk=poste_id)
75 if id:
76 # Financement existant
77 financement = get_object_or_404(dae.PosteFinancement, pk=id)
78 vars['financement_id'] = id
79 else:
80 # Nouveau financement
81 financement = dae.PosteFinancement(poste_id=poste_id)
82 vars['new'] = True
83
84 if not financement:
85 return Http404
86
87 if request.POST:
88 form = PosteFinancementForm(data, instance=financement)
89 if 'delete' in data:
90 financement.delete()
91 elif 'save' in data and form.is_valid():
92 financement = form.save()
93 return redirect('poste', key='dae-%s' % poste.id)
94 else:
95 form = PosteFinancementForm(initial=data, instance=financement)
96
97 vars.update(dict(form=form, financement=financement))
98
99 if 'ajax' in request.GET:
100 template = 'dae/financement.html'
101 else:
102 template = 'dae/financement-full.html'
103 return render_to_response(template, vars, RequestContext(request))