1 # -*- encoding: utf-8 -*-
2 from django
.shortcuts
import redirect
, render_to_response
, get_object_or_404
3 from django
.template
import RequestContext
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
9 from project
.decorators
import admin_required
12 return render_to_response('dae/index.html', {}, RequestContext(request
))
14 def poste(request
, key
=None):
15 """ Formulaire pour un poste.
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.
21 poste
, data
, vars = None, dict(), dict()
26 type, id = key
.split('-')
29 poste
= get_object_or_404(dae
.Poste
, pk
=id)
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
))
41 data
.update(dict(request
.POST
.items()))
42 form
= PosteForm(data
, instance
=poste
)
43 if 'save' in data
and form
.is_valid():
45 return redirect('poste', key
='dae-%s' % poste
.id)
47 # 'initial' évite la validation prémature lors d'une copie de poste de
49 form
= PosteForm(initial
=data
, instance
=poste
)
51 vars.update(dict(form
=form
, poste
=poste
, poste_key
=key
))
53 return render_to_response('dae/poste.html', vars, RequestContext(request
))
55 def postes_liste(request
):
58 postes
= dae
.Poste
.objects
.all()
60 vars['postes'] = postes
61 return render_to_response('dae/postes_liste.html', vars, RequestContext(request
))
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()
68 data
.update(dict(request
.POST
.items()))
71 type, poste_id
= key
.split('-')
72 vars['poste_key'] = key
74 poste
= get_object_or_404(dae
.Poste
, pk
=poste_id
)
76 # Financement existant
77 financement
= get_object_or_404(dae
.PosteFinancement
, pk
=id)
78 vars['financement_id'] = id
81 financement
= dae
.PosteFinancement(poste_id
=poste_id
)
88 form
= PosteFinancementForm(data
, instance
=financement
)
91 elif 'save' in data
and form
.is_valid():
92 financement
= form
.save()
93 return redirect('poste', key
='dae-%s' % poste
.id)
95 form
= PosteFinancementForm(initial
=data
, instance
=financement
)
97 vars.update(dict(form
=form
, financement
=financement
))
99 if 'ajax' in request
.GET
:
100 template
= 'dae/financement.html'
102 template
= 'dae/financement-full.html'
103 return render_to_response(template
, vars, RequestContext(request
))