--- /dev/null
--- /dev/null
++# 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']
# -=- 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
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):
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)
('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"
__doc__ = Poste_.__doc__
- class Poste(Poste_):
- __doc__ = Poste_.__doc__
-
-
POSTE_FINANCEMENT_CHOICES = (
('A', 'A - Frais de personnel'),
('B', 'B - Projet(s)-Titre(s)'),
"""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
)
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()
"""
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:
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:
"""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
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)
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)
"""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"
)
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)
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)
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']
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)
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)
ordering = ['code']
verbose_name = u"Devise"
verbose_name_plural = u"Devises"
-
+
def __unicode__(self):
return u'%s - %s' % (self.code, self.nom)
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"