Commit | Line | Data |
---|---|---|
5d680e84 NC |
1 | # -*- encoding: utf-8 -*- |
2 | from django.shortcuts import redirect, render_to_response, get_object_or_404 | |
3 | from django.template import RequestContext | |
4 | ||
3ed49093 | 5 | from project.dae.forms import PosteForm, PosteFinancementForm |
5d680e84 NC |
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 | ||
3ed49093 | 14 | def poste(request, key=None): |
5d680e84 NC |
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 | ||
3ed49093 | 23 | if key: |
5d680e84 | 24 | # Poste existant |
3ed49093 NC |
25 | data['poste'] = key |
26 | type, id = key.split('-') | |
5d680e84 NC |
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)) | |
3ed49093 NC |
36 | else: |
37 | # Nouveau poste | |
38 | vars['new'] = True | |
5d680e84 NC |
39 | |
40 | if request.POST: | |
3ed49093 | 41 | data.update(dict(request.POST.items())) |
5d680e84 | 42 | form = PosteForm(data, instance=poste) |
3ed49093 | 43 | if 'save' in data and form.is_valid(): |
5d680e84 | 44 | poste = form.save() |
3ed49093 | 45 | return redirect('poste', key='dae-%s' % poste.id) |
5d680e84 NC |
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 | ||
3ed49093 | 51 | vars.update(dict(form=form, poste=poste, poste_key=key)) |
5d680e84 NC |
52 | |
53 | return render_to_response('dae/poste.html', vars, RequestContext(request)) | |
3ed49093 NC |
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)) |