Ajouté les sources de financement des postes
[auf_rh_dae.git] / project / dae / views.py
index 3904725..93efeeb 100644 (file)
@@ -2,7 +2,7 @@
 from django.shortcuts import redirect, render_to_response, get_object_or_404
 from django.template import RequestContext
 
 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
 
 from project.dae import models as dae
 from project.rh_v1 import models as rh
 
@@ -11,7 +11,7 @@ def index(request):
     return render_to_response('dae/index.html', {}, RequestContext(request))
 
 
     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
     """ Formulaire pour un poste.
 
     Permet de créer ou modifier un poste. Si le poste n'existe que dans rh_v1
@@ -20,13 +20,10 @@ def poste(request, id=None):
     """
     poste, data, vars = None, dict(), dict()
 
     """
     poste, data, vars = None, dict(), dict()
 
-    if request.POST:
-        data.update(dict(request.POST.items()))
-
-    if id:
+    if key:
         # Poste existant
         # 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)
 
         if type == 'dae':
             poste = get_object_or_404(dae.Poste, pk=id)
@@ -36,17 +33,59 @@ def poste(request, id=None):
             poste = dae.Poste(id_rh=p, nom=p.type_poste.nom)
             for field in ('implantation', 'type_poste', 'actif'):
                 setattr(poste, field, getattr(p, field))
             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:
 
     if request.POST:
+        data.update(dict(request.POST.items()))
         form = PosteForm(data, instance=poste)
         form = PosteForm(data, instance=poste)
-        if form.is_valid():
+        if 'save' in data and form.is_valid():
             poste = form.save()
             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)
 
     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))
 
     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))