from django.shortcuts import redirect, render_to_response, get_object_or_404
from django.template import RequestContext
-from project.dae.forms import PosteForm
+from project.dae.forms import PosteForm, PosteFinancementForm
from project.dae import models as dae
from project.rh_v1 import models as rh
return render_to_response('dae/index.html', {}, RequestContext(request))
-def poste(request, id=None):
+def poste(request, key=None):
""" Formulaire pour un poste.
Permet de créer ou modifier un poste. Si le poste n'existe que dans rh_v1
"""
poste, data, vars = None, dict(), dict()
- if request.POST:
- data.update(dict(request.POST.items()))
-
- if id:
+ if key:
# Poste existant
- data['poste'] = id
- type, id = id.split('-')
+ data['poste'] = key
+ type, id = key.split('-')
if type == 'dae':
poste = get_object_or_404(dae.Poste, pk=id)
poste = dae.Poste(id_rh=p, nom=p.type_poste.nom)
for field in ('implantation', 'type_poste', 'actif'):
setattr(poste, field, getattr(p, field))
+ else:
+ # Nouveau poste
+ vars['new'] = True
if request.POST:
+ data.update(dict(request.POST.items()))
form = PosteForm(data, instance=poste)
- if form.is_valid():
+ if 'save' in data and form.is_valid():
poste = form.save()
- return redirect('poste', id='dae-%s' % poste.id)
+ return redirect('poste', key='dae-%s' % poste.id)
else:
# 'initial' évite la validation prémature lors d'une copie de poste de
# rh_v1 vers dae.
form = PosteForm(initial=data, instance=poste)
- vars['form'] = form
+ vars.update(dict(form=form, poste=poste, poste_key=key))
return render_to_response('dae/poste.html', vars, RequestContext(request))
+
+
+def financement(request, key=None, id=None):
+ """ Formulaire pour une source de financement pour un poste. """
+ poste, financement, data, vars = None, None, dict(), dict()
+
+ if request.POST:
+ data.update(dict(request.POST.items()))
+
+ if key:
+ type, poste_id = key.split('-')
+ if type == 'dae':
+ poste = get_object_or_404(dae.Poste, pk=poste_id)
+ if id:
+ # Financement existant
+ financement = get_object_or_404(dae.PosteFinancement, pk=id)
+ else:
+ # Nouveau financement
+ financement = dae.PosteFinancement(poste_id=poste_id)
+ vars['new'] = True
+
+ if not financement:
+ return Http404
+
+ if request.POST:
+ form = PosteFinancementForm(data, instance=financement)
+ if 'delete' in data:
+ financement.delete()
+ elif 'save' in data and form.is_valid():
+ financement = form.save()
+ return redirect('poste', key='dae-%s' % poste.id)
+ else:
+ form = PosteFinancementForm(initial=data, instance=financement)
+
+ vars.update(dict(form=form, financement=financement))
+
+ return render_to_response('dae/financement.html', vars,
+ RequestContext(request))