{% endblock %}
{% block main %}
+ <h2>
+ {% if new %}
+ Nouveau poste
+ {% else %}
+ Poste
+ {% endif %}
+ </h2>
+
<form action="" method="post">
<table cellspacing="0">
{{ form.as_table }}
</table>
- <input type="submit" name="submit" value="Sauvegarder" />
+ <input type="submit" name="save" value="Sauvegarder" />
</form>
+
<script type="text/javascript">
$('#id_poste').change(function() {
window.location = '{% url poste %}/' + $(this).val();
});
</script>
+
+ <h2>Financement</h2>
+
+ <table cellspacing="0">
+ <tr>
+ <th>Type</th>
+ <th>Montant</th>
+ <th>Devise</th>
+ <th>Pourcentage</th>
+ <th>Commentaire</th>
+ <th></th>
+ </tr>
+ {% for fin in poste.financements.all %}
+ <tr>
+ <td>{{ fin.type }}</td>
+ <td>{{ fin.montant }}</td>
+ <td>{{ fin.devise }}</td>
+ <td>{{ fin.pourcentage }}</td>
+ <td>{{ fin.commentaire }}</td>
+ <td><a href="{% url financement poste_key fin.id %}">Modifier</a></td>
+ </tr>
+ {% empty %}
+ <tr>
+ <td colspan="5">
+ {% if new %}
+ Vous devez enregister ce nouveau poste avant de pouvoir spécifier
+ la ou les sources de financement.
+ {% else %}
+ Aucun financement au registre
+ {% endif %}
+ </td>
+ </tr>
+ {% endfor %}
+ </table>
+ {% if not new %}
+ <a href="{% url financement poste_key %}">
+ Ajouter une source de financement
+ </a>
+ {% endif %}
{% endblock %}
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))