merge dev with import RH
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Wed, 18 Jan 2012 18:03:41 +0000 (13:03 -0500)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Wed, 18 Jan 2012 18:03:41 +0000 (13:03 -0500)
1  2 
project/rh/migrations/0007_auto__del_evenement__del_evenementremuneration__chg_field_poste_respon.py
project/rh/models.py
project/settings.py

index 0000000,0000000..6de6d3c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,698 @@@
++# encoding: utf-8
++import datetime
++from south.db import db
++from south.v2 import SchemaMigration
++from django.db import models
++
++class Migration(SchemaMigration):
++    
++    def forwards(self, orm):
++        
++        # Deleting model 'Evenement'
++        db.delete_table('rh_evenement')
++
++        # Deleting model 'EvenementRemuneration'
++        db.delete_table('rh_evenementremuneration')
++
++        # Changing field 'Poste.responsable'
++        db.alter_column('rh_poste', 'responsable', self.gf('django.db.models.fields.related.ForeignKey')(null=True, db_column='responsable', to=orm['rh.Poste']))
++    
++    
++    def backwards(self, orm):
++        
++        # Adding model 'Evenement'
++        db.create_table('rh_evenement', (
++            ('nom', self.gf('django.db.models.fields.CharField')(max_length=255)),
++            ('user_desactivation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_desactivation', blank=True)),
++            ('dossier', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', db_column='dossier', to=orm['rh.Dossier'])),
++            ('supprime', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
++            ('user_activation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_activation', blank=True)),
++            ('date_fin', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
++            ('date_creation', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
++            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
++            ('user_creation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_creation', blank=True)),
++            ('date_activation', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
++            ('user_modification', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_modification', blank=True)),
++            ('date_modification', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
++            ('date_desactivation', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
++            ('actif', self.gf('django.db.models.fields.BooleanField')(default=True, blank=True)),
++            ('date_debut', self.gf('django.db.models.fields.DateField')()),
++        ))
++        db.send_create_signal('rh', ['Evenement'])
++
++        # Adding model 'EvenementRemuneration'
++        db.create_table('rh_evenementremuneration', (
++            ('user_desactivation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_desactivation', blank=True)),
++            ('montant', self.gf('django.db.models.fields.FloatField')(default=0, null=True, blank=True)),
++            ('devise', self.gf('django.db.models.fields.related.ForeignKey')(default=5, related_name='+', db_column='devise', to=orm['rh.Devise'])),
++            ('commentaire', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
++            ('user_activation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_activation', blank=True)),
++            ('evenement', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', db_column='evenement', to=orm['rh.Evenement'])),
++            ('date_fin', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
++            ('date_creation', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
++            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
++            ('dossier', self.gf('django.db.models.fields.related.ForeignKey')(related_name='rh_evenementremuneration_remunerations', db_column='dossier', to=orm['rh.Dossier'])),
++            ('user_creation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_creation', blank=True)),
++            ('date_activation', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
++            ('supprime', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
++            ('type_revalorisation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['rh.TypeRevalorisation'], db_column='type_revalorisation', blank=True)),
++            ('user_modification', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_modification', blank=True)),
++            ('date_modification', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
++            ('date_desactivation', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
++            ('type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', db_column='type', to=orm['rh.TypeRemuneration'])),
++            ('date_debut', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
++            ('actif', self.gf('django.db.models.fields.BooleanField')(default=True, blank=True)),
++        ))
++        db.send_create_signal('rh', ['EvenementRemuneration'])
++
++        # Changing field 'Poste.responsable'
++        db.alter_column('rh_poste', 'responsable', self.gf('django.db.models.fields.related.ForeignKey')(db_column='responsable', to=orm['rh.Poste']))
++    
++    
++    models = {
++        'auth.group': {
++            'Meta': {'object_name': 'Group'},
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
++            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
++        },
++        'auth.permission': {
++            'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
++            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
++        },
++        'auth.user': {
++            'Meta': {'object_name': 'User'},
++            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
++            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
++            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
++            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
++            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
++            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
++        },
++        'contenttypes.contenttype': {
++            'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
++            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
++            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
++        },
++        'references.bureau': {
++            'Meta': {'object_name': 'Bureau', 'db_table': "u'ref_bureau'", 'managed': 'False'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['references.Implantation']", 'db_column': "'implantation'"}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['references.Region']", 'db_column': "'region'"})
++        },
++        'references.implantation': {
++            'Meta': {'object_name': 'Implantation', 'db_table': "u'ref_implantation'", 'managed': 'False'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'adresse_physique_bureau': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'adresse_physique_code_postal': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'adresse_physique_code_postal_avant_ville': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
++            'adresse_physique_no': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
++            'adresse_physique_pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'impl_adresse_physique'", 'to_field': "'code'", 'db_column': "'adresse_physique_pays'", 'to': "orm['references.Pays']"}),
++            'adresse_physique_precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'adresse_physique_precision_avant': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'adresse_physique_region': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'adresse_physique_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'adresse_physique_ville': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'adresse_postale_boite_postale': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'adresse_postale_bureau': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'adresse_postale_code_postal': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
++            'adresse_postale_code_postal_avant_ville': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
++            'adresse_postale_no': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
++            'adresse_postale_pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'impl_adresse_postale'", 'to_field': "'code'", 'db_column': "'adresse_postale_pays'", 'to': "orm['references.Pays']"}),
++            'adresse_postale_precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'adresse_postale_precision_avant': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'adresse_postale_region': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'adresse_postale_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'adresse_postale_ville': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'bureau_rattachement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['references.Implantation']", 'db_column': "'bureau_rattachement'"}),
++            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
++            'code_meteo': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'commentaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'courriel': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
++            'courriel_interne': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
++            'date_extension': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_fermeture': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_inauguration': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_ouverture': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'fax': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'fax_interne': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'fuseau_horaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'hebergement_convention': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
++            'hebergement_convention_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'hebergement_etablissement': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'modif_date': ('django.db.models.fields.DateField', [], {}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['references.Region']", 'db_column': "'region'"}),
++            'remarque': ('django.db.models.fields.TextField', [], {}),
++            'responsable_implantation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
++            'statut': ('django.db.models.fields.IntegerField', [], {}),
++            'telephone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'telephone_interne': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
++            'type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'url': ('django.db.models.fields.URLField', [], {'max_length': '255', 'blank': 'True'})
++        },
++        'references.pays': {
++            'Meta': {'object_name': 'Pays', 'db_table': "u'ref_pays'", 'managed': 'False'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2'}),
++            'code_bureau': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['references.Bureau']", 'to_field': "'code'", 'db_column': "'code_bureau'"}),
++            'code_iso3': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3', 'blank': 'True'}),
++            'developpement': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'monnaie': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'nord_sud': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['references.Region']", 'db_column': "'region'"})
++        },
++        'references.region': {
++            'Meta': {'object_name': 'Region', 'db_table': "u'ref_region'", 'managed': 'False'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
++            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
++            'implantation_bureau': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'gere_region'", 'db_column': "'implantation_bureau'", 'to': "orm['references.Implantation']"}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'rh.ayantdroit': {
++            'Meta': {'object_name': 'AyantDroit'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_naissance': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'employe': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ayantdroits'", 'db_column': "'employe'", 'to': "orm['rh.Employe']"}),
++            'genre': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'lien_parente': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
++            'nationalite': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ayantdroits_nationalite'", 'db_column': "'nationalite'", 'to_field': "'code'", 'to': "orm['references.Pays']", 'blank': 'True', 'null': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'nom_affichage': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'prenom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.ayantdroitcommentaire': {
++            'Meta': {'object_name': 'AyantDroitCommentaire'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'ayant_droit': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'ayant_droit'", 'to': "orm['rh.AyantDroit']"}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'owner'", 'to': "orm['auth.User']"}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'texte': ('django.db.models.fields.TextField', [], {}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.classement': {
++            'Meta': {'object_name': 'Classement'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'coefficient': ('django.db.models.fields.FloatField', [], {'default': '0', 'null': 'True'}),
++            'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'degre': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}),
++            'echelon': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'type': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.contrat': {
++            'Meta': {'object_name': 'Contrat'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_debut': ('django.db.models.fields.DateField', [], {}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_fin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'dossier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rh_contrats'", 'db_column': "'dossier'", 'to': "orm['rh.Dossier']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'type_contrat': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'type_contrat'", 'to': "orm['rh.TypeContrat']"}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.devise': {
++            'Meta': {'object_name': 'Devise'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.dossier': {
++            'Meta': {'object_name': 'Dossier'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'classement': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'classement'", 'to': "orm['rh.Classement']"}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_debut': ('django.db.models.fields.DateField', [], {}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_fin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'employe': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rh_dossiers'", 'db_column': "'employe'", 'to': "orm['rh.Employe']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'organisme_bstg': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'organisme_bstg'", 'to': "orm['rh.OrganismeBstg']"}),
++            'poste': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rh_dossiers'", 'db_column': "'poste'", 'to': "orm['rh.Poste']"}),
++            'regime_travail': ('django.db.models.fields.DecimalField', [], {'default': "'100.00'", 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
++            'regime_travail_nb_heure_semaine': ('django.db.models.fields.DecimalField', [], {'default': "'35.00'", 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
++            'remplacement': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'remplacement_de': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['rh.Dossier']"}),
++            'statut': ('django.db.models.fields.related.ForeignKey', [], {'default': '3', 'related_name': "'+'", 'null': 'True', 'to': "orm['rh.Statut']"}),
++            'statut_residence': ('django.db.models.fields.CharField', [], {'default': "'local'", 'max_length': '10', 'null': 'True'}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.dossiercommentaire': {
++            'Meta': {'object_name': 'DossierCommentaire'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'dossier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'dossier'", 'to': "orm['rh.Dossier']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'owner'", 'to': "orm['auth.User']"}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'texte': ('django.db.models.fields.TextField', [], {}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.dossiercomparaison': {
++            'Meta': {'object_name': 'DossierComparaison'},
++            'devise': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'null': 'True', 'blank': 'True', 'to': "orm['rh.Devise']"}),
++            'dossier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rh_comparaisons'", 'to': "orm['rh.Dossier']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['references.Implantation']"}),
++            'montant': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
++            'personne': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'poste': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
++        },
++        'rh.dossierpiece': {
++            'Meta': {'object_name': 'DossierPiece'},
++            'dossier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'dossier'", 'to': "orm['rh.Dossier']"}),
++            'fichier': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'rh.employe': {
++            'Meta': {'object_name': 'Employe'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'adresse': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'code_postal': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_entree': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_naissance': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'genre': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'nationalite': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'employes_nationalite'", 'db_column': "'nationalite'", 'to_field': "'code'", 'to': "orm['references.Pays']", 'blank': 'True', 'null': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'nom_affichage': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'employes'", 'db_column': "'pays'", 'to_field': "'code'", 'to': "orm['references.Pays']", 'blank': 'True', 'null': 'True'}),
++            'prenom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'province': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'situation_famille': ('django.db.models.fields.CharField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'tel_cellulaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'tel_domicile': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"}),
++            'ville': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
++        },
++        'rh.employecommentaire': {
++            'Meta': {'object_name': 'EmployeCommentaire'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'employe': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'employe'", 'to': "orm['rh.Employe']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'owner'", 'to': "orm['auth.User']"}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'texte': ('django.db.models.fields.TextField', [], {}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.employepiece': {
++            'Meta': {'object_name': 'EmployePiece'},
++            'employe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh.Employe']", 'db_column': "'employe'"}),
++            'fichier': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
++        },
++        'rh.familleemploi': {
++            'Meta': {'object_name': 'FamilleEmploi'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.organismebstg': {
++            'Meta': {'object_name': 'OrganismeBstg'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'organismes_bstg'", 'db_column': "'pays'", 'to_field': "'code'", 'to': "orm['references.Pays']", 'blank': 'True', 'null': 'True'}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'type': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.poste': {
++            'Meta': {'object_name': 'Poste'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'appel': ('django.db.models.fields.CharField', [], {'default': "'interne'", 'max_length': '10', 'null': 'True'}),
++            'autre_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
++            'autre_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
++            'classement_max': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'classement_max'", 'to': "orm['rh.Classement']"}),
++            'classement_min': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'classement_min'", 'to': "orm['rh.Classement']"}),
++            'comp_autre_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'comp_autre_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'comp_fonctionpub_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'comp_fonctionpub_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'comp_locale_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'comp_locale_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'comp_ong_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'comp_ong_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'comp_universite_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'comp_universite_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_debut': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_fin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_validation': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
++            'devise_comparaison': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'null': 'True', 'db_column': "'devise_comparaison'", 'to': "orm['rh.Devise']"}),
++            'devise_max': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'null': 'True', 'db_column': "'devise_max'", 'to': "orm['rh.Devise']"}),
++            'devise_min': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'null': 'True', 'db_column': "'devise_min'", 'to': "orm['rh.Devise']"}),
++            'expatrie': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'implantation'", 'to': "orm['references.Implantation']"}),
++            'indemn_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
++            'indemn_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
++            'justification': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
++            'local': ('django.db.models.fields.NullBooleanField', [], {'default': 'True', 'null': 'True', 'blank': 'True'}),
++            'mise_a_disposition': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'nom_feminin': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
++            'regime_travail': ('django.db.models.fields.DecimalField', [], {'default': "'100.00'", 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
++            'regime_travail_nb_heure_semaine': ('django.db.models.fields.DecimalField', [], {'default': "'35.00'", 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
++            'responsable': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'db_column': "'responsable'", 'to': "orm['rh.Poste']"}),
++            'salaire_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
++            'salaire_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
++            'service': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'service'", 'to': "orm['rh.Service']"}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'type_poste': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'db_column': "'type_poste'", 'to': "orm['rh.TypePoste']"}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"}),
++            'valeur_point_max': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'valeur_point_max'", 'to': "orm['rh.ValeurPoint']"}),
++            'valeur_point_min': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'valeur_point_min'", 'to': "orm['rh.ValeurPoint']"})
++        },
++        'rh.postecommentaire': {
++            'Meta': {'object_name': 'PosteCommentaire'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'owner'", 'to': "orm['auth.User']"}),
++            'poste': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'poste'", 'to': "orm['rh.Poste']"}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'texte': ('django.db.models.fields.TextField', [], {}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.postecomparaison': {
++            'Meta': {'object_name': 'PosteComparaison'},
++            'devise': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'null': 'True', 'blank': 'True', 'to': "orm['rh.Devise']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['references.Implantation']"}),
++            'montant': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'poste': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rh_comparaisons_internes'", 'to': "orm['rh.Poste']"})
++        },
++        'rh.postefinancement': {
++            'Meta': {'object_name': 'PosteFinancement'},
++            'commentaire': ('django.db.models.fields.TextField', [], {}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'poste': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rh_financements'", 'db_column': "'poste'", 'to': "orm['rh.Poste']"}),
++            'pourcentage': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
++            'type': ('django.db.models.fields.CharField', [], {'max_length': '1'})
++        },
++        'rh.postepiece': {
++            'Meta': {'object_name': 'PostePiece'},
++            'fichier': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'poste': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rh_pieces'", 'db_column': "'poste'", 'to': "orm['rh.Poste']"})
++        },
++        'rh.remuneration': {
++            'Meta': {'object_name': 'Remuneration'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'commentaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_debut': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_fin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'devise': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'db_column': "'devise'", 'to': "orm['rh.Devise']"}),
++            'dossier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rh_remunerations'", 'db_column': "'dossier'", 'to': "orm['rh.Dossier']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'montant': ('django.db.models.fields.FloatField', [], {'default': '0', 'null': 'True', 'blank': 'True'}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'type'", 'to': "orm['rh.TypeRemuneration']"}),
++            'type_revalorisation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'type_revalorisation'", 'to': "orm['rh.TypeRevalorisation']"}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.responsableimplantation': {
++            'Meta': {'object_name': 'ResponsableImplantation'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'employe': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'employe'", 'to': "orm['rh.Employe']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'unique': 'True', 'db_column': "'implantation'", 'to': "orm['references.Implantation']"}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.service': {
++            'Meta': {'object_name': 'Service'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.statut': {
++            'Meta': {'object_name': 'Statut'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.tauxchange': {
++            'Meta': {'object_name': 'TauxChange'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'annee': ('django.db.models.fields.IntegerField', [], {}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'devise': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh.Devise']", 'db_column': "'devise'"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'taux': ('django.db.models.fields.FloatField', [], {}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.typecontrat': {
++            'Meta': {'object_name': 'TypeContrat'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.typeposte': {
++            'Meta': {'object_name': 'TypePoste'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'famille_emploi': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'famille_emploi'", 'to': "orm['rh.FamilleEmploi']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'is_responsable': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'nom_feminin': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.typeremuneration': {
++            'Meta': {'object_name': 'TypeRemuneration'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'nature_remuneration': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'type_paiement': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.typerevalorisation': {
++            'Meta': {'object_name': 'TypeRevalorisation'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
++        },
++        'rh.valeurpoint': {
++            'Meta': {'object_name': 'ValeurPoint'},
++            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
++            'annee': ('django.db.models.fields.IntegerField', [], {}),
++            'date_activation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_creation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'date_modification': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
++            'devise': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'null': 'True', 'db_column': "'devise'", 'to': "orm['rh.Devise']"}),
++            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
++            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rh_valeur_point'", 'db_column': "'implantation'", 'to': "orm['references.Implantation']"}),
++            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
++            'user_activation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_activation'", 'to': "orm['auth.User']"}),
++            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
++            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
++            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"}),
++            'valeur': ('django.db.models.fields.FloatField', [], {'null': 'True'})
++        }
++    }
++    
++    complete_apps = ['rh']
diff --combined project/rh/models.py
@@@ -1,7 -1,7 +1,8 @@@
  # -=- encoding: utf-8 -=-
  
 +import datetime
  from datetime import date
+ from decimal import Decimal
  
  from django.core.files.storage import FileSystemStorage
  from django.db import models
@@@ -11,24 -11,15 +12,24 @@@ from auf.django.metadata.models import 
  from auf.django.metadata.managers import NoDeleteManager
  import auf.django.references.models as ref
  from validators import validate_date_passee
 -from dae.managers import SecurityManager
 +from managers import PosteManager, DossierManager, DossierComparaisonManager, PosteComparaisonManager
 +
 +
 +
 +# Gruick hack pour déterminer d'ou provient l'instanciation d'une classe pour l'héritage.
 +# Cela permet de faire du dynamic loading par app sans avoir à redéfinir dans DAE la FK
 +def app_context():
 +    import inspect;
 +    models_stack = [s[1].split('/')[-2] for s in inspect.stack() if s[1].endswith('models.py')]
 +    return models_stack[-1]
 +
  
  # Constantes
- REGIME_TRAVAIL_DEFAULT = 100.00
- REGIME_TRAVAIL_NB_HEURE_SEMAINE_DEFAULT = 35.00
+ REGIME_TRAVAIL_DEFAULT = Decimal('100.00')
+ REGIME_TRAVAIL_NB_HEURE_SEMAINE_DEFAULT = Decimal('35.00')
  
 -
  # Upload de fichiers
- storage_prive = FileSystemStorage(settings.PRIVE_MEDIA_ROOT, 
+ storage_prive = FileSystemStorage(settings.PRIVE_MEDIA_ROOT,
                              base_url=settings.PRIVE_MEDIA_URL)
  
  def poste_piece_dispatch(instance, filename):
@@@ -47,11 -38,11 +48,11 @@@ def employe_piece_dispatch(instance, fi
  class Commentaire(AUFMetadata):
      texte = models.TextField()
      owner = models.ForeignKey('auth.User', db_column='owner', related_name='+')
-     
      class Meta:
          abstract = True
          ordering = ['-date_creation']
-         
      def __unicode__(self):
          return u'%s' % (self.texte)
  
@@@ -63,8 -54,21 +64,8 @@@ POSTE_APPEL_CHOICES = 
      ('externe', 'Externe'),
  )
  
 -class PosteManager(SecurityManager):
 -    """
 -    Chargement de tous les objets FK existants sur chaque QuerySet.
 -    """
 -    prefixe_implantation = "implantation__region"
 -
 -    def get_query_set(self):
 -        fkeys = (
 -            'implantation',
 -            'type_poste',
 -        )
 -        return super(PosteManager, self).get_query_set().select_related(*fkeys).all()
 -
  class Poste_(AUFMetadata):
-     """Un Poste est un emploi (job) à combler dans une implantation. 
+     """Un Poste est un emploi (job) à combler dans une implantation.
      Un Poste peut être comblé par un Employe, auquel cas un Dossier est créé.
      Si on veut recruter 2 jardiniers, 2 Postes distincts existent.
      """
      objects = PosteManager()
  
      # Identification
-     nom = models.CharField(max_length=255, 
+     nom = models.CharField(max_length=255,
                              verbose_name = u"Titre du poste", )
      nom_feminin = models.CharField(max_length=255,
                              verbose_name = u"Titre du poste (au féminin)",
                              null=True)
-     implantation = models.ForeignKey(ref.Implantation, 
+     implantation = models.ForeignKey(ref.Implantation,
                              db_column='implantation', related_name='+')
      type_poste = models.ForeignKey('TypePoste', db_column='type_poste',
                              related_name='+',
                              null=True)
-     service = models.ForeignKey('Service', db_column='service', null=True,
+     service = models.ForeignKey('Service', db_column='service',
                              related_name='+',
 -                            verbose_name = u"Direction/Service/Pôle support",
 -                            default=1)  # default = Rectorat
 -    responsable = models.ForeignKey('Poste', db_column='responsable',
 -                            related_name='+',
 -                            verbose_name = u"Poste du responsable",
 -                            default=149)    # default = Recteur
 -
 +                            verbose_name = u"Direction/Service/Pôle support", )
 +    responsable = models.ForeignKey('Poste', db_column='responsable', 
 +                            related_name='+', null=True,
 +                            verbose_name = u"Poste du responsable", )
 +                                
      # Contrat
      regime_travail = models.DecimalField(max_digits=12, decimal_places=2,
                              default=REGIME_TRAVAIL_DEFAULT, null=True,
-                             verbose_name = u"Temps de travail", 
+                             verbose_name = u"Temps de travail",
                              help_text="% du temps complet")
      regime_travail_nb_heure_semaine = models.DecimalField(max_digits=12,
                              decimal_places=2, null=True,
                              verbose_name = u"Nb. heures par semaine")
  
      # Recrutement
-     local = models.NullBooleanField(verbose_name = u"Local", default=True, 
+     local = models.NullBooleanField(verbose_name = u"Local", default=True,
                              null=True, blank=True)
-     expatrie = models.NullBooleanField(verbose_name = u"Expatrié", default=False, 
+     expatrie = models.NullBooleanField(verbose_name = u"Expatrié", default=False,
                              null=True, blank=True)
      mise_a_disposition = models.NullBooleanField(
                              verbose_name = u"Mise à disposition",
                              default='interne')
  
      # Rémunération
-     classement_min = models.ForeignKey('Classement', 
+     classement_min = models.ForeignKey('Classement',
                              db_column='classement_min', related_name='+',
                              null=True, blank=True)
-     classement_max = models.ForeignKey('Classement', 
+     classement_max = models.ForeignKey('Classement',
                              db_column='classement_max', related_name='+',
                              null=True, blank=True)
-     valeur_point_min = models.ForeignKey('ValeurPoint', 
-                             db_column='valeur_point_min', related_name='+', 
+     valeur_point_min = models.ForeignKey('ValeurPoint',
+                             db_column='valeur_point_min', related_name='+',
                              null=True, blank=True)
-     valeur_point_max = models.ForeignKey('ValeurPoint', 
-                             db_column='valeur_point_max', related_name='+', 
+     valeur_point_max = models.ForeignKey('ValeurPoint',
+                             db_column='valeur_point_max', related_name='+',
                              null=True, blank=True)
      devise_min = models.ForeignKey('Devise', db_column='devise_min', null=True,
                              related_name='+', default=5)
  
      # Comparatifs de rémunération
      devise_comparaison = models.ForeignKey('Devise', null=True,
-                             db_column='devise_comparaison', 
+                             db_column='devise_comparaison',
                              related_name='+',
                              default=5)
      comp_locale_min = models.DecimalField(max_digits=12, decimal_places=2,
          verbose_name_plural = u"Postes"
  
      def __unicode__(self):
-         representation = u'%s - %s [%s]' % (self.implantation, self.nom, 
+         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):
          vacant = True
          if self.occupe_par():
          Généralement, retourne une liste d'un élément.
          Si poste inoccupé, retourne liste vide.
          """
 -        return [d.employe for d in self.dossiers.filter(actif=True, supprime=False) \
 +        return [d.employe for d in self.rh_dossiers.filter(actif=True, supprime=False) \
              .exclude(date_fin__lt=date.today())]
  
      prefix_implantation = "implantation__region"
@@@ -214,10 -220,6 +215,6 @@@ class Poste(Poste_)
      __doc__ = Poste_.__doc__
  
  
- class Poste(Poste_):
-     __doc__ = Poste_.__doc__
  POSTE_FINANCEMENT_CHOICES = (
      ('A', 'A - Frais de personnel'),
      ('B', 'B - Projet(s)-Titre(s)'),
@@@ -229,7 -231,8 +226,7 @@@ 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='%(app_label)s_financements')
 +    poste = models.ForeignKey('%s.Poste' % app_context(), db_column='poste', 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="ex.: 33.33 % (décimale avec point)")
      class Meta:
          abstract = True
          ordering = ['type']
-         
      def __unicode__(self):
 -        return u'%s : %s %' % (self.type, self.pourcentage)
 +        return u'%s : %s %%' % (self.type, self.pourcentage)
  
  
  class PosteFinancement(PosteFinancement_):
 -    __doc__ = PosteFinancement_.__doc__
 +    pass
  
  
 -class PostePiece(models.Model):
 +class PostePiece_(models.Model):
      """Documents relatifs au Poste.
      Ex.: Description de poste
      """
 -    poste = models.ForeignKey('Poste', db_column='poste',
 -                            related_name='pieces')
 +    poste = models.ForeignKey('%s.Poste' % app_context(), db_column='poste', related_name='%(app_label)s_pieces')
      nom = models.CharField(verbose_name = u"Nom", max_length=255)
-     fichier = models.FileField(verbose_name = u"Fichier", 
-                             upload_to=poste_piece_dispatch, 
+     fichier = models.FileField(verbose_name = u"Fichier",
+                             upload_to=poste_piece_dispatch,
                              storage=storage_prive)
  
      class Meta:
 +        abstract = True
          ordering = ['nom']
-         
      def __unicode__(self):
          return u'%s' % (self.nom)
  
 -class PosteComparaison(models.Model):
 +class PostePiece(PostePiece_):
 +    pass
 +
 +class PosteComparaison_(models.Model):
      """
      De la même manière qu'un dossier, un poste peut-être comparé à un autre poste.
      """
 -    poste = models.ForeignKey('Poste', related_name='comparaisons_internes')
 +    poste = models.ForeignKey('%s.Poste' % app_context(), related_name='%(app_label)s_comparaisons_internes')
 +    objects = PosteComparaisonManager()
 +
      implantation = models.ForeignKey(ref.Implantation, null=True, blank=True, related_name="+")
      nom = models.CharField(verbose_name = u"Poste", 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.implantation)
 -        if len(liste_taux) == 0:
 -            raise Exception(u"La devise %s n'a pas de taux pour l'implantation %s" % (self.devise, self.implantation))
 +        if self.devise.code == "EUR":
 +            return 1
 +        annee = self.poste.date_debut.year
 +        taux = [tc.taux for tc in TauxChange.objects.filter(devise=self.devise, annee=annee)]
 +        taux = set(taux)
 +        if len(taux) != 1:
 +            raise Exception(u"Le taux de la devise %s n'a pas n'existe pas pour %s ou il existe plusieurs taux pour la même année" % (self.devise.id, annee))
          else:
 -            return liste_taux[0].taux
 +            return list(taux)[0]
  
      def montant_euros(self):
          return round(float(self.montant) * float(self.taux_devise()), 2)
  
 +class PosteComparaison(PosteComparaison_):
 +    pass
 +
 +class PosteCommentaire_(Commentaire):
 +    poste = models.ForeignKey('%s.Poste' % app_context(), db_column='poste', related_name='+')
  
 -class PosteCommentaire(Commentaire):
 -    poste = models.ForeignKey('Poste', db_column='poste', related_name='+')
 +    class Meta:
 +        abstract = True
  
 +class PosteCommentaire(PosteCommentaire_):
 +    pass
  
  ### EMPLOYÉ/PERSONNE
  
@@@ -322,40 -306,41 +319,41 @@@ SITUATION_CHOICES = 
  )
  
  class Employe(AUFMetadata):
-     """Personne occupant ou ayant occupé un Poste. Un Employe aura autant de 
+     """Personne occupant ou ayant occupé un Poste. Un Employe aura autant de
      Dossiers qu'il occupe ou a occupé de Postes.
-     
-     Cette classe aurait pu avantageusement s'appeler Personne car la notion 
+     Cette classe aurait pu avantageusement s'appeler Personne car la notion
      d'employé n'a pas de sens si aucun Dossier n'existe pour une personne.
      """
      # Identification
      nom = models.CharField(max_length=255)
      prenom = models.CharField(max_length=255, verbose_name = u"Prénom")
-     nom_affichage = models.CharField(max_length=255, 
+     nom_affichage = models.CharField(max_length=255,
                              verbose_name = u"Nom d'affichage",
                              null=True, blank=True)
-     nationalite = models.ForeignKey(ref.Pays, to_field='code', 
+     nationalite = models.ForeignKey(ref.Pays, to_field='code',
                              db_column='nationalite',
                              related_name='employes_nationalite',
-                             verbose_name = u"Nationalité")
+                             verbose_name = u"Nationalité",
+                             blank=True, null=True)
      date_naissance = models.DateField(verbose_name = u"Date de naissance",
                              validators=[validate_date_passee],
                              null=True, blank=True)
      genre = models.CharField(max_length=1, choices=GENRE_CHOICES)
-     
      # Infos personnelles
-     situation_famille = models.CharField(max_length=1, 
+     situation_famille = models.CharField(max_length=1,
                              choices=SITUATION_CHOICES,
                              verbose_name = u"Situation familiale",
                              null=True, blank=True)
      date_entree = models.DateField(verbose_name = u"Date d'entrée à l'AUF",
                              null=True, blank=True)
-     
      # Coordonnées
-     tel_domicile = models.CharField(max_length=255, 
+     tel_domicile = models.CharField(max_length=255,
                              verbose_name = u"Tél. domicile",
                              null=True, blank=True)
-     tel_cellulaire = models.CharField(max_length=255, 
+     tel_cellulaire = models.CharField(max_length=255,
                              verbose_name = u"Tél. cellulaire",
                              null=True, blank=True)
      adresse = models.CharField(max_length=255, null=True, blank=True)
      province = models.CharField(max_length=255, null=True, blank=True)
      code_postal = models.CharField(max_length=255, null=True, blank=True)
      pays = models.ForeignKey(ref.Pays, to_field='code', db_column='pays',
-                             related_name='employes', 
+                             related_name='employes',
                              null=True, blank=True)
  
      class Meta:
          ordering = ['nom_affichage','nom','prenom']
          verbose_name = u"Employé"
          verbose_name_plural = u"Employés"
-         
      def __unicode__(self):
          return u'%s [%s]' % (self.get_nom(), self.id)
-         
      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
-         
      def civilite(self):
          civilite = u''
          if self.genre.upper() == u'M':
          elif self.genre.upper() == u'F':
              civilite = u'Mme'
          return civilite
-         
      def url_photo(self):
          """Retourne l'URL du service retournant la photo de l'Employe.
          Équivalent reverse url 'rh_photo' avec id en param.
          """
          from django.core.urlresolvers import reverse
          return reverse('rh_photo', kwargs={'id':self.id})
-                
      def dossiers_passes(self):
          today = date.today()
          dossiers_passes = self.dossiers.filter(date_fin__lt=today).order_by('-date_fin')
          for d in dossiers_passes:
              d.archive = True
          return dossiers_passes
-         
      def dossiers_futurs(self):
          today = date.today()
          return self.dossiers.filter(date_debut__gt=today).order_by('-date_fin')
-         
      def dossiers_encours(self):
          dossiers_p_f = self.dossiers_passes() | self.dossiers_futurs()
          ids_dossiers_p_f = [d.id for d in dossiers_p_f]
          dossiers_encours = self.dossiers.exclude(id__in=ids_dossiers_p_f).order_by('-date_fin')
-         
          # TODO : supprimer ce code quand related_name fonctionnera ou d.remuneration_set
          for d in dossiers_encours:
              d.remunerations = Remuneration.objects.filter(dossier=d.id).order_by('-id')
          return dossiers_encours
-         
      def postes_encours(self):
          postes_encours = set()
          for d in self.dossiers_encours():
              postes_encours.add(d.poste)
          return postes_encours
-         
      def poste_principal(self):
          """
          Retourne le Poste du premier Dossier créé parmi les Dossiers en cours.
-         Idée derrière : 
+         Idée derrière :
          si on ajout d'autre Dossiers, c'est pour des Postes secondaires.
          """
          poste = Poste.objects.none()
@@@ -449,8 -434,8 +447,8 @@@ class EmployePiece(models.Model)
      """
      employe = models.ForeignKey('Employe', db_column='employe')
      nom = models.CharField(verbose_name="Nom", max_length=255)
-     fichier = models.FileField(verbose_name="Fichier", 
-                             upload_to=employe_piece_dispatch, 
+     fichier = models.FileField(verbose_name="Fichier",
+                             upload_to=employe_piece_dispatch,
                              storage=storage_prive)
  
      class Meta:
@@@ -484,23 -469,24 +482,24 @@@ class AyantDroit(AUFMetadata)
      nom = models.CharField(max_length=255)
      prenom = models.CharField(max_length=255,
                              verbose_name = u"Prénom",)
-     nom_affichage = models.CharField(max_length=255, 
+     nom_affichage = models.CharField(max_length=255,
                              verbose_name = u"Nom d'affichage",
                              null=True, blank=True)
-     nationalite = models.ForeignKey(ref.Pays, to_field='code', 
+     nationalite = models.ForeignKey(ref.Pays, to_field='code',
                              db_column='nationalite',
                              related_name='ayantdroits_nationalite',
-                             verbose_name = u"Nationalité")
+                             verbose_name = u"Nationalité",
+                             null=True, blank=True)
      date_naissance = models.DateField(verbose_name = u"Date de naissance",
                              validators=[validate_date_passee],
                              null=True, blank=True)
      genre = models.CharField(max_length=1, choices=GENRE_CHOICES)
-     
      # Relation
-     employe = models.ForeignKey('Employe', db_column='employe', 
+     employe = models.ForeignKey('Employe', db_column='employe',
                              related_name='ayantdroits',
                              verbose_name = u"Employé")
-     lien_parente = models.CharField(max_length=10, 
+     lien_parente = models.CharField(max_length=10,
                              choices=LIEN_PARENTE_CHOICES,
                              verbose_name = u"Lien de parenté",
                              null=True, blank=True)
          ordering = ['nom_affichage']
          verbose_name = u"Ayant droit"
          verbose_name_plural = u"Ayants droit"
-         
      def __unicode__(self):
          return u'%s' % (self.get_nom())
-         
      def get_nom(self):
          nom_affichage = self.nom_affichage
          if not nom_affichage:
@@@ -549,36 -535,38 +548,36 @@@ class Dossier_(AUFMetadata)
      """Le Dossier regroupe les informations relatives à l'occupation
      d'un Poste par un Employe. Un seul Dossier existe par Poste occupé
      par un Employe.
-     
      Plusieurs Contrats peuvent être associés au Dossier.
      Une structure de Remuneration est rattachée au Dossier. Un Poste pour
      lequel aucun Dossier n'existe est un poste vacant.
      """
 -    # Identification
 -    employe = models.ForeignKey('Employe', db_column='employe',
 -                            related_name='dossiers',
 -                            verbose_name=u"Employé")
 +
 +    objects = DossierManager()
 +
      # TODO: OneToOne ??
 -    poste = models.ForeignKey('Poste', db_column='poste', related_name='dossiers')
      statut = models.ForeignKey('Statut', related_name='+', default=3,
                              null=True)
-     organisme_bstg = models.ForeignKey('OrganismeBstg', 
+     organisme_bstg = models.ForeignKey('OrganismeBstg',
                              db_column='organisme_bstg',
                              related_name='+',
-                             verbose_name = u"Organisme", 
+                             verbose_name = u"Organisme",
                              help_text="Si détaché (DET) ou \
                                      mis à disposition (MAD), \
                                      préciser l'organisme.",
                              null=True, blank=True)
-                           
      # Recrutement
      remplacement = models.BooleanField(default=False)
      remplacement_de = models.ForeignKey('self', related_name='+',
                              null=True, blank=True)
-     statut_residence = models.CharField(max_length=10, default='local', 
+     statut_residence = models.CharField(max_length=10, default='local',
                              verbose_name = u"Statut", null=True,
                              choices=STATUT_RESIDENCE_CHOICES)
-    
      # Rémunération
-     classement = models.ForeignKey('Classement', db_column='classement', 
+     classement = models.ForeignKey('Classement', db_column='classement',
                              related_name='+',
                              null=True, blank=True)
      regime_travail = models.DecimalField(max_digits=12, null=True,
      date_fin = models.DateField(verbose_name = u"Date de fin d'occupation \
                              de poste",
                              null=True, blank=True)
-     
      # Comptes
      # TODO?
-     
      class Meta:
          abstract = True
          ordering = ['employe__nom', ]
          verbose_name = u"Dossier"
          verbose_name_plural = "Dossiers"
-         
      def salaire_theorique(self):
          annee = date.today().year
          coeff = self.classement.coefficient
          implantation = self.poste.implantation
          point = ValeurPoint.objects.get(implantation=implantation, annee=annee)
-         
          montant = coeff * point.valeur
          devise = point.devise
          return {'montant':montant, 'devise':devise}
-         
      def __unicode__(self):
          poste = self.poste.nom
          if self.employe.genre == 'F':
-             poste = self.poste.nom_feminin            
+             poste = self.poste.nom_feminin
          return u'%s - %s' % (self.employe, poste)
  
      prefix_implantation = "poste__implantation__region"
  
  
      def remunerations(self):
 -        return self.rh_remuneration_remunerations.all().order_by('date_debut')
 +        return self.rh_remunerations.all().order_by('date_debut')
  
      def get_salaire(self):
          try:
  
  class Dossier(Dossier_):
      __doc__ = Dossier_.__doc__
 +    poste = models.ForeignKey('%s.Poste' % app_context(), db_column='poste', related_name='%(app_label)s_dossiers')
 +    employe = models.ForeignKey('Employe', db_column='employe', 
 +                            related_name='%(app_label)s_dossiers',
 +                            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='+')
 +    dossier = models.ForeignKey('%s.Dossier' % app_context(), 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, 
+     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_):
 +    pass
 +
 +class DossierCommentaire_(Commentaire):
 +    dossier = models.ForeignKey('%s.Dossier' % app_context(), db_column='dossier', related_name='+')
 +    class Meta:
 +        abstract = True
 +
 +class DossierCommentaire(DossierCommentaire_):
 +    pass
  
 -class DossierComparaison(models.Model):
 +class DossierComparaison_(models.Model):
      """
      Photo d'une comparaison salariale au moment de l'embauche.
      """
 -    dossier = models.ForeignKey('Dossier', related_name='comparaisons')
 +    dossier = models.ForeignKey('%s.Dossier' % app_context(), related_name='%(app_label)s_comparaisons')
 +    objects = DossierComparaisonManager()
 +
      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:
 -            raise Exception(u"La devise %s n'a pas de taux pour l'implantation %s" % (self.devise, self.dossier.poste.implantation))
 +        annee = self.dossier.poste.date_debut.year
 +        taux = [tc.taux for tc in TauxChange.objects.filter(devise=self.devise, annee=annee)]
 +        taux = set(taux)
 +        if len(taux) != 1:
 +            raise Exception(u"Le taux de la devise %s n'a pas n'existe pas pour %s ou il existe plusieurs taux pour la même année" % (self.devise.id, annee))
          else:
 -            return liste_taux[0].taux
 +            return list(taux)[0]
  
      def montant_euros(self):
          return round(float(self.montant) * float(self.taux_devise()), 2)
  
 +class DossierComparaison(DossierComparaison_):
 +    pass
  
  ### RÉMUNÉRATION
-     
  class RemunerationMixin(AUFMetadata):
 +    dossier = models.ForeignKey('%s.Dossier' % app_context(), db_column='dossier', related_name='%(app_label)s_remunerations')
      # Identification
 -    dossier = models.ForeignKey('Dossier', db_column='dossier',
 -                        related_name='%(app_label)s_%(class)s_remunerations')
 -    type = models.ForeignKey('TypeRemuneration', db_column='type',
 +    type = models.ForeignKey('TypeRemuneration', db_column='type', 
                              related_name='+',
                              verbose_name = u"Type de rémunération")
-     type_revalorisation = models.ForeignKey('TypeRevalorisation', 
-                             db_column='type_revalorisation', 
+     type_revalorisation = models.ForeignKey('TypeRevalorisation',
+                             db_column='type_revalorisation',
                              related_name='+',
                              verbose_name = u"Type de revalorisation",
                              null=True, blank=True)
      montant = models.FloatField(null=True, blank=True,
                              default=0)
                              # Annuel (12 mois, 52 semaines, 364 jours?)
 -    devise = models.ForeignKey('Devise', to_field='id',
 -                            db_column='devise', related_name='+',
 -                            default=5)
 +    devise = models.ForeignKey('Devise', db_column='devise', related_name='+', default=5)
      # commentaire = precision
      commentaire = models.CharField(max_length=255, null=True, blank=True)
      # date_debut = anciennement date_effectif
                              null=True, blank=True)
      date_fin = models.DateField(verbose_name = u"Date de fin",
                              null=True, blank=True)
-     
-     class Meta: 
+     class Meta:
          abstract = True
          ordering = ['type__nom', '-date_fin']
-         
      def __unicode__(self):
          return u'%s %s (%s)' % (self.montant, self.devise.code, self.type.nom)
-     
  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.    
+     pour un Dossier. Si un Evenement existe, utiliser la structure de
+     rémunération EvenementRemuneration de cet événement.
      """
  
      def montant_mois(self):
          return round(self.montant / 12, 2)
  
      def taux_devise(self):
 -        return self.devise.tauxchange_set.order_by('-annee').all()[0].taux
 +        if self.devise.code == "EUR":
 +            return 1
 +
 +        annee = datetime.datetime.now().year
 +        if self.date_debut is not None:
 +            annee = self.date_debut.year
 +        if self.dossier.poste.date_debut is not None:
 +            annee = self.dossier.poste.date_debut
 +
 +        taux = [tc.taux for tc in TauxChange.objects.filter(devise=self.devise_id, annee=annee)]
 +        taux = set(taux)
 +        if len(taux) != 1:
 +            raise Exception(u"Le taux de la devise %s n'a pas n'existe pas pour %s ou il existe plusieurs taux pour la même année" % (self.devise.id, annee))
 +        else:
 +            return list(taux)[0]
  
      def montant_euro(self):
 -        return round(float(self.montant) / float(self.taux_devise()), 2)
 +        return round(float(self.montant) * float(self.taux_devise()), 2)
  
      def montant_euro_mois(self):
          return round(self.montant_euro() / 12, 2)
-     
      def __unicode__(self):
          try:
              devise = self.devise.code
  
  
  class Remuneration(Remuneration_):
 -    __doc__ = Remuneration_.__doc__
 +    pass
  
  
  ### CONTRATS
@@@ -791,16 -748,18 +790,15 @@@ class ContratManager(NoDeleteManager)
      def get_query_set(self):
          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 
+     pour un Poste particulier. Pour un Dossier (qui documente cette
      relation de travail) plusieurs contrats peuvent être associés.
      """
-     dossier = models.ForeignKey('%s.Dossier' % app_context(), db_column='dossier', related_name='%(app_label)s_contrats')
 -
      objects = ContratManager()
--
 -    dossier = models.ForeignKey('Dossier', db_column='dossier',
 -                            related_name='contrats')
 -    type_contrat = models.ForeignKey('TypeContrat', db_column='type_contrat',
++    dossier = models.ForeignKey('%s.Dossier' % app_context(), db_column='dossier', related_name='%(app_label)s_contrats')
 +    type_contrat = models.ForeignKey('TypeContrat', db_column='type_contrat', 
                              related_name='+',
                              verbose_name = u"Type de contrat")
      date_debut = models.DateField(verbose_name = u"Date de début")
                              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)
  
 -# TODO? class ContratPiece(models.Model):
 -
 +class Contrat(Contrat_):
 +    pass
 +        
  
  ### ÉVÉNEMENTS
  
 -class Evenement_(AUFMetadata):
 -    """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).
 -
 -    Ex.: congé de maternité, maladie...
 -
 -    Lors de ces situations exceptionnelles, l'Employe a un régime de travail
 -    différent et une rémunération en conséquence. On souhaite toutefois
 -    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',
 -                            related_name='+')
 -    nom = models.CharField(max_length=255)
 -    date_debut = models.DateField(verbose_name = u"Date de début")
 -    date_fin = models.DateField(verbose_name = u"Date de fin",
 -                            null=True, blank=True)
 -
 -    class Meta:
 -        abstract = True
 -        ordering = ['nom']
 -        verbose_name = u"Évènement"
 -        verbose_name_plural = u"Évènements"
 -
 -    def __unicode__(self):
 -        return u'%s' % (self.nom)
 -
 -
 -class Evenement(Evenement_):
 -    __doc__ = Evenement_.__doc__
 -
 -
 -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='+',
 -                            verbose_name = u"É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 = u"Évènement - rémunération"
 -        verbose_name_plural = u"Évènements - rémunérations"
 -
 -
 -class EvenementRemuneration(EvenementRemuneration_):
 -    __doc__ = EvenementRemuneration_.__doc__
 -
 -    class Meta:
 -        abstract = True
 -
 -
 -class EvenementRemuneration(EvenementRemuneration_):
 -    __doc__ = EvenementRemuneration_.__doc__
 +#class Evenement_(AUFMetadata):
 +#    """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).
 +#    
 +#    Ex.: congé de maternité, maladie...
 +#    
 +#    Lors de ces situations exceptionnelles, l'Employe a un régime de travail
 +#    différent et une rémunération en conséquence. On souhaite toutefois
 +#    conserver le Dossier intact afin d'éviter une re-saisie des données lors
 +#    du retour à la normale.
 +#    """
 +#    dossier = models.ForeignKey('%s.Dossier' % app_context(), db_column='dossier', 
 +#                            related_name='+')
 +#    nom = models.CharField(max_length=255)
 +#    date_debut = models.DateField(verbose_name = u"Date de début")
 +#    date_fin = models.DateField(verbose_name = u"Date de fin",
 +#                            null=True, blank=True)
 +#
 +#    class Meta:
 +#        abstract = True
 +#        ordering = ['nom']
 +#        verbose_name = u"Évènement"
 +#        verbose_name_plural = u"Évènements"
 +#                            
 +#    def __unicode__(self):
 +#        return u'%s' % (self.nom)
 +#
 +#
 +#class Evenement(Evenement_):
 +#    __doc__ = Evenement_.__doc__
 +#
 +#    
 +#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='+',
 +#                            verbose_name = u"É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 = u"Évènement - rémunération"
 +#        verbose_name_plural = u"Évènements - rémunérations"
 +#
 +#
 +#class EvenementRemuneration(EvenementRemuneration_):
 +#    __doc__ = EvenementRemuneration_.__doc__
 +#
 +#    class Meta:
 +#        abstract = True
 +#
 +#
 +#class EvenementRemuneration(EvenementRemuneration_):
 +#    __doc__ = EvenementRemuneration_.__doc__
++# TODO? class ContratPiece(models.Model):
  
  
- ### RÉFÉRENCES RH 
+ ### RÉFÉRENCES RH
  
  class FamilleEmploi(AUFMetadata):
      """Catégorie utilisée dans la gestion des Postes.
      Catégorie supérieure à TypePoste.
      """
      nom = models.CharField(max_length=255)
-     
      class Meta:
          ordering = ['nom']
          verbose_name = u"Famille d'emploi"
          verbose_name_plural = u"Familles d'emploi"
-     
      def __unicode__(self):
          return u'%s' % (self.nom)
  
@@@ -906,10 -863,10 +905,10 @@@ class TypePoste(AUFMetadata)
      nom = models.CharField(max_length=255)
      nom_feminin = models.CharField(max_length=255,
                              verbose_name = u"Nom féminin")
-     
      is_responsable = models.BooleanField(default=False,
                              verbose_name = u"Poste de responsabilité")
-     famille_emploi = models.ForeignKey('FamilleEmploi', 
+     famille_emploi = models.ForeignKey('FamilleEmploi',
                              db_column='famille_emploi',
                              related_name='+',
                              verbose_name = u"Famille d'emploi")
          ordering = ['nom']
          verbose_name = u"Type de poste"
          verbose_name_plural = u"Types de poste"
-         
      def __unicode__(self):
          return u'%s' % (self.nom)
  
@@@ -940,13 -897,13 +939,13 @@@ class TypeRemuneration(AUFMetadata)
      """Catégorie de Remuneration.
      """
      nom = models.CharField(max_length=255)
-     type_paiement = models.CharField(max_length=30, 
+     type_paiement = models.CharField(max_length=30,
                              choices=TYPE_PAIEMENT_CHOICES,
                              verbose_name = u"Type de paiement")
-     nature_remuneration = models.CharField(max_length=30, 
+     nature_remuneration = models.CharField(max_length=30,
                              choices=NATURE_REMUNERATION_CHOICES,
                              verbose_name = u"Nature de la rémunération")
-                             
      class Meta:
          ordering = ['nom']
          verbose_name = u"Type de rémunération"
  
      def __unicode__(self):
          return u'%s' % (self.nom)
-         
  class TypeRevalorisation(AUFMetadata):
      """Justification du changement de la Remuneration.
      (Actuellement utilisé dans aucun traitement informatique.)
      """
      nom = models.CharField(max_length=255)
-     
      class Meta:
          ordering = ['nom']
          verbose_name = u"Type de revalorisation"
  
      def __unicode__(self):
          return u'%s' % (self.nom)
-     
  class Service(AUFMetadata):
      """Unité administrative où les Postes sont rattachés.
      """
      nom = models.CharField(max_length=255)
-         
      class Meta:
          ordering = ['nom']
          verbose_name = u"Service"
@@@ -989,14 -946,14 +988,14 @@@ TYPE_ORGANISME_CHOICES = 
  )
  
  class OrganismeBstg(AUFMetadata):
-     """Organisation d'où provient un Employe mis à disposition (MAD) de 
+     """Organisation d'où provient un Employe mis à disposition (MAD) de
      ou détaché (DET) à l'AUF à titre gratuit.
-     
      (BSTG = bien et service à titre gratuit.)
      """
      nom = models.CharField(max_length=255)
      type = models.CharField(max_length=10, choices=TYPE_ORGANISME_CHOICES)
-     pays = models.ForeignKey(ref.Pays, to_field='code', 
+     pays = models.ForeignKey(ref.Pays, to_field='code',
                              db_column='pays',
                              related_name='organismes_bstg',
                              null=True, blank=True)
@@@ -1025,7 -982,7 +1024,7 @@@ class Statut(AUFMetadata)
          ordering = ['code']
          verbose_name = u"Statut d'employé"
          verbose_name_plural = u"Statuts d'employé"
-         
      def __unicode__(self):
          return u'%s : %s' % (self.code, self.nom)
  
@@@ -1042,24 -999,24 +1041,24 @@@ TYPE_CLASSEMENT_CHOICES = 
  
  
  class Classement_(AUFMetadata):
-     """Éléments de classement de la 
+     """Éléments de classement de la
      "Grille générique de classement hiérarchique".
-     
-     Utile pour connaître, pour un Dossier, le salaire de base théorique lié au 
+     Utile pour connaître, pour un Dossier, le salaire de base théorique lié au
      classement dans la grille. Le classement donne le coefficient utilisé dans:
  
      salaire de base = coefficient * valeur du point de l'Implantation du Poste
      """
      # Identification
      type = models.CharField(max_length=10, choices=TYPE_CLASSEMENT_CHOICES)
-     echelon = models.IntegerField(verbose_name = u"Échelon")
-     degre = models.IntegerField(verbose_name = u"Degré")
-     coefficient = models.FloatField(default=0, verbose_name = u"Coéfficient",
+     echelon = models.IntegerField(verbose_name=u"Échelon", blank=True, default=0)
+     degre = models.IntegerField(verbose_name=u"Degré", blank=True, default=0)
+     coefficient = models.FloatField(default=0, verbose_name=u"Coefficient",
                                      null=True)
      # Méta
      # annee # au lieu de date_debut et date_fin
      commentaire = models.TextField(null=True, blank=True)
-     
      class Meta:
          abstract = True
          ordering = ['type','echelon','degre','coefficient']
@@@ -1075,7 -1032,7 +1074,7 @@@ class Classement(Classement_)
  
  
  class TauxChange_(AUFMetadata):
-     """Taux de change de la devise vers l'euro (EUR) 
+     """Taux de change de la devise vers l'euro (EUR)
      pour chaque année budgétaire.
      """
      # Identification
          ordering = ['-annee', 'devise__code']
          verbose_name = u"Taux de change"
          verbose_name_plural = u"Taux de change"
-     
      def __unicode__(self):
          return u'%s : %s € (%s)' % (self.devise, self.taux, self.annee)
  
@@@ -1102,19 -1059,19 +1101,19 @@@ class ValeurPointManager(NoDeleteManage
  
  
  class ValeurPoint_(AUFMetadata):
-     """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 
+     """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).
  
      salaire de base = coefficient * valeur du point de l'Implantation du Poste
      """
-     
      actuelles = ValeurPointManager()
  
      valeur = models.FloatField(null=True)
      devise = models.ForeignKey('Devise', db_column='devise', null=True,
                              related_name='+', default=5)
-     implantation = models.ForeignKey(ref.Implantation, 
+     implantation = models.ForeignKey(ref.Implantation,
                              db_column='implantation',
                              related_name='%(app_label)s_valeur_point')
      # Méta
          verbose_name = u"Valeur du point"
          verbose_name_plural = u"Valeurs du point"
  
 -    # TODO : cette fonction n'était pas présente dans la branche dev, utilité?
 -    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
 -
      def __unicode__(self):
          return u'%s %s (%s)' % (self.valeur, self.devise, self.annee)
  
@@@ -1144,7 -1114,7 +1143,7 @@@ class Devise(AUFMetadata)
          ordering = ['code']
          verbose_name = u"Devise"
          verbose_name_plural = u"Devises"
-         
      def __unicode__(self):
          return u'%s - %s' % (self.code, self.nom)
  
@@@ -1161,24 -1131,24 +1160,24 @@@ class TypeContrat(AUFMetadata)
  
      def __unicode__(self):
          return u'%s' % (self.nom)
-         
-         
  ### AUTRES
  
  class ResponsableImplantation(AUFMetadata):
-     """Le responsable d'une implantation. 
+     """Le responsable d'une implantation.
      Anciennement géré sur le Dossier du responsable.
      """
-     employe = models.ForeignKey('Employe', db_column='employe', 
+     employe = models.ForeignKey('Employe', db_column='employe',
                              related_name='+',
                              null=True, blank=True)
-     implantation = models.ForeignKey(ref.Implantation, 
-                             db_column='implantation', related_name='+', 
+     implantation = models.ForeignKey(ref.Implantation,
+                             db_column='implantation', related_name='+',
                              unique=True)
  
      def __unicode__(self):
          return u'%s : %s' % (self.implantation, self.employe)
-         
      class Meta:
          ordering = ['implantation__nom']
          verbose_name = "Responsable d'implantation"
diff --combined project/settings.py
@@@ -3,8 -3,6 +3,6 @@@
  import os
  import socket
  from conf import *
  PROJET_TITRE = "Ressources humaines"
  
  # Rapports d'erreurs
@@@ -34,7 -32,7 +32,7 @@@ PRIVE_MEDIA_ROOT = os.path.join(os.path
  # trailing slash if there is a path component (optional in other cases).
  # Examples: "http://media.lawrence.com", "http://example.com/media/"
  MEDIA_URL = '/media/'
 -PRIVE_MEDIA_URL = '/dae/prive/'
 +PRIVE_MEDIA_URL = '/rh/prive/'
  OE_PRIVE_MEDIA_URL = '/recrutement/prive/'
  
  
@@@ -80,6 -78,7 +78,7 @@@ INSTALLED_APPS = 
      #'project.rh_v1',
      'project.rh',
      'project.dae',
+     'project.legacy',
      'alphafilter',
      'project.recrutement',
      'form_utils',
@@@ -147,5 -146,9 +146,9 @@@ TINYMCE_DEFAULT_CONFIG = 
  'content_css' : '/media/css/tinymce.css',
  }
  
+ DATABASE_ROUTERS = (
+     'project.legacy.DatabaseRouter',
+ )
  # django-sendfile
  SENDFILE_BACKEND = 'sendfile.backends.simple'