# -*- encoding: utf-8 -*-
- from models import *
from django.contrib import admin
-
+ from rh.models import *
+ from rh.lib import *
+class CommentaireAdmin(admin.ModelAdmin):
+ pass
+
-
+class PosteAdmin(admin.ModelAdmin):
+ fieldsets = (
+ (None, {
+ 'fields': ('nom', 'nom_feminin', 'implantation', 'type_poste',
+ 'service', 'responsable')
+ }),
+ ('Contrat', {
+ 'fields': ('regime_travail', 'regime_travail_nb_heure_semaine')
+ }),
+ ('Recrutement', {
+ 'fields': ('local', 'expatrie', 'mise_a_disposition', 'appel')
+ }),
+ ('Rémunération', {
+ 'fields': ('classement_min', 'classement_max', 'valeur_point_min',
+ 'valeur_point_max', 'devise_min', 'devise_max',
+ 'salaire_min', 'salaire_max', 'indemn_min',
+ 'indemn_max', 'autre_min', 'autre_max')
+ }),
+ ('Comparatifs de rémunération', {
+ 'fields': ('devise_comparaison', 'comp_locale_min',
+ 'comp_locale_max', 'comp_universite_min',
+ 'comp_universite_max', 'comp_fonctionpub_min',
+ 'comp_fonctionpub_max', 'comp_ong_min', 'comp_ong_max',
+ 'comp_autre_min', 'comp_autre_max')
+ }),
+ ('Justification', {
+ 'fields': ('justification',)
+ }),
+ ('Autres Metadata', {
+ 'fields': ('date_validation', 'date_debut', 'date_fin')
+ }),
+ )
+
+
+class PosteFinancementAdmin(admin.ModelAdmin):
+ pass
+
+class PostePieceAdmin(admin.ModelAdmin):
+ pass
+
+class PosteCommentaireAdmin(admin.ModelAdmin):
+ pass
+
+class EmployeAdmin(admin.ModelAdmin):
+ pass
+
+class EmployePieceAdmin(admin.ModelAdmin):
+ pass
+
+class EmployeCommentaireAdmin(admin.ModelAdmin):
+ pass
+
+class AyantDroitAdmin(admin.ModelAdmin):
+ pass
+
+class AyantDroitCommentaireAdmin(admin.ModelAdmin):
+ pass
+
+class DossierAdmin(admin.ModelAdmin):
+ list_display = ('_employe', '_poste')
+
+ def _poste(self, dossier):
+ return unicode(dossier.poste.nom)
+ _poste.short_description = u'Poste'
+
+ def _employe(self, dossier):
+ return unicode(dossier.employe)
+ _employe.short_description = u'Employé'
+
+class DossierPieceAdmin(admin.ModelAdmin):
+ pass
+
+class DossierCommentaireAdmin(admin.ModelAdmin):
+ pass
+
+class RemunerationAdmin(admin.ModelAdmin):
+ pass
+
+class ContratAdmin(admin.ModelAdmin):
+ pass
+
+class EvenementAdmin(admin.ModelAdmin):
+ pass
+
+class EvenementRemunerationAdmin(admin.ModelAdmin):
+ pass
+
+class FamilleEmploiAdmin(admin.ModelAdmin):
+ pass
+
+class TypePosteAdmin(admin.ModelAdmin):
+ pass
+
+class TypeRemunerationAdmin(admin.ModelAdmin):
+ pass
+
+class TypeRevalorisationAdmin(admin.ModelAdmin):
+ pass
+
+class ServiceAdmin(admin.ModelAdmin):
+ pass
+
+class OrganismeBstgAdmin(admin.ModelAdmin):
+ pass
+
+class StatutAdmin(admin.ModelAdmin):
+ pass
+
+class ClassementAdmin(admin.ModelAdmin):
+ pass
+
+class TauxChangeAdmin(admin.ModelAdmin):
+ pass
+
+class ValeurPointAdmin(admin.ModelAdmin):
+ pass
+
+class DeviseAdmin(admin.ModelAdmin):
+ pass
+
+class TypeContratAdmin(admin.ModelAdmin):
+ pass
+
+
admin.site.register(Commentaire, CommentaireAdmin)
admin.site.register(Poste, PosteAdmin)
admin.site.register(PosteFinancement, PosteFinancementAdmin)
('C', 'C - Autre')
)
- class PosteFinancement(models.Model):
+
+ class PosteFinancement_(models.Model):
"""Pour un Poste, structure d'informations décrivant comment on prévoit
financer ce Poste.
"""
poste = models.ForeignKey('Poste', db_column='poste',
- related_name='financements')
+ 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=u"Spécifiez la source de financement.")
class Meta:
+ abstract = True
ordering = ['type']
def __unicode__(self):
return u'%s : %s %' % (self.type, self.pourcentage)
+
+ class PosteFinancement(PosteFinancement_):
+ __doc__ = PosteFinancement_.__doc__
+
+
class PostePiece(models.Model):
"""Documents relatifs au Poste.
Ex.: Description de poste
null=True, blank=True)
class Meta:
- ordering = ['nom_affichage','nom']
+ ordering = ['nom_affichage','nom','prenom']
def __unicode__(self):
# TODO : gérer nom d'affichage
('aucun', 'Aucun'),
)
+
class Dossier_(Metadata):
"""Le Dossier regroupe les informations relatives à l'occupation
d'un Poste par un Employe. Un seul Dossier existe par Poste occupé
class Meta:
abstract = True
- ordering = ['poste__nom', 'employe__nom_affichage']
+ ordering = ['employe__nom_affichage', 'employe__nom', 'poste__nom']
def __unicode__(self):
- return u'%s - %s' % (self.poste.nom, self.employe)
+ return u'%s - %s' % (self.employe, self.poste.nom)
class Dossier(Dossier_):
class RemunerationMixin(Metadata):
# Identification
- dossier = models.ForeignKey('Dossier', db_column='dossier')
+ dossier = models.ForeignKey('Dossier', db_column='dossier',
+ related_name='%(app_label)s_%(class)s_remunerations')
type = models.ForeignKey('TypeRemuneration', db_column='type',
related_name='+')
type_revalorisation = models.ForeignKey('TypeRevalorisation',
def __unicode__(self):
return u'%s %s (%s)' % (self.montant, self.devise.code, self.type.nom)
- class Remuneration(RemunerationMixin):
+ class Remuneration_(RemunerationMixin):
"""Structure de rémunération (données budgétaires) en situation normale
pour un Dossier. Si un Evenement existe, utiliser la structure de
rémunération EvenementRemuneration de cet événement.
devise = "???"
return "%s %s" % (self.montant, devise)
+ class Meta:
+ abstract = True
+
+
+ class Remuneration(Remuneration_):
+ __doc__ = Remuneration_.__doc__
+
### CONTRATS
### ÉVÉNEMENTS
- class Evenement(Metadata):
+ class Evenement_(Metadata):
"""Un Evenement sert à déclarer une situation temporaire (exceptionnelle)
d'un Dossier qui vient altérer des informations normales liées à un Dossier
(ex.: la Remuneration).
date_debut = models.DateField(help_text=HELP_TEXT_DATE)
date_fin = models.DateField(help_text=HELP_TEXT_DATE,
null=True, blank=True)
+
class Meta:
+ abstract = True
ordering = ['nom']
def __unicode__(self):
return u'%s' % (self.nom)
+
+
+ class Evenement(Evenement_):
+ __doc__ = Evenement_.__doc__
+
- class EvenementRemuneration(RemunerationMixin):
+ class EvenementRemuneration_(RemunerationMixin):
"""Structure de rémunération liée à un Evenement qui remplace
temporairement la Remuneration normale d'un Dossier, pour toute la durée
de l'Evenement.
evenement = models.ForeignKey("Evenement", db_column='evenement',
related_name='+')
+ class Meta:
+ abstract = True
+
+
+ class EvenementRemuneration(EvenementRemuneration_):
+ __doc__ = EvenementRemuneration_.__doc__
+
### RÉFÉRENCES RH
('HG', 'HG - Hors grille [direction]'),
)
- class Classement(Metadata):
+
+ class Classement_(Metadata):
"""Éléments de classement de la
"Grille générique de classement hiérarchique".
commentaire = models.TextField(null=True, blank=True)
class Meta:
+ abstract = True
ordering = ['type','echelon','degre','coefficient']
def __unicode__(self):
return u'%s.%s.%s (%s)' % (self.type, self.echelon, self.degre,
self.coefficient)
- class TauxChange(Metadata):
+ class Classement(Classement_):
+ __doc__ = Classement_.__doc__
+
+
+ class TauxChange_(Metadata):
"""Taux de change de la devise vers l'euro (EUR)
pour chaque année budgétaire.
"""
related_name='+')
annee = models.IntegerField()
taux = models.FloatField()
-
+
class Meta:
+ abstract = True
ordering = ['annee', 'devise__code']
def __unicode__(self):
return u'%s : %s €' % (self.devise.code, self.taux)
- class ValeurPoint(Metadata):
+
+ class TauxChange(TauxChange_):
+ __doc__ = TauxChange_.__doc__
+
+
+ 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).
devise = models.ForeignKey('Devise', db_column='devise',
related_name='+', default=5)
implantation = models.ForeignKey(ref.Implantation,
- db_column='implantation',
- related_name='valeur_point')
+ db_column='implantation',
+ related_name='%(app_label)s_valeur_point')
# Méta
annee = models.IntegerField()
.filter(annee=annee_courante)
class Meta:
- ordering = ['annee', 'implantation__nom']
+ abstract = True
+ ordering = ['valeur']
def get_tauxchange_courant(self):
"""
devise_code = "??"
return u'%s %s (%s-%s)' % (self.valeur, devise_code,
self.implantation_id, self.annee)
-
- class Meta:
- ordering = ['valeur']
+
+
+ class ValeurPoint(ValeurPoint_):
+ __doc__ = ValeurPoint_.__doc__
+
class Devise(Metadata):
"""Devise monétaire.