Merge remote branch 'origin/dev' into dae
[auf_rh_dae.git] / project / dae / views.py
CommitLineData
5d680e84
NC
1# -*- encoding: utf-8 -*-
2from django.shortcuts import redirect, render_to_response, get_object_or_404
3from django.template import RequestContext
4
3ed49093 5from project.dae.forms import PosteForm, PosteFinancementForm
5d680e84
NC
6from project.dae import models as dae
7from project.rh_v1 import models as rh
8
9
10def index(request):
11 return render_to_response('dae/index.html', {}, RequestContext(request))
12
13
3ed49093 14def 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()
24d44b1b 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
56def 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('-')
703e5cfb 65 vars['poste_key'] = key
3ed49093
NC
66 if type == 'dae':
67 poste = get_object_or_404(dae.Poste, pk=poste_id)
68 if id:
69 # Financement existant
70 financement = get_object_or_404(dae.PosteFinancement, pk=id)
703e5cfb 71 vars['financement_id'] = id
3ed49093
NC
72 else:
73 # Nouveau financement
74 financement = dae.PosteFinancement(poste_id=poste_id)
75 vars['new'] = True
76
77 if not financement:
78 return Http404
79
80 if request.POST:
81 form = PosteFinancementForm(data, instance=financement)
82 if 'delete' in data:
83 financement.delete()
84 elif 'save' in data and form.is_valid():
85 financement = form.save()
86 return redirect('poste', key='dae-%s' % poste.id)
87 else:
88 form = PosteFinancementForm(initial=data, instance=financement)
89
90 vars.update(dict(form=form, financement=financement))
91
703e5cfb
NC
92 if 'ajax' in request.GET:
93 template = 'dae/financement.html'
94 else:
95 template = 'dae/financement-full.html'
96 return render_to_response(template, vars, RequestContext(request))