poste consulter view
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Wed, 27 Apr 2011 19:00:51 +0000 (15:00 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Wed, 27 Apr 2011 19:00:51 +0000 (15:00 -0400)
project/dae/models.py
project/dae/templates/dae/poste_consulter.html [new file with mode: 0644]
project/dae/templates/dae/postes_liste.html
project/dae/urls.py
project/dae/views.py

index 55d83c6..dfa36c9 100644 (file)
@@ -209,6 +209,74 @@ class Poste(PosteWorkflow, models.Model):
             implantation_devise = 5 # EUR
         return implantation_devise
 
+    #####################
+    # Classement de poste
+    #####################
+
+    def get_couts_minimum(self):
+        return (float)(self.salaire_min + self.indemn_min + self.autre_min)
+
+    def get_taux_minimum(self):
+        try:
+            return rh.TauxChange.objects.filter(implantation=self.implantation, devise=self.devise_min)[0].taux
+        except:
+            return 1
+
+    def get_couts_minimum_euros(self):
+        return self.get_couts_minimum() * self.get_taux_minimum()
+
+    def get_couts_maximum(self):
+        return (float)(self.salaire_max + self.indemn_max + self.autre_max)
+
+    def get_taux_maximum(self):
+        try:
+            return rh.TauxChange.objects.filter(implantation=self.implantation, devise=self.devise_max)[0].taux
+        except:
+            return 1
+
+    def get_couts_maximum_euros(self):
+        return self.get_couts_maximum() * self.get_taux_maximum()
+
+    ######################
+    # Comparaison de poste
+    ######################
+    
+    def get_taux_comparaison(self):
+        try:
+            return rh.TauxChange.objects.filter(implantation=self.implantation, devise=self.devise_comparaison)[0].taux
+        except:
+            return 1
+
+    def get_comp_universite_min_euros(self):
+        return (float)(self.comp_universite_min) * self.get_taux_comparaison()
+
+    def get_comp_fonctionpub_min_euros(self):
+        return (float)(self.comp_fonctionpub_min) * self.get_taux_comparaison()
+
+    def get_comp_locale_min_euros(self):
+        return (float)(self.comp_locale_min) * self.get_taux_comparaison()
+
+    def get_comp_ong_min_euros(self):
+        return (float)(self.comp_ong_min) * self.get_taux_comparaison()
+
+    def get_comp_autre_min_euros(self):
+        return (float)(self.comp_autre_min) * self.get_taux_comparaison()
+
+    def get_comp_universite_max_euros(self):
+        return (float)(self.comp_universite_max) * self.get_taux_comparaison()
+
+    def get_comp_fonctionpub_max_euros(self):
+        return (float)(self.comp_fonctionpub_max) * self.get_taux_comparaison()
+
+    def get_comp_locale_max_euros(self):
+        return (float)(self.comp_locale_max) * self.get_taux_comparaison()
+
+    def get_comp_ong_max_euros(self):
+        return (float)(self.comp_ong_max) * self.get_taux_comparaison()
+
+    def get_comp_autre_max_euros(self):
+        return (float)(self.comp_autre_max) * self.get_taux_comparaison()
+
     def __unicode__(self):
         """
         Cette fonction est consommatrice SQL car elle cherche les dossiers qui ont été liés à celui-ci.
@@ -253,6 +321,9 @@ class PosteFinancement(models.Model):
     class Meta:
         ordering = ['type']
 
+    def __unicode__(self):
+        return u"%s %s %s" % (self.get_type_display(), self.pourcentage, self.commentaire)
+
 GENRE_CHOICES = (
     ('m', 'Homme'),
     ('f', 'Femme'),
diff --git a/project/dae/templates/dae/poste_consulter.html b/project/dae/templates/dae/poste_consulter.html
new file mode 100644 (file)
index 0000000..819596e
--- /dev/null
@@ -0,0 +1,217 @@
+{% extends 'base.html' %}
+{% load adminmedia %}
+
+{% block title %}RH - DAE - Poste{% endblock %}
+{% block titre %}Ressources humaines{% endblock %}
+{% block sous_titre %}
+Demande d'autorisation d'embauche
+{% endblock %}
+
+{% block extrahead %}
+  <script src="{{ MEDIA_URL }}js/jquery-1.5.1.min.js"
+          type="text/javascript"></script>
+  <script src="{{ MEDIA_URL }}js/jquery-ui-1.8.11.custom.min.js"
+          type="text/javascript"></script>
+
+  <script src="{{ MEDIA_URL }}js/dae.js" /></script>
+  <script src="{{ MEDIA_URL }}js/dae-poste.js" /></script>
+  <link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/dae.css" />
+
+{% endblock %}
+
+{% block main %}
+<h1>Demande d'autorisation de création de poste</h1>
+
+    <fieldset>
+    <h2>{{ poste.nom }} ({{ poste.implantation.nom }})</h2>
+    <table>
+        <tbody>
+        <tr>
+            <th>Implantation</th>
+            <td>{{ poste.implantation }}</td>
+        </tr>
+        <tr>
+            <th>Type poste</th>
+            <td>{{ poste.type_poste }}</td>
+        </tr>
+        <tr>
+            <th>Service</th>
+            <td>{{ poste.service }}</td>
+        </tr>
+        <tr>
+            <th>Responsable</th>
+            <td>{{ poste.responsable }}</td>
+        </tr>
+        </tbody>
+    </table>
+    </fieldset>
+
+    <fieldset>
+    <h2>Recrutement</h2>
+    <table>
+        <tbody>
+        <tr>
+            <th>Statut</th>
+            <th>local</th><td>{% if poste.local %}oui{% else %}non{% endif %}</td>
+            <th>expatrié</th><td>{% if poste.expatrie %}oui{% else %}non{% endif %}</td>
+            <th>mise à disposition</th><td>{% if poste.mise_a_disposition %}oui{% else %}non{% endif %}</td>
+        </tr>
+        <tr>
+            <th>Appel</th>
+            <td colspan="6">{{ poste.appel }}</td>
+        </tr>
+        </tbody>
+    </table>
+    </fieldset>
+
+    <fieldset>
+    <h2>Durée prévue du poste </h2> 
+    <span class="info">Indépendamment du titulaire du poste</span>
+    <table>
+        <tbody>
+        <tr>
+            <th>Durée {% if not poste.date_fin %}indéterminée{% endif %}</th>
+            {% if poste.date_fin %}
+                <td>du {{ poste.date_debut }}</td>
+                <td>au {{ poste.date_fin }}</td>
+            {% else %}
+                <td>à partir du {{ poste.date_debut }}</td>
+            {% endif %}
+        </tr>
+        <tr>
+            <th>Régime travail</th>
+            <td colspan="4">{{ poste.regime_travail }}%</td>
+        </tr>
+        <tr>
+            <th>Nombre d'heure par semaine</th>
+            <td>{{ poste.regime_travail_nb_heure_semaine }}H</td>
+        </tr>
+
+        </tbody>
+    </table>
+    </fieldset>
+
+    <fieldset>
+    <h2>Classement du poste</h2>
+    <table id="classement">
+        <tbody>
+        <tr>
+            <th></th>
+            <th>Échelon AUF</th>
+            <th>Salaire de base</th>
+            <th>Indemnité, responsabilité (le cas échéant)</th>
+            <th>Autres</th>
+            <th>TOTAL</th>
+            <th>Taux&nbsp;>&nbsp;€</th>
+            <th>Conversion EUR</th>
+        </tr>
+        <tr>
+            <th>Minimum</th>
+            <td>{{ poste.classement_min }}</td>
+            <td class="montant">{{ poste.salaire_min|floatformat }} {{ poste.devise_min.code }}</td>
+            <td class="montant">{{ poste.indemn_min|floatformat }} {{ poste.devise_min.code }}</td>
+            <td class="montant">{{ poste.autre_min|floatformat }} {{ poste.devise_min.code }}</td>
+            <td class="montant">{{ poste.get_couts_minimum|floatformat }} {{ poste.devise_min.code }}</td>
+            <td>{{ poste.get_taux_minimum }}</td>
+            <td class="montant">{{ poste.get_couts_minimum_euros|floatformat }} EUR</td>
+        </tr>
+        <tr>
+            <th>Maximum</th>
+            <td>{{ poste.classement_max }}</td>
+            <td class="montant">{{ poste.salaire_max|floatformat }} {{ poste.devise_max.code }}</td>
+            <td class="montant">{{ poste.indemn_max|floatformat }} {{ poste.devise_max.code }}</td>
+            <td class="montant">{{ poste.autre_max|floatformat }} {{ poste.devise_max.code }}</td>
+            <td class="montant">{{ poste.get_couts_maximum|floatformat }} {{ poste.devise_max.code }}</td>
+            <td>{{ poste.get_taux_maximum }}</td>
+            <td class="montant">{{ poste.get_couts_maximum_euros|floatformat }} EUR</td>
+        </tr>
+        </tbody>
+    </table>
+
+    <p class="info">N.B Conversion en EUROS au taux de change budgétaire</p>
+    </fieldset>
+
+    {% comment %}{% if new %}{% endcomment %}
+    <fieldset>
+    <h2>Éléments de comparaison</h2>
+    <span class="info">Compléter uniquement lors de la création d'un poste</span>
+    <table>
+        <tbody>
+        <tr>
+            <th>Devise</th>
+            <td>{{ poste.devise_comparaison }}</td>
+        </tr>
+        </tbody>
+    </table>
+    <table id="elements-comparaison">
+        <tbody>
+        <tr>
+            <th></th>
+            <th>Université</th>
+            <th>Fonction publique</th>
+            <th>Entreprise locale</th>
+            <th>ONG</th>
+            <th>Autre</th>
+        </tr>
+        <tr>
+            <th>Minimum</th>
+            <td>{{ poste.comp_universite_min|floatformat }} {{  poste.devise_comparaison.code }}
+                ({{ poste.get_comp_universite_min_euros|floatformat }} EUR)
+            </td>
+            <td>{{ poste.comp_fonctionpub_min|floatformat }} {{  poste.devise_comparaison.code }}
+                ({{ poste.get_comp_fonctionpub_min_euros|floatformat }} EUR)
+            </td>
+            <td>{{ poste.comp_locale_min|floatformat }} {{  poste.devise_comparaison.code }}
+                ({{ poste.get_comp_locale_min_euros|floatformat }} EUR)
+            </td>
+            <td>{{ poste.comp_ong_min|floatformat }} {{  poste.devise_comparaison.code }}
+                ({{ poste.get_comp_ong_min_euros|floatformat }} EUR)
+            </td>
+            <td>{{ poste.comp_autre_min|floatformat }} {{  poste.devise_comparaison.code }}
+                ({{ poste.get_comp_autre_min_euros|floatformat }} EUR)
+            </td>
+        </tr>
+        <tr>
+            <th>Maximum</th>
+            <td>{{ poste.comp_universite_max }} {{  poste.devise_comparaison.code }}
+                ({{ poste.get_comp_universite_max_euros|floatformat }} EUR)
+            </td>
+            <td>{{ poste.comp_fonctionpub_max }} {{  poste.devise_comparaison.code }}
+                ({{ poste.get_comp_fonctionpub_max_euros|floatformat }} EUR)
+            </td>
+            <td>{{ poste.comp_locale_max }} {{  poste.devise_comparaison.code }}
+                ({{ poste.get_comp_locale_max_euros|floatformat }} EUR)
+            </td>
+            <td>{{ poste.comp_ong_max }} {{  poste.devise_comparaison.code }}
+                ({{ poste.get_comp_ong_min_euros|floatformat }} EUR)
+            </td>
+            <td>{{ poste.comp_autre_max }} {{  poste.devise_comparaison.code }}
+                ({{ poste.get_comp_autre_max_euros|floatformat }} EUR)
+            </td>
+        </tr>
+        </tbody>
+    </table>
+    </fieldset>
+
+    <fieldset>
+    <h2>Pièces jointes</h2>
+    <ul>
+    {% for pj in poste.postepiece_set.all %}
+        <li><a href="{{ pj.fichier.url }}">{{ pj.nom }}</a></li>
+    {% endfor %}
+    </ul>
+    </fieldset>
+
+    <fieldset>
+    <h2>Financement</h2>
+    {% for f in poste.financements.all %}
+        <li>{{ f }}</li>
+    {% endfor %}
+    </fieldset>
+
+    <fieldset>
+    <h2>Justification de la demande</h2>
+    <div>{{ poste.justification|linebreaks }}</div>
+    </fieldset>
+
+{% endblock %}
index ec120d7..1101ce4 100644 (file)
@@ -13,7 +13,7 @@
     </tr>
 {% for poste in postes %}
     <tr>
-        <td><a href="{% url poste poste.key %}">{{ poste }}</a></td>
+        <td><a href="{% url poste_consulter poste.key %}">{{ poste }}</a></td>
     </tr>
 
 {% endfor %}
index 0fc488c..e4a93cf 100644 (file)
@@ -7,6 +7,7 @@ urlpatterns = patterns(
 
     # poste
     url(r'^postes$', 'postes_liste', name='dae_postes_liste'),
+    url(r'^poste/consulter/(?P<key>.*)$', 'poste_consulter', name='poste_consulter'),
     url(r'^poste$', 'poste', name='poste'),
     url(r'^poste/(?P<key>.*)$', 'poste', name='poste'),
 
index 66a46cf..8ad8e6e 100644 (file)
@@ -25,6 +25,13 @@ def index(request):
     return render_to_response('dae/index.html', {}, RequestContext(request))
 
 @admin_required
+def poste_consulter(request, key):
+    source, id = key.split('-')
+    poste = get_object_or_404(dae.Poste, pk=id)
+    vars = {'poste' : poste,  }
+    return render_to_response('dae/poste_consulter.html', vars, RequestContext(request))
+
+@admin_required
 def poste(request, key=None):
     """ Formulaire pour un poste.