ajout validateur contre devise manquante pour implantation #1818
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 28 Jul 2011 15:38:02 +0000 (11:38 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 28 Jul 2011 15:38:02 +0000 (11:38 -0400)
project/dae/forms.py
project/dae/models.py

index 7b247ff..bda8037 100644 (file)
@@ -109,6 +109,15 @@ class FlexibleRemunForm(forms.ModelForm):
     class Meta:
         model = dae.Remuneration
 
+    def clean_devise(self):
+        devise = self.cleaned_data['devise']
+        liste_taux = devise.tauxchange_set.order_by('-annee').filter(implantation=self.instance.dossier.poste.implantation)
+        if len(liste_taux) == 0:
+            raise forms.ValidationError(u"La devise %s n'a pas de taux pour l'implantation %s" % (devise, self.instance.dossier.poste.implantation))
+        else:
+            return devise
+
+
 class RemunForm(inlineformset_factory(dae.Dossier, dae.Remuneration, extra=5, form=FlexibleRemunForm)):
     pass
 
index 60fee83..cfd5b08 100644 (file)
@@ -673,7 +673,11 @@ class Remuneration(models.Model):
         return round(self.montant / 12, 2)
 
     def taux_devise(self):
-        return self.devise.tauxchange_set.order_by('-annee').filter(implantation=self.dossier.poste.implantation)[0].taux
+        liste_taux = self.devise.tauxchange_set.order_by('-annee').filter(implantation=self.dossier.poste.implantation)
+        if len(liste_taux) == 0:
+            raise Exception(u"La devise %s n'a pas de taux pour l'implantation %s" % (self.devise, self.dossier.poste.implantation))
+        else:
+            return liste_taux[0].taux
 
     def montant_euro(self):
         return round(float(self.montant) * float(self.taux_devise()), 2)