Merge branch 'dev' into test
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 12 May 2011 14:42:47 +0000 (10:42 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 12 May 2011 14:42:47 +0000 (10:42 -0400)
project/dae/forms.py
project/dae/models.py
project/dae/templates/dae/embauche-remun-consulter.html
project/dae/templates/dae/poste.html
project/dae/templates/dae/poste_resume.html

index a35ecc2..d6eda59 100644 (file)
@@ -143,6 +143,17 @@ class JustificationAutreEmployeForm(inlineformset_factory(dae.Dossier,
 
 class PosteForm(forms.ModelForm):
     """ Formulaire des postes. """
+
+    responsable=AutoCompleteSelectField('responsables', required=True)
+    #responsable = forms.ModelChoiceField(
+    #        queryset=rh.Poste.objects.select_related(depth=1))
+
+    # La liste des choix est laissée vide. Voir __init__ pour la raison.
+    poste = forms.ChoiceField(label="Nouveau poste ou évolution du poste",
+                              choices=(), required=False)
+
+    valeur_point_min  = forms.ModelChoiceField(queryset=rh.ValeurPoint.actuelles.all(), required=False)
+    valeur_point_max = forms.ModelChoiceField(queryset=rh.ValeurPoint.actuelles.all(), required=False)
     
     
     class Meta:
@@ -173,17 +184,6 @@ class PosteForm(forms.ModelForm):
                        #devise_max=forms.Select(attrs={'disabled':'disabled'}),
                     )
 
-    responsable=AutoCompleteSelectField('responsables', required=True)
-    #responsable = forms.ModelChoiceField(
-    #        queryset=rh.Poste.objects.select_related(depth=1))
-
-    # La liste des choix est laissée vide. Voir __init__ pour la raison.
-    poste = forms.ChoiceField(label="Nouveau poste ou évolution du poste",
-                              choices=(), required=False)
-
-    valeur_point_min  = forms.ModelChoiceField(queryset=rh.ValeurPoint.actuelles.all(), required=False)
-    valeur_point_max = forms.ModelChoiceField(queryset=rh.ValeurPoint.actuelles.all(), required=False)
-
     def __init__(self, *args, **kwargs):
         """ Mise à jour dynamique du contenu du menu des postes.
 
@@ -243,7 +243,15 @@ class PosteForm(forms.ModelForm):
             self._errors["valeur_point_min"] = self.error_class([msg])
             self._errors["valeur_point_max"] = self.error_class([msg])
             raise forms.ValidationError("Les valeurs de point sont vides")
-        
+
+        print cleaned_data.get("local")
+        if cleaned_data.get("local") is False and cleaned_data.get("expatrie") is False:
+            msg = "Le poste doit au moins être ouvert localement ou aux expatriés"
+            self._errors["local"] = self.error_class([msg])
+            self._errors["expatrie"] = ''
+            raise forms.ValidationError(msg)
+            
+
         return cleaned_data
 
 
@@ -308,14 +316,27 @@ class DossierForm(forms.ModelForm):
                        contrat_date_fin=admin_widgets.AdminDateWidget(),
                     )
 
+WF_HELP_TEXT = """Ce champs affiche par défaut l'étape de traitement de la demande.
+La liste déroulante vous permet de sélectionner l'étape suivante."""
+
 class PosteWorkflowForm(WorkflowFormMixin):
-    
+   
     class Meta:
         fields = ('etat', )
         model = dae.Poste
 
+    def __init__(self, *args, **kwargs):
+        super(self.__class__, self).__init__(*args, **kwargs)
+        self.fields['etat'].help_text = WF_HELP_TEXT
+
+
 class DossierWorkflowForm(WorkflowFormMixin):
     
     class Meta:
         fields = ('etat', )
         model = dae.Dossier
+
+    def __init__(self, *args, **kwargs):
+        super(self.__class__, self).__init__(*args, **kwargs)
+        self.fields['etat'].help_text = WF_HELP_TEXT
+
index 2f832d8..e1a2e97 100644 (file)
@@ -203,7 +203,7 @@ class Poste(PosteWorkflow, models.Model):
         try:
             return rh.TauxChange.objects.filter(implantation=self.implantation, devise=self.devise_min)[0].taux
         except:
-            return 1
+            raise Exception('Taux indisponible pour la devise %s (%s)' % (self.devise_min, self.implantation))
 
     def get_couts_minimum_euros(self):
         return self.get_couts_minimum() * self.get_taux_minimum()
@@ -215,11 +215,37 @@ class Poste(PosteWorkflow, models.Model):
         try:
             return rh.TauxChange.objects.filter(implantation=self.implantation, devise=self.devise_max)[0].taux
         except:
-            return 1
+            raise Exception('Taux indisponible pour la devise %s (%s)' % (self.devise_max, self.implantation))
 
     def get_couts_maximum_euros(self):
         return self.get_couts_maximum() * self.get_taux_maximum()
 
+
+    def show_taux_minimum(self):
+        try:
+            return self.get_taux_minimum()
+        except Exception, e:
+            return e
+
+    def show_couts_minimum_euros(self):
+        try:
+            return self.get_couts_minimum_euros()
+        except Exception, e:
+            return e
+
+    def show_taux_maximum(self):
+        try:
+            return self.get_taux_maximum()
+        except Exception, e:
+            return e
+
+    def show_couts_maximum_euros(self):
+        try:
+            return self.get_couts_maximum_euros()
+        except Exception, e:
+            return e
+
+
     ######################
     # Comparaison de poste
     ######################
index ae127f5..2119f13 100644 (file)
@@ -9,8 +9,8 @@
 
 <tr>
     <th colspan="5">Coûts AUF</th>
-    <th id="sous-total-cout" class="montant">{{ dossier.get_total_couts_auf|floatformat:0 }}</th>
-    <th>EUR</th>
+    <th id="sous-total-cout" class="montant">{{ dossier.get_total_couts_auf|floatformat:0 }}€</th>
+    <th></th>
 </tr>
 
 {% for remun in dossier.get_couts_auf %}
@@ -27,8 +27,8 @@
 
 <tr>
     <th colspan="5">BSTG - Salaire de mise à disposition</th>
-    <th id="sous-total-aide" class="montant">{{ dossier.get_total_aides_auf|floatformat:0 }}</th>
-    <th>EUR</th>
+    <th id="sous-total-aide" class="montant">{{ dossier.get_total_aides_auf|floatformat:0 }}€</th>
+    <th></th>
 </tr>
 
 {% for remun in dossier.get_aides_auf %}
@@ -45,6 +45,6 @@
 
 <tr>
     <th colspan="5">TOTAL</th>
-    <th id="remun-total" class="montant">{{ dossier.get_total_remun|floatformat:0 }}</th>
-    <th>EUR</th>
+    <th id="remun-total" class="montant">{{ dossier.get_total_remun|floatformat:0 }}€</th>
+    <th></th>
 </tr>
index 39243ab..09a630b 100644 (file)
@@ -181,9 +181,9 @@ Demande d'autorisation d'embauche
                 {{ form.salaire_min.errors }}
             </td>
             <td><span class="devise_code">EUR</span></td>
-            <td>{{ form.indemn_min }}</td>
+            <td>{{ form.indemn_min }} {{ form.indemn_min.errors }}</td>
             <td><span class="devise_code">EUR</span></td>
-            <td>{{ form.autre_min }}</td>
+            <td>{{ form.autre_min }} {{ form.autre_min.errors }}</td>
             <td><span class="devise_code">EUR</span></td>
             <td id="total_min" class="total-devise cell-nombre">0.00</td>
             <td><span class="devise_code">EUR</span></td>
@@ -210,9 +210,9 @@ Demande d'autorisation d'embauche
                 {{ form.salaire_max.errors }}
             </td>
             <td><span class="devise_code">EUR</span></td>
-            <td>{{ form.indemn_max }}</td>
+            <td>{{ form.indemn_max }} {{ form.indemn_max.errors }}</td>
             <td><span class="devise_code">EUR</span></td>
-            <td>{{ form.autre_max }}</td>
+            <td>{{ form.autre_max }} {{ form.autre_max.errors }}</td>
             <td><span class="devise_code">EUR</span></td>
             <td id="total_max" class="total-devise cell-nombre">0.00</td>
             <td><span class="devise_code">EUR</span></td>
index 770bcbe..6de655f 100644 (file)
@@ -86,9 +86,9 @@
         <td class="montant">{{ poste.salaire_min|floatformat:0 }} {{ poste.devise_min.code }}</td>
         <td class="montant">{{ poste.indemn_min|floatformat:0 }} {{ poste.devise_min.code }}</td>
         <td class="montant">{{ poste.autre_min|floatformat:0 }} {{ poste.devise_min.code }}</td>
-        <td class="montant">{{ poste.get_couts_minimum|floatformat:0 }} {{ poste.devise_min.code }}</td>
-        <td>{{ poste.get_taux_minimum }}</td>
-        <td class="montant">{{ poste.get_couts_minimum_euros|floatformat:0 }} EUR</td>
+        <td class="montant">{{ poste.show_couts_minimum|floatformat:0 }} {{ poste.devise_min.code }}</td>
+        <td>{{ poste.show_taux_minimum }}</td>
+        <td class="montant">{{ poste.show_couts_minimum_euros|floatformat:0 }} EUR</td>
     </tr>
     <tr>
         <th>Maximum</th>
@@ -96,9 +96,9 @@
         <td class="montant">{{ poste.salaire_max|floatformat:0 }} {{ poste.devise_max.code }}</td>
         <td class="montant">{{ poste.indemn_max|floatformat:0 }} {{ poste.devise_max.code }}</td>
         <td class="montant">{{ poste.autre_max|floatformat:0 }} {{ poste.devise_max.code }}</td>
-        <td class="montant">{{ poste.get_couts_maximum|floatformat:0 }} {{ poste.devise_max.code }}</td>
-        <td>{{ poste.get_taux_maximum }}</td>
-        <td class="montant">{{ poste.get_couts_maximum_euros|floatformat:0 }} EUR</td>
+        <td class="montant">{{ poste.show_couts_maximum|floatformat:0 }} {{ poste.devise_max.code }}</td>
+        <td>{{ poste.show_taux_maximum }}</td>
+        <td class="montant">{{ poste.show_couts_maximum_euros|floatformat:0 }} EUR</td>
     </tr>
     </tbody>
 </table>