From 8c1ae2b3d8f4189eae0fce87b790c549a84e91df Mon Sep 17 00:00:00 2001 From: davin baragiotta Date: Thu, 26 May 2011 22:27:17 -0400 Subject: [PATCH] rh.models, rh.admin --- project/rh/admin.py | 22 ++-- project/rh/models.py | 294 +++++++++++++++++++++++++++++++------------------- 2 files changed, 198 insertions(+), 118 deletions(-) diff --git a/project/rh/admin.py b/project/rh/admin.py index 2d3f8c1..570432c 100644 --- a/project/rh/admin.py +++ b/project/rh/admin.py @@ -131,20 +131,23 @@ class DeviseAdmin(admin.ModelAdmin): class TypeContratAdmin(admin.ModelAdmin): pass +class ResponsableImplantationAdmin(admin.ModelAdmin): + pass + -admin.site.register(Commentaire, CommentaireAdmin) +#admin.site.register(Commentaire, CommentaireAdmin) admin.site.register(Poste, PosteAdmin) -admin.site.register(PosteFinancement, PosteFinancementAdmin) -admin.site.register(PostePiece, PostePieceAdmin) -admin.site.register(PosteCommentaire, PosteCommentaireAdmin) +#admin.site.register(PosteFinancement, PosteFinancementAdmin) +#admin.site.register(PostePiece, PostePieceAdmin) +#admin.site.register(PosteCommentaire, PosteCommentaireAdmin) admin.site.register(Employe, EmployeAdmin) -admin.site.register(EmployePiece, EmployePieceAdmin) -admin.site.register(EmployeCommentaire, EmployeCommentaireAdmin) +#admin.site.register(EmployePiece, EmployePieceAdmin) +#admin.site.register(EmployeCommentaire, EmployeCommentaireAdmin) admin.site.register(AyantDroit, AyantDroitAdmin) -admin.site.register(AyantDroitCommentaire, AyantDroitCommentaireAdmin) +#admin.site.register(AyantDroitCommentaire, AyantDroitCommentaireAdmin) admin.site.register(Dossier, DossierAdmin) -admin.site.register(DossierPiece, DossierPieceAdmin) -admin.site.register(DossierCommentaire, DossierCommentaireAdmin) +#admin.site.register(DossierPiece, DossierPieceAdmin) +#admin.site.register(DossierCommentaire, DossierCommentaireAdmin) admin.site.register(Remuneration, RemunerationAdmin) admin.site.register(Contrat, ContratAdmin) admin.site.register(Evenement, EvenementAdmin) @@ -161,3 +164,4 @@ admin.site.register(TauxChange, TauxChangeAdmin) admin.site.register(ValeurPoint, ValeurPointAdmin) admin.site.register(Devise, DeviseAdmin) admin.site.register(TypeContrat, TypeContratAdmin) +admin.site.register(ResponsableImplantation, ResponsableImplantationAdmin) diff --git a/project/rh/models.py b/project/rh/models.py index 1a390ac..dce2dee 100644 --- a/project/rh/models.py +++ b/project/rh/models.py @@ -10,7 +10,7 @@ import datamaster_modeles.models as ref # Constantes -HELP_TEXT_DATE = u"format: aaaa-mm-jj" +HELP_TEXT_DATE = "format: aaaa-mm-jj" REGIME_TRAVAIL_DEFAULT = 100.00 REGIME_TRAVAIL_NB_HEURE_SEMAINE_DEFAULT = 35.00 @@ -76,9 +76,9 @@ class Poste_(Metadata): """ # Identification nom = models.CharField(max_length=255, - verbose_name=u"Titre du poste", ) + verbose_name="Titre du poste", ) nom_feminin = models.CharField(max_length=255, - verbose_name=u"Titre du poste (au féminin)", + verbose_name="Titre du poste (au féminin)", null=True) implantation = models.ForeignKey(ref.Implantation, db_column='implantation', related_name='+') @@ -87,33 +87,33 @@ class Poste_(Metadata): null=True) service = models.ForeignKey('Service', db_column='service', related_name='+', - verbose_name=u"Direction/Service/Pôle support", + verbose_name="Direction/Service/Pôle support", default=1) # default = Rectorat responsable = models.ForeignKey('Poste', db_column='responsable', related_name='+', - verbose_name=u"Poste du responsable", + verbose_name="Poste du responsable", default=149) # default = Recteur # Contrat regime_travail = models.DecimalField(max_digits=12, decimal_places=2, default=REGIME_TRAVAIL_DEFAULT, - verbose_name=u"Temps de travail", - help_text=u"% du temps complet") + verbose_name="Temps de travail", + help_text="% du temps complet") regime_travail_nb_heure_semaine = models.DecimalField(max_digits=12, decimal_places=2, default=REGIME_TRAVAIL_NB_HEURE_SEMAINE_DEFAULT, - verbose_name=u"Nb. heures par semaine") + verbose_name="Nb. heures par semaine") # Recrutement - local = models.BooleanField(verbose_name=u"Local", default=True, + local = models.BooleanField(verbose_name="Local", default=True, blank=True) - expatrie = models.BooleanField(verbose_name=u"Expatrié", default=False, + expatrie = models.BooleanField(verbose_name="Expatrié", default=False, blank=True) mise_a_disposition = models.BooleanField( - verbose_name=u"Mise à disposition", + verbose_name="Mise à disposition", default=False) appel = models.CharField(max_length=10, - verbose_name=u"Appel à candidature", + verbose_name="Appel à candidature", choices=POSTE_APPEL_CHOICES, default='interne') @@ -178,20 +178,29 @@ class Poste_(Metadata): # Autres Metadata date_validation = models.DateTimeField(null=True, blank=True) # de dae - date_debut = models.DateField(verbose_name=u"Date de début", + date_debut = models.DateField(verbose_name="Date de début", help_text=HELP_TEXT_DATE) - date_fin = models.DateField(verbose_name=u"Date de fin", + date_fin = models.DateField(verbose_name="Date de fin", help_text=HELP_TEXT_DATE, null=True, blank=True) class Meta: abstract = True ordering = ['implantation__nom', 'nom'] + verbose_name = "Poste" + verbose_name_plural = "Postes" def __unicode__(self): - # TODO : gérer si poste est vacant ou non dans affichage - # TODO : gérer le nom_feminin (autre méthode appelée par __unicode__ ?) - return u'%s - %s [%s]' % (self.implantation, self.nom, self.id) + representation = u'%s - %s [%s]' % (self.implantation, self.nom, + self.id) + if self.is_vacant(): + representation = representation + u' (vacant)' + return representation + + def is_vacant(self): + # TODO : si existe un dossier actif pour ce poste, return False + # self.dossier_set.all() fonctionne pas + return False class Poste(Poste_): @@ -213,9 +222,9 @@ class PosteFinancement_(models.Model): related_name='%(app_label)s_financements') type = models.CharField(max_length=1, choices=POSTE_FINANCEMENT_CHOICES) pourcentage = models.DecimalField(max_digits=12, decimal_places=2, - help_text=u"ex.: 33.33 % (décimale avec point)") + help_text="ex.: 33.33 % (décimale avec point)") commentaire = models.TextField( - help_text=u"Spécifiez la source de financement.") + help_text="Spécifiez la source de financement.") class Meta: abstract = True @@ -233,10 +242,10 @@ class PostePiece(models.Model): """Documents relatifs au Poste. Ex.: Description de poste """ - poste = models.ForeignKey("Poste", db_column='poste', + poste = models.ForeignKey('Poste', db_column='poste', related_name='pieces') - nom = models.CharField(verbose_name=u"Nom", max_length=255) - fichier = models.FileField(verbose_name=u"Fichier", + nom = models.CharField(verbose_name="Nom", max_length=255) + fichier = models.FileField(verbose_name="Fichier", upload_to=poste_piece_dispatch, storage=storage_prive) @@ -247,7 +256,7 @@ class PostePiece(models.Model): return u'%s' % (self.nom) class PosteCommentaire(Commentaire): - poste = models.ForeignKey("Poste", db_column='poste', related_name='+') + poste = models.ForeignKey('Poste', db_column='poste', related_name='+') ### EMPLOYÉ/PERSONNE @@ -271,29 +280,35 @@ class Employe(Metadata): """ # Identification nom = models.CharField(max_length=255) - prenom = models.CharField(max_length=255, verbose_name=u"Prénom") - # TODO : nom_affichage doit être obligatoire, pas nom et prenom + prenom = models.CharField(max_length=255, verbose_name="Prénom") nom_affichage = models.CharField(max_length=255, - verbose_name=u"Nom d'affichage", + verbose_name="Nom d'affichage", null=True, blank=True) nationalite = models.ForeignKey(ref.Pays, to_field='code', db_column='nationalite', - related_name='employes_nationalite') + related_name='employes_nationalite', + verbose_name="Nationalité") date_naissance = models.DateField(help_text=HELP_TEXT_DATE, + verbose_name="Date de naissance", null=True, blank=True) genre = models.CharField(max_length=1, choices=GENRE_CHOICES) # Infos personnelles situation_famille = models.CharField(max_length=1, choices=SITUATION_CHOICES, + verbose_name="Situation familiale", null=True, blank=True) - date_entree = models.DateField(verbose_name=u"Date d'entrée à l'AUF", + date_entree = models.DateField(verbose_name="Date d'entrée à l'AUF", help_text=HELP_TEXT_DATE, null=True, blank=True) # Coordonnées - tel_domicile = models.CharField(max_length=255, null=True, blank=True) - tel_cellulaire = models.CharField(max_length=255, null=True, blank=True) + tel_domicile = models.CharField(max_length=255, + verbose_name="Tél. domicile", + null=True, blank=True) + tel_cellulaire = models.CharField(max_length=255, + verbose_name="Tél. cellulaire", + null=True, blank=True) adresse = models.CharField(max_length=255, null=True, blank=True) ville = models.CharField(max_length=255, null=True, blank=True) province = models.CharField(max_length=255, null=True, blank=True) @@ -304,22 +319,26 @@ class Employe(Metadata): class Meta: ordering = ['nom_affichage','nom','prenom'] + verbose_name = "Employé" + verbose_name_plural = "Employés" def __unicode__(self): - # TODO : gérer nom d'affichage + return u'%s' % (self.get_nom()) + + def get_nom(self): nom_affichage = self.nom_affichage if not nom_affichage: nom_affichage = u'%s %s' % (self.nom.upper(), self.prenom) - return u'%s' % (nom_affichage) + return nom_affichage class EmployePiece(models.Model): """Documents relatifs à un employé. Ex.: CV... """ - employe = models.ForeignKey("Employe", db_column='employe', + employe = models.ForeignKey('Employe', db_column='employe', related_name='+') - nom = models.CharField(verbose_name=u"Nom", max_length=255) - fichier = models.FileField(verbose_name=u"Fichier", + nom = models.CharField(verbose_name="Nom", max_length=255) + fichier = models.FileField(verbose_name="Fichier", upload_to=dossier_piece_dispatch, storage=storage_prive) @@ -330,7 +349,7 @@ class EmployePiece(models.Model): return u'%s' % (self.nom) class EmployeCommentaire(Commentaire): - employe = models.ForeignKey("Employe", db_column='employe', + employe = models.ForeignKey('Employe', db_column='employe', related_name='+') @@ -346,33 +365,45 @@ class AyantDroit(Metadata): """ # Identification nom = models.CharField(max_length=255) - prenom = models.CharField(max_length=255) - # TODO : nom_affichage doit être obligatoire, pas nom et prenom + prenom = models.CharField(max_length=255, + verbose_name="Prénom",) nom_affichage = models.CharField(max_length=255, - verbose_name=u"Nom d'affichage", + verbose_name="Nom d'affichage", null=True, blank=True) nationalite = models.ForeignKey(ref.Pays, to_field='code', db_column='nationalite', - related_name='ayantdroits_nationalite') + related_name='ayantdroits_nationalite', + verbose_name="Nationalité") date_naissance = models.DateField(help_text=HELP_TEXT_DATE, + verbose_name="Date de naissance", null=True, blank=True) genre = models.CharField(max_length=1, choices=GENRE_CHOICES) # Relation employe = models.ForeignKey('Employe', db_column='employe', - related_name='ayantdroits') + related_name='ayantdroits', + verbose_name="Employé") lien_parente = models.CharField(max_length=10, choices=LIEN_PARENTE_CHOICES, + verbose_name="Lien de parenté", null=True, blank=True) class Meta: ordering = ['nom_affichage'] + verbose_name = "Ayant droit" + verbose_name_plural = "Ayants droit" + def __unicode__(self): - # TODO : gérer nom d'affichage - return u'%s %s' % (self.prenom, self.nom.upper()) + return u'%s' % (self.get_nom()) + + def get_nom(self): + nom_affichage = self.nom_affichage + if not nom_affichage: + nom_affichage = u'%s %s' % (self.nom.upper(), self.prenom) + return nom_affichage class AyantDroitCommentaire(Commentaire): - ayant_droit = models.ForeignKey("AyantDroit", db_column='ayant_droit', + ayant_droit = models.ForeignKey('AyantDroit', db_column='ayant_droit', related_name='+') @@ -401,15 +432,16 @@ class Dossier_(Metadata): """ # Identification employe = models.ForeignKey('Employe', db_column='employe', - related_name='+') + related_name='+', + verbose_name="Employé") poste = models.ForeignKey('Poste', db_column='poste', related_name='+', editable=False) statut = models.ForeignKey('Statut', related_name='+', default=3) organisme_bstg = models.ForeignKey('OrganismeBstg', db_column='organisme_bstg', related_name='+', - verbose_name=u"Organisme", - help_text=u"Si détaché (DET) ou \ + verbose_name="Organisme", + help_text="Si détaché (DET) ou \ mis à disposition (MAD), \ préciser l'organisme.", null=True, blank=True) @@ -417,7 +449,7 @@ class Dossier_(Metadata): # Recrutement remplacement = models.BooleanField(default=False) statut_residence = models.CharField(max_length=10, default='local', - verbose_name=u"Statut", + verbose_name="Statut", choices=STATUT_RESIDENCE_CHOICES) # Rémunération @@ -427,18 +459,18 @@ class Dossier_(Metadata): regime_travail = models.DecimalField(max_digits=12, decimal_places=2, default=REGIME_TRAVAIL_DEFAULT, - verbose_name=u"Régime de travail", - help_text=u"% du temps complet") + verbose_name="Régime de travail", + help_text="% du temps complet") regime_travail_nb_heure_semaine = models.DecimalField(max_digits=12, decimal_places=2, default=REGIME_TRAVAIL_NB_HEURE_SEMAINE_DEFAULT, - verbose_name=u"Nb. heures par semaine") + verbose_name="Nb. heures par semaine") # Occupation du Poste par cet Employe (anciennement "mandat") - date_debut = models.DateField(verbose_name=u"Date de début d'occupation \ + date_debut = models.DateField(verbose_name="Date de début d'occupation \ de poste", help_text=HELP_TEXT_DATE) - date_fin = models.DateField(verbose_name=u"Date de fin d'occupation \ + date_fin = models.DateField(verbose_name="Date de fin d'occupation \ de poste", help_text=HELP_TEXT_DATE, null=True, blank=True) @@ -449,9 +481,14 @@ class Dossier_(Metadata): class Meta: abstract = True ordering = ['employe__nom_affichage', 'employe__nom', 'poste__nom'] + verbose_name = "Dossier" + verbose_name_plural = "Dossiers" def __unicode__(self): - return u'%s - %s' % (self.employe, self.poste.nom) + poste = self.poste.nom + if self.employe.genre == 'F': + poste = self.poste.nom_feminin + return u'%s - %s' % (self.employe, poste) class Dossier(Dossier_): @@ -462,10 +499,10 @@ 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', + 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", + nom = models.CharField(verbose_name="Nom", max_length=255) + fichier = models.FileField(verbose_name="Fichier", upload_to=dossier_piece_dispatch, storage=storage_prive) @@ -476,7 +513,7 @@ class DossierPiece(models.Model): return u'%s' % (self.nom) class DossierCommentaire(Commentaire): - dossier = models.ForeignKey("Dossier", db_column='dossier', + dossier = models.ForeignKey('Dossier', db_column='dossier', related_name='+') @@ -487,10 +524,12 @@ class RemunerationMixin(Metadata): dossier = models.ForeignKey('Dossier', db_column='dossier', related_name='%(app_label)s_%(class)s_remunerations') type = models.ForeignKey('TypeRemuneration', db_column='type', - related_name='+') + related_name='+', + verbose_name="Type de rémunération") type_revalorisation = models.ForeignKey('TypeRevalorisation', db_column='type_revalorisation', related_name='+', + verbose_name="Type de revalorisation", null=True, blank=True) montant = models.FloatField(null=True, blank=True, default=0) @@ -501,9 +540,11 @@ class RemunerationMixin(Metadata): # commentaire = precision commentaire = models.CharField(max_length=255, null=True, blank=True) # date_debut = anciennement date_effectif - date_debut = models.DateField(help_text=HELP_TEXT_DATE, + date_debut = models.DateField(help_text=HELP_TEXT_DATE, + verbose_name="Date de début", null=True, blank=True) date_fin = models.DateField(help_text=HELP_TEXT_DATE, + verbose_name="Date de fin", null=True, blank=True) class Meta: @@ -540,6 +581,8 @@ class Remuneration_(RemunerationMixin): class Meta: abstract = True + verbose_name = "Rémunération" + verbose_name_plural = "Rémunérations" class Remuneration(Remuneration_): @@ -556,16 +599,21 @@ class Contrat(Metadata): dossier = models.ForeignKey('Dossier', db_column='dossier', related_name='+') type_contrat = models.ForeignKey('TypeContrat', db_column='type_contrat', - related_name='+') - date_debut = models.DateField(help_text=HELP_TEXT_DATE) + related_name='+', + verbose_name="Type de contrat") + date_debut = models.DateField(help_text=HELP_TEXT_DATE, + verbose_name="Date de début") date_fin = models.DateField(help_text=HELP_TEXT_DATE, + verbose_name="Date de fin", null=True, blank=True) class Meta: ordering = ['dossier__employe__nom_affichage'] + verbose_name = "Contrat" + verbose_name_plural = "Contrats" def __unicode__(self): - return u'%s - %s' % (self.dossier.employe.nom_affichage, self.id) + return u'%s - %s' % (self.dossier, self.id) # TODO? class ContratPiece(models.Model): @@ -584,16 +632,20 @@ class Evenement_(Metadata): conserver le Dossier intact afin d'éviter une re-saisie des données lors du retour à la normale. """ - dossier = models.ForeignKey("Dossier", db_column='dossier', + dossier = models.ForeignKey('Dossier', db_column='dossier', related_name='+') nom = models.CharField(max_length=255) - date_debut = models.DateField(help_text=HELP_TEXT_DATE) - date_fin = models.DateField(help_text=HELP_TEXT_DATE, + date_debut = models.DateField(help_text=HELP_TEXT_DATE, + verbose_name="Date de début") + date_fin = models.DateField(help_text=HELP_TEXT_DATE, + verbose_name="Date de fin", null=True, blank=True) class Meta: abstract = True ordering = ['nom'] + verbose_name = "Évènement" + verbose_name_plural = "Évènements" def __unicode__(self): return u'%s' % (self.nom) @@ -609,10 +661,16 @@ class EvenementRemuneration_(RemunerationMixin): de l'Evenement. """ evenement = models.ForeignKey("Evenement", db_column='evenement', - related_name='+') + related_name='+', + verbose_name="Évènement") + # TODO : le champ dossier hérité de Remuneration doit être dérivé + # de l'Evenement associé class Meta: abstract = True + ordering = ['evenement', 'type__nom', '-date_fin'] + verbose_name = "Évènement - rémunération" + verbose_name_plural = "Évènements - rémunérations" class EvenementRemuneration(EvenementRemuneration_): @@ -627,6 +685,11 @@ class FamilleEmploi(Metadata): """ nom = models.CharField(max_length=255) + class Meta: + ordering = ['nom'] + verbose_name = "Famille d'emploi" + verbose_name_plural = "Familles d'emploi" + def __unicode__(self): return u'%s' % (self.nom) @@ -634,18 +697,22 @@ class TypePoste(Metadata): """Catégorie de Poste. """ nom = models.CharField(max_length=255) - nom_feminin = models.CharField(max_length=255) + nom_feminin = models.CharField(max_length=255, + verbose_name="Nom féminin") - is_responsable = models.BooleanField(default=False) + is_responsable = models.BooleanField(default=False, + verbose_name="Poste de responsabilité") famille_emploi = models.ForeignKey('FamilleEmploi', db_column='famille_emploi', - related_name='+') + related_name='+', + verbose_name="Famille d'emploi") class Meta: ordering = ['nom'] + verbose_name = "Type de poste" + verbose_name_plural = "Types de poste" def __unicode__(self): - # TODO : gérer nom féminin return u'%s' % (self.nom) @@ -667,9 +734,16 @@ class TypeRemuneration(Metadata): """ nom = models.CharField(max_length=255) type_paiement = models.CharField(max_length=30, - choices=TYPE_PAIEMENT_CHOICES) + choices=TYPE_PAIEMENT_CHOICES, + verbose_name="Type de paiement") nature_remuneration = models.CharField(max_length=30, - choices=NATURE_REMUNERATION_CHOICES) + choices=NATURE_REMUNERATION_CHOICES, + verbose_name="Nature de la rémunération") + + class Meta: + ordering = ['nom'] + verbose_name = "Type de rémunération" + verbose_name_plural = "Types de rémunération" def __unicode__(self): return u'%s' % (self.nom) @@ -679,6 +753,11 @@ class TypeRevalorisation(Metadata): (Actuellement utilisé dans aucun traitement informatique.) """ nom = models.CharField(max_length=255) + + class Meta: + ordering = ['nom'] + verbose_name = "Type de revalorisation" + verbose_name_plural = "Types de revalorisation" def __unicode__(self): return u'%s' % (self.nom) @@ -690,6 +769,8 @@ class Service(Metadata): class Meta: ordering = ['nom'] + verbose_name = "Service" + verbose_name_plural = "Services" def __unicode__(self): return u'%s' % (self.nom) @@ -715,9 +796,11 @@ class OrganismeBstg(Metadata): class Meta: ordering = ['type', 'nom'] + verbose_name = "Organisme BSTG" + verbose_name_plural = "Organismes BSTG" def __unicode__(self): - return u'%s (%s)' % (self.nom, self.type) + return u'%s (%s)' % (self.nom, self.get_type_display()) class Statut(Metadata): """Statut de l'Employe dans le cadre d'un Dossier particulier. @@ -728,6 +811,8 @@ class Statut(Metadata): class Meta: ordering = ['code'] + verbose_name = "Statut d'employé" + verbose_name_plural = "Statuts d'employé" def __unicode__(self): return u'%s : %s' % (self.code, self.nom) @@ -755,9 +840,9 @@ class Classement_(Metadata): """ # Identification type = models.CharField(max_length=10, choices=TYPE_CLASSEMENT_CHOICES) - echelon = models.IntegerField() - degre = models.IntegerField() - coefficient = models.FloatField(default=0) + echelon = models.IntegerField(verbose_name="Échelon") + degre = models.IntegerField(verbose_name="Degré") + coefficient = models.FloatField(default=0, verbose_name="Coéfficient") # Méta # annee # au lieu de date_debut et date_fin commentaire = models.TextField(null=True, blank=True) @@ -765,6 +850,8 @@ class Classement_(Metadata): class Meta: abstract = True ordering = ['type','echelon','degre','coefficient'] + verbose_name = "Classement" + verbose_name_plural = "Classements" def __unicode__(self): return u'%s.%s.%s (%s)' % (self.type, self.echelon, self.degre, @@ -779,17 +866,19 @@ class TauxChange_(Metadata): pour chaque année budgétaire. """ # Identification - devise = models.ForeignKey('Devise', to_field='code', db_column='devise', + devise = models.ForeignKey('Devise', db_column='devise', related_name='+') - annee = models.IntegerField() - taux = models.FloatField() + annee = models.IntegerField(verbose_name="Année") + taux = models.FloatField(verbose_name="Taux vers l'euro") class Meta: abstract = True - ordering = ['annee', 'devise__code'] + ordering = ['-annee', 'devise__code'] + verbose_name = "Taux de change" + verbose_name_plural = "Taux de change" def __unicode__(self): - return u'%s : %s €' % (self.devise.code, self.taux) + return u'%s : %s € (%s)' % (self.devise, self.taux, self.annee) class TauxChange(TauxChange_): @@ -799,7 +888,7 @@ class TauxChange(TauxChange_): class ValeurPoint_(Metadata): """Utile pour connaître, pour un Dossier, le salaire de base théorique lié au classement dans la grille. La ValeurPoint s'obtient par l'implantation - du POste de ce Dossier : dossier.poste.implantation (pseudo code). + du Poste de ce Dossier : dossier.poste.implantation (pseudo code). salaire de base = coefficient * valeur du point de l'Implantation du Poste """ @@ -812,36 +901,14 @@ class ValeurPoint_(Metadata): # Méta annee = models.IntegerField() - # Stockage de tous les taux de change - # pour optimiser la recherche de la devise associée - annee_courante = datetime.datetime.now().year - tauxchange = TauxChange.objects.select_related('devise') \ - .filter(annee=annee_courante) - class Meta: abstract = True - ordering = ['valeur'] - - def get_tauxchange_courant(self): - """ - Recherche le taux courant associé à la valeur d'un point. - Tous les taux de l'année courante sont chargés, pour optimiser un - affichage en liste. (On pourrait probablement améliorer le manager pour - lui greffer le taux courant sous forme de JOIN) - """ - for tauxchange in self.tauxchange: - if tauxchange.implantation_id == self.implantation_id: - return tauxchange - return None + ordering = ['annee'] + verbose_name = "Valeur du point" + verbose_name_plural = "Valeurs du point" def __unicode__(self): - tx = self.get_tauxchange_courant() - if tx: - devise_code = tx.devise.code - else: - devise_code = "??" - return u'%s %s (%s-%s)' % (self.valeur, devise_code, - self.implantation_id, self.annee) + return u'%s %s (%s)' % (self.valeur, self.devise, self.annee) class ValeurPoint(ValeurPoint_): @@ -856,6 +923,8 @@ class Devise(Metadata): class Meta: ordering = ['code'] + verbose_name = "Devise" + verbose_name_plural = "Devises" def __unicode__(self): return u'%s - %s' % (self.code, self.nom) @@ -866,6 +935,11 @@ class TypeContrat(Metadata): nom = models.CharField(max_length=255) nom_long = models.CharField(max_length=255) + class Meta: + ordering = ['nom'] + verbose_name = "Type de contrat" + verbose_name_plural = "Types de contrat" + def __unicode__(self): return u'%s' % (self.nom) @@ -888,3 +962,5 @@ class ResponsableImplantation(Metadata): class Meta: ordering = ['implantation__nom'] + verbose_name = "Responsable d'implantation" + verbose_name_plural = "Responsables d'implantation" -- 1.7.10.4