factor models
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 17 Jan 2012 13:43:04 +0000 (08:43 -0500)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 17 Jan 2012 13:43:04 +0000 (08:43 -0500)
project/rh/models.py

index 9a0d58c..06eb382 100644 (file)
@@ -628,41 +628,50 @@ class Dossier(Dossier_):
                             verbose_name=u"Employé")
 
 
-class DossierPiece(models.Model):
+class DossierPiece_(models.Model):
     """Documents relatifs au Dossier (à l'occupation de ce poste par employé).
     Ex.: Lettre de motivation.
     """
-    dossier = models.ForeignKey('Dossier', db_column='dossier', 
-                            related_name='+')
     nom = models.CharField(verbose_name = u"Nom", max_length=255)
     fichier = models.FileField(verbose_name = u"Fichier", 
                             upload_to=dossier_piece_dispatch, 
                             storage=storage_prive)
 
     class Meta:
+        abstract = True
         ordering = ['nom']
         
     def __unicode__(self):
         return u'%s' % (self.nom)
 
-class DossierCommentaire(Commentaire):
-    dossier = models.ForeignKey('Dossier', db_column='dossier', 
-                            related_name='+')
+class DossierPiece(DossierPiece_):
+    dossier = models.ForeignKey('Dossier', db_column='dossier', related_name='+')
+    
+
+class DossierCommentaire_(Commentaire):
+    class Meta:
+        abstract = True
+
+class DossierCommentaire(DossierCommentaire_):
+    dossier = models.ForeignKey('Dossier', db_column='dossier', related_name='+')
 
-class DossierComparaison(models.Model):
+
+class DossierComparaison_(models.Model):
     """
     Photo d'une comparaison salariale au moment de l'embauche.
     """
 
     objects = DossierComparaisonManager()
 
-    dossier = models.ForeignKey('Dossier', related_name='comparaisons')
     implantation = models.ForeignKey(ref.Implantation, related_name="+", null=True, blank=True)
     poste = models.CharField(max_length=255, null=True, blank=True)
     personne = models.CharField(max_length=255, null=True, blank=True)
     montant = models.IntegerField(null=True)
     devise = models.ForeignKey('Devise', default=5, related_name='+', null=True, blank=True)
 
+    class Meta:
+        abstract = True
+
     def taux_devise(self):
         liste_taux = self.devise.tauxchange_set.order_by('-annee').filter(implantation=self.dossier.poste.implantation)
         if len(liste_taux) == 0:
@@ -673,6 +682,8 @@ class DossierComparaison(models.Model):
     def montant_euros(self):
         return round(float(self.montant) * float(self.taux_devise()), 2)
 
+class DossierComparaison(DossierComparaison_):
+    dossier = models.ForeignKey('Dossier', related_name='comparaisons')
 
 ### RÉMUNÉRATION
     
@@ -751,7 +762,7 @@ class ContratManager(NoDeleteManager):
         return super(ContratManager, self).get_query_set().select_related('dossier', 'dossier__poste')
 
         
-class Contrat(AUFMetadata):
+class Contrat_(AUFMetadata):
     """Document juridique qui encadre la relation de travail d'un Employe
     pour un Poste particulier. Pour un Dossier (qui documente cette 
     relation de travail) plusieurs contrats peuvent être associés.
@@ -759,8 +770,6 @@ class Contrat(AUFMetadata):
 
     objects = ContratManager()
 
-    dossier = models.ForeignKey('Dossier', db_column='dossier', 
-                            related_name='contrats')
     type_contrat = models.ForeignKey('TypeContrat', db_column='type_contrat', 
                             related_name='+',
                             verbose_name = u"Type de contrat")
@@ -769,15 +778,17 @@ class Contrat(AUFMetadata):
                             null=True, blank=True)
 
     class Meta:
+        abstract = True
         ordering = ['dossier__employe__nom_affichage']
         verbose_name = u"Contrat"
         verbose_name_plural = u"Contrats"
         
     def __unicode__(self):
         return u'%s - %s' % (self.dossier, self.id)
+
+class Contrat(Contrat_):
+    dossier = models.ForeignKey('Dossier', db_column='dossier', related_name='contrats')
         
-# TODO? class ContratPiece(models.Model):
-    
 
 ### ÉVÉNEMENTS