Merge branch 'dev' into test
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 16 May 2011 18:36:47 +0000 (14:36 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 16 May 2011 18:36:47 +0000 (14:36 -0400)
35 files changed:
project/budget/__init__.py [new file with mode: 0755]
project/budget/migrations/0001_initial.py [new file with mode: 0644]
project/budget/migrations/0002_auto__add_dossier__add_simulation__add_poste.py [new file with mode: 0644]
project/budget/migrations/__init__.py [new file with mode: 0644]
project/budget/models.py [new file with mode: 0755]
project/budget/tests.py [new file with mode: 0755]
project/budget/views.py [new file with mode: 0755]
project/dae/admin.py
project/dae/catalogues.py
project/dae/decorators.py
project/dae/forms.py
project/dae/managers.py
project/dae/migrations/0035_auto__chg_field_dossier_classement__add_field_poste_pourvu__chg_field_.py [new file with mode: 0644]
project/dae/migrations/0036_auto__del_justificationquestion__del_justificationnouvelemploye__del_j.py [new file with mode: 0644]
project/dae/models.py
project/dae/templates/dae/embauche-dossier-consulter.html
project/dae/templates/dae/embauche-remun-consulter.html
project/dae/templates/dae/embauche.html
project/dae/templates/dae/embauche_consulter.html
project/dae/templates/dae/embauche_pdf.html
project/dae/templates/dae/embauches_liste.html
project/dae/templates/dae/index.html
project/dae/templates/dae/poste.html
project/dae/templates/dae/poste_consulter.html
project/dae/templates/dae/poste_resume.html
project/dae/templates/dae/postes_liste.html
project/dae/templatetags/__init__.py [new file with mode: 0644]
project/dae/templatetags/dae.py [new file with mode: 0644]
project/dae/views.py
project/dae/workflow.py
project/media/js/dae-embauche.js
project/media/js/dae-poste.js
project/rh/models.py
project/settings.py
project/templates/menu.html

diff --git a/project/budget/__init__.py b/project/budget/__init__.py
new file mode 100755 (executable)
index 0000000..e69de29
diff --git a/project/budget/migrations/0001_initial.py b/project/budget/migrations/0001_initial.py
new file mode 100644 (file)
index 0000000..5028306
--- /dev/null
@@ -0,0 +1,21 @@
+# 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):
+        pass
+    
+    
+    def backwards(self, orm):
+        pass
+    
+    
+    models = {
+        
+    }
+    
+    complete_apps = ['budget']
diff --git a/project/budget/migrations/0002_auto__add_dossier__add_simulation__add_poste.py b/project/budget/migrations/0002_auto__add_dossier__add_simulation__add_poste.py
new file mode 100644 (file)
index 0000000..06de048
--- /dev/null
@@ -0,0 +1,499 @@
+# 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):
+        
+        # Adding model 'Dossier'
+        db.create_table('budget_dossier', (
+            ('employe', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', db_column='employe', to=orm['rh.Employe'])),
+            ('regime_travail_nb_heure_semaine', self.gf('django.db.models.fields.DecimalField')(default=35.0, max_digits=12, decimal_places=2)),
+            ('classement', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='classement', to=orm['rh.Classement'])),
+            ('organisme_bstg', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='organisme_bstg', to=orm['rh.OrganismeBstg'])),
+            ('user_desactivation', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='user_desactivation', to=orm['auth.User'])),
+            ('statut', self.gf('django.db.models.fields.related.ForeignKey')(default=3, related_name='+', to=orm['rh.Statut'])),
+            ('simulation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['budget.Simulation'])),
+            ('statut_residence', self.gf('django.db.models.fields.CharField')(default='local', max_length=10)),
+            ('date_fin', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('date_creation', self.gf('django.db.models.fields.DateField')(auto_now_add=True, blank=True)),
+            ('user_creation', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='user_creation', to=orm['auth.User'])),
+            ('poste', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', db_column='poste', to=orm['rh.Poste'])),
+            ('regime_travail', self.gf('django.db.models.fields.DecimalField')(default=100.0, max_digits=12, decimal_places=2)),
+            ('date_debut', self.gf('django.db.models.fields.DateField')()),
+            ('user_modification', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='user_modification', to=orm['auth.User'])),
+            ('date_modification', self.gf('django.db.models.fields.DateField')(auto_now=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)),
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('remplacement', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
+        ))
+        db.send_create_signal('budget', ['Dossier'])
+
+        # Adding model 'Simulation'
+        db.create_table('budget_simulation', (
+            ('nom', self.gf('django.db.models.fields.CharField')(max_length=255)),
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+        ))
+        db.send_create_signal('budget', ['Simulation'])
+
+        # Adding model 'Poste'
+        db.create_table('budget_poste', (
+            ('indemn_min', self.gf('django.db.models.fields.DecimalField')(default=0, max_digits=12, decimal_places=2)),
+            ('salaire_min', self.gf('django.db.models.fields.DecimalField')(default=0, max_digits=12, decimal_places=2)),
+            ('implantation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', db_column='implantation', to=orm['datamaster_modeles.Implantation'])),
+            ('devise_max', self.gf('django.db.models.fields.related.ForeignKey')(default=5, related_name='+', db_column='devise_max', to=orm['rh.Devise'])),
+            ('expatrie', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
+            ('date_fin', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('devise_min', self.gf('django.db.models.fields.related.ForeignKey')(default=5, related_name='+', db_column='devise_min', to=orm['rh.Devise'])),
+            ('type_poste', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, db_column='type_poste', to=orm['rh.TypePoste'])),
+            ('valeur_point_min', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='valeur_point_min', to=orm['rh.ValeurPoint'])),
+            ('devise_comparaison', self.gf('django.db.models.fields.related.ForeignKey')(default=5, related_name='+', db_column='devise_comparaison', to=orm['rh.Devise'])),
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('regime_travail_nb_heure_semaine', self.gf('django.db.models.fields.DecimalField')(default=35.0, max_digits=12, decimal_places=2)),
+            ('service', self.gf('django.db.models.fields.related.ForeignKey')(default=1, related_name='+', db_column='service', to=orm['rh.Service'])),
+            ('valeur_point_max', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='valeur_point_max', to=orm['rh.ValeurPoint'])),
+            ('indemn_max', self.gf('django.db.models.fields.DecimalField')(default=0, max_digits=12, decimal_places=2)),
+            ('date_validation', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+            ('comp_fonctionpub_max', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
+            ('responsable', self.gf('django.db.models.fields.related.ForeignKey')(default=149, related_name='+', db_column='responsable', to=orm['rh.Poste'])),
+            ('comp_fonctionpub_min', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
+            ('comp_ong_min', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
+            ('date_debut', self.gf('django.db.models.fields.DateField')()),
+            ('regime_travail', self.gf('django.db.models.fields.DecimalField')(default=100.0, max_digits=12, decimal_places=2)),
+            ('date_modification', self.gf('django.db.models.fields.DateField')(auto_now=True, blank=True)),
+            ('local', self.gf('django.db.models.fields.BooleanField')(default=True, blank=True)),
+            ('simulation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['budget.Simulation'])),
+            ('mise_a_disposition', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
+            ('nom', self.gf('django.db.models.fields.CharField')(max_length=255)),
+            ('justification', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+            ('nom_feminin', self.gf('django.db.models.fields.CharField')(max_length=255, null=True)),
+            ('comp_ong_max', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
+            ('autre_min', self.gf('django.db.models.fields.DecimalField')(default=0, max_digits=12, decimal_places=2)),
+            ('user_creation', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='user_creation', to=orm['auth.User'])),
+            ('appel', self.gf('django.db.models.fields.CharField')(default='interne', max_length=10)),
+            ('user_modification', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='user_modification', to=orm['auth.User'])),
+            ('comp_locale_max', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
+            ('comp_universite_max', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
+            ('date_creation', self.gf('django.db.models.fields.DateField')(auto_now_add=True, blank=True)),
+            ('comp_universite_min', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
+            ('autre_max', self.gf('django.db.models.fields.DecimalField')(default=0, max_digits=12, decimal_places=2)),
+            ('user_desactivation', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='user_desactivation', to=orm['auth.User'])),
+            ('actif', self.gf('django.db.models.fields.BooleanField')(default=True, blank=True)),
+            ('comp_autre_max', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
+            ('date_desactivation', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('classement_max', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='classement_max', to=orm['rh.Classement'])),
+            ('comp_locale_min', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
+            ('comp_autre_min', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
+            ('salaire_max', self.gf('django.db.models.fields.DecimalField')(default=0, max_digits=12, decimal_places=2)),
+            ('classement_min', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='classement_min', to=orm['rh.Classement'])),
+        ))
+        db.send_create_signal('budget', ['Poste'])
+    
+    
+    def backwards(self, orm):
+        
+        # Deleting model 'Dossier'
+        db.delete_table('budget_dossier')
+
+        # Deleting model 'Simulation'
+        db.delete_table('budget_simulation')
+
+        # Deleting model 'Poste'
+        db.delete_table('budget_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'})
+        },
+        'budget.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_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': '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', [], {'auto_now': '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'}),
+            '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': "'+'", 'db_column': "'poste'", 'to': "orm['rh.Poste']"}),
+            'regime_travail': ('django.db.models.fields.DecimalField', [], {'default': '100.0', 'max_digits': '12', 'decimal_places': '2'}),
+            'regime_travail_nb_heure_semaine': ('django.db.models.fields.DecimalField', [], {'default': '35.0', 'max_digits': '12', 'decimal_places': '2'}),
+            'remplacement': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'simulation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['budget.Simulation']"}),
+            'statut': ('django.db.models.fields.related.ForeignKey', [], {'default': '3', 'related_name': "'+'", 'to': "orm['rh.Statut']"}),
+            'statut_residence': ('django.db.models.fields.CharField', [], {'default': "'local'", 'max_length': '10'}),
+            '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']"})
+        },
+        'budget.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'}),
+            'autre_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'autre_min': ('django.db.models.fields.DecimalField', [], {'default': '0', '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_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': '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', [], {'auto_now': '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': "'+'", 'db_column': "'devise_comparaison'", 'to': "orm['rh.Devise']"}),
+            'devise_max': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'db_column': "'devise_max'", 'to': "orm['rh.Devise']"}),
+            'devise_min': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'db_column': "'devise_min'", 'to': "orm['rh.Devise']"}),
+            'expatrie': ('django.db.models.fields.BooleanField', [], {'default': 'False', '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['datamaster_modeles.Implantation']"}),
+            'indemn_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'indemn_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'justification': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'local': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'mise_a_disposition': ('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', 'null': 'True'}),
+            'regime_travail': ('django.db.models.fields.DecimalField', [], {'default': '100.0', 'max_digits': '12', 'decimal_places': '2'}),
+            'regime_travail_nb_heure_semaine': ('django.db.models.fields.DecimalField', [], {'default': '35.0', 'max_digits': '12', 'decimal_places': '2'}),
+            'responsable': ('django.db.models.fields.related.ForeignKey', [], {'default': '149', 'related_name': "'+'", 'db_column': "'responsable'", 'to': "orm['rh.Poste']"}),
+            'salaire_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'salaire_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'service': ('django.db.models.fields.related.ForeignKey', [], {'default': '1', 'related_name': "'+'", 'db_column': "'service'", 'to': "orm['rh.Service']"}),
+            'simulation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['budget.Simulation']"}),
+            'type_poste': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'db_column': "'type_poste'", 'to': "orm['rh.TypePoste']"}),
+            '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']"})
+        },
+        'budget.simulation': {
+            'Meta': {'object_name': 'Simulation'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        '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'})
+        },
+        'datamaster_modeles.bureau': {
+            'Meta': {'object_name': 'Bureau', 'db_table': "u'ref_bureau'"},
+            '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['datamaster_modeles.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['datamaster_modeles.Region']", 'db_column': "'region'"})
+        },
+        'datamaster_modeles.implantation': {
+            'Meta': {'object_name': 'Implantation', 'db_table': "u'ref_implantation'"},
+            '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['datamaster_modeles.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['datamaster_modeles.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['datamaster_modeles.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['datamaster_modeles.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'})
+        },
+        'datamaster_modeles.pays': {
+            'Meta': {'object_name': 'Pays', 'db_table': "u'ref_pays'"},
+            '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['datamaster_modeles.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['datamaster_modeles.Region']", 'db_column': "'region'"})
+        },
+        'datamaster_modeles.region': {
+            'Meta': {'object_name': 'Region', 'db_table': "u'ref_region'"},
+            '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['datamaster_modeles.Implantation']"}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'rh.classement': {
+            'Meta': {'object_name': 'Classement'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'coefficient': ('django.db.models.fields.FloatField', [], {'default': '0'}),
+            'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'degre': ('django.db.models.fields.IntegerField', [], {}),
+            'echelon': ('django.db.models.fields.IntegerField', [], {}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
+            '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_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            '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.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_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': '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', [], {'auto_now': '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'", 'to_field': "'code'", 'db_column': "'nationalite'", 'to': "orm['datamaster_modeles.Pays']"}),
+            '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['datamaster_modeles.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'}),
+            '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_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.familleemploi': {
+            'Meta': {'object_name': 'FamilleEmploi'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            '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_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': '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['datamaster_modeles.Pays']", 'blank': 'True', 'null': 'True'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
+            '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'}),
+            'autre_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'autre_min': ('django.db.models.fields.DecimalField', [], {'default': '0', '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_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': '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', [], {'auto_now': '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': "'+'", 'db_column': "'devise_comparaison'", 'to': "orm['rh.Devise']"}),
+            'devise_max': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'db_column': "'devise_max'", 'to': "orm['rh.Devise']"}),
+            'devise_min': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'db_column': "'devise_min'", 'to': "orm['rh.Devise']"}),
+            'expatrie': ('django.db.models.fields.BooleanField', [], {'default': 'False', '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['datamaster_modeles.Implantation']"}),
+            'indemn_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'indemn_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'justification': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'local': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'mise_a_disposition': ('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', 'null': 'True'}),
+            'regime_travail': ('django.db.models.fields.DecimalField', [], {'default': '100.0', 'max_digits': '12', 'decimal_places': '2'}),
+            'regime_travail_nb_heure_semaine': ('django.db.models.fields.DecimalField', [], {'default': '35.0', 'max_digits': '12', 'decimal_places': '2'}),
+            'responsable': ('django.db.models.fields.related.ForeignKey', [], {'default': '149', 'related_name': "'+'", 'db_column': "'responsable'", 'to': "orm['rh.Poste']"}),
+            'salaire_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'salaire_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'service': ('django.db.models.fields.related.ForeignKey', [], {'default': '1', 'related_name': "'+'", 'db_column': "'service'", 'to': "orm['rh.Service']"}),
+            'type_poste': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'db_column': "'type_poste'", 'to': "orm['rh.TypePoste']"}),
+            '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.service': {
+            'Meta': {'object_name': 'Service'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            '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_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            '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_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': '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'}),
+            '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_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'devise': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", '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': "'valeur_point'", 'db_column': "'implantation'", 'to': "orm['datamaster_modeles.Implantation']"}),
+            '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', [], {})
+        }
+    }
+    
+    complete_apps = ['budget']
diff --git a/project/budget/migrations/__init__.py b/project/budget/migrations/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/project/budget/models.py b/project/budget/models.py
new file mode 100755 (executable)
index 0000000..67d8371
--- /dev/null
@@ -0,0 +1,52 @@
+# -=- encoding: utf-8 -=-
+
+from django.db import models
+
+from rh import models as rh
+
+
+class Simulation(models.Model):
+    nom = models.CharField(max_length=255,
+                            verbose_name=u'Nom de la simulation')
+
+    def copy_rh_model(self, obj):
+        """ Crée une copie de simulation d'un modèle rh. """
+        initial = dict(['simulation', self] +
+                       [(f.name, getattr(obj, f.name))
+                        for f in obj._meta.fields
+                        if not isinstance(f, models.AutoField) and
+                           not f in obj._meta.parents.values()])
+        return globals()[obj.__class__.__name__](**initial)
+
+
+    def initialize(self):
+        """ Copie les données nécessaires à une simulation. """
+        if (self.poste_set.all().count() > 0 or
+          self.dossier_set.all().count() > 0):
+            raise ValueError(u'Cette simulation a déjà été initialisée.')
+
+        postes = {}
+        for rh_p in rh.Poste.objects.all():
+            sim_p = self.copy_rh_model(rh_p)
+            sim_p.save()
+            postes[rh_p.id] = sim_p
+
+        dossiers = {}
+        for rh_d in rh.Dossier.objects.all():
+            sim_d = self.copy_rh_model(rh_d)
+            if not sim_d.poste.id in postes:
+                self.poste_set.all().delete()
+                self.dossier_set.all().delete()
+                raise ValueError(u'Données inconsistantes.')
+            sim_d.poste = postes[sim_d.poste.id]
+            sim_d.save()
+            dossiers[rh_d.id] = sim_d
+
+class Poste(rh.Poste_):
+    __doc__ = rh.Poste_.__doc__
+    simulation = models.ForeignKey(Simulation)
+
+
+class Dossier(rh.Dossier_):
+    __doc__ = rh.Dossier_.__doc__
+    simulation = models.ForeignKey(Simulation)
diff --git a/project/budget/tests.py b/project/budget/tests.py
new file mode 100755 (executable)
index 0000000..2247054
--- /dev/null
@@ -0,0 +1,23 @@
+"""
+This file demonstrates two different styles of tests (one doctest and one
+unittest). These will both pass when you run "manage.py test".
+
+Replace these with more appropriate tests for your application.
+"""
+
+from django.test import TestCase
+
+class SimpleTest(TestCase):
+    def test_basic_addition(self):
+        """
+        Tests that 1 + 1 always equals 2.
+        """
+        self.failUnlessEqual(1 + 1, 2)
+
+__test__ = {"doctest": """
+Another way to test that 1 + 1 is equal to 2.
+
+>>> 1 + 1 == 2
+True
+"""}
+
diff --git a/project/budget/views.py b/project/budget/views.py
new file mode 100755 (executable)
index 0000000..60f00ef
--- /dev/null
@@ -0,0 +1 @@
+# Create your views here.
index 8b252a2..e452dc2 100644 (file)
@@ -2,16 +2,12 @@
 
 from django.contrib import admin
 from reversion.admin import VersionAdmin
-from models import Poste, JustificationQuestion
+from models import Poste
 
 class PosteAdmin(VersionAdmin):
-    pass
+    list_display = ('_titre', 'pourvu', 'actif', )
 
-class JustificationQuestionAdmin(admin.ModelAdmin):
-    pass
+    def _titre(self, obj):
+        return unicode(obj)
 
 admin.site.register(Poste, PosteAdmin)
-admin.site.register(JustificationQuestion, JustificationQuestionAdmin)
-
-
-
index 3ba170e..4aa32d8 100644 (file)
@@ -1,7 +1,9 @@
 # -*- encoding: utf-8 -*-
 
-from rh_v1 import models as rh
 from django.db.models import Q
+from rh_v1 import models as rh
+from utils import get_employe_from_user, is_user_dans_service
+from workflow import grp_drh
 
 class Responsable(object):
 
@@ -35,13 +37,26 @@ class Responsable(object):
 class Dossier(object):
 
     def get_query(self,q,request):
-        return rh.Dossier.objects.filter(
-            Q(complement1__icontains=q) |
-            Q(poste1__type_poste__nom__icontains=q) |
-            Q(poste2__type_poste__nom__icontains=q) |
-            Q(employe__nom__icontains=q) |
+        
+        employe = get_employe_from_user(request.user)
+        prefixe_implantation = 'poste1__implantation'
+
+        q_recherche = Q(complement1__icontains=q) | \
+            Q(poste1__type_poste__nom__icontains=q) | \
+            Q(employe__nom__icontains=q) | \
             Q(employe__prenom__icontains=q)
-            ).distinct()
+
+        if is_user_dans_service(request.user):
+            q_place = Q(**{ '%s' % prefixe_implantation : employe.implantation })
+        else:
+            q_place = Q(**{ '%s__region' % prefixe_implantation : employe.implantation.region })
+
+
+        if grp_drh in request.user.groups.all():
+            q_filtre = q_recherche
+        else:
+            q_filtre = q_place & q_recherche
+        return rh.Dossier.objects.filter(q_filtre).distinct()
 
     def format_result(self, dossier):
         return dossier.__unicode__()
index 443384e..6a14f2c 100644 (file)
@@ -1,12 +1,14 @@
 # -*- encoding: utf-8 -*-
 
+from django.db.models import Q
 from django.contrib import messages
 from django.contrib.auth.decorators import user_passes_test
 from django.core.urlresolvers import reverse
 from django.http import HttpResponseRedirect
-from workflow import dae_groupes, ETATS_EDITABLE
+from workflow import dae_groupes, ETATS_EDITABLE, grp_drh
 from project.dae import models as dae
 from project.rh_v1 import models as rh
+from utils import get_employe_from_user, is_user_dans_service
 
 def user_in_dae_groupes(user):
     """
@@ -106,6 +108,38 @@ def dossier_dans_ma_region_ou_service(fn):
             return poste_dans_ma_region_ou_service(fn)(request, *args, **kwargs)
     return inner
 
+def vieux_dossier_dans_ma_region_ou_service(fn):
+    """
+    Test si le user connecté appartient bien à la même région ou service que le poste.
+    """
+    def inner(request, *args, **kwargs):
+        user = request.user
+        dossier_id = kwargs.get('dossier_id', None)
+
+        employe = get_employe_from_user(request.user)
+        prefixe_implantation = 'poste1__implantation'
+
+        if is_user_dans_service(request.user):
+            q_place = Q(**{ '%s' % prefixe_implantation : employe.implantation })
+        else:
+            q_place = Q(**{ '%s__region' % prefixe_implantation : employe.implantation.region })
+
+
+        if grp_drh in request.user.groups.all():
+            q_filtre = Q(id=dossier_id)
+        else:
+            q_filtre = q_place & Q(id=dossier_id) 
+
+        try:
+            dossier = rh.Dossier.objects.get(q_filtre)
+            return fn(request, *args, **kwargs)
+        except Exception, e:
+            msg = u"Vous n'avez pas le droit de consulter ce dossier d'embauche."
+            return redirect_interdiction(request, msg)
+
+
+    return inner
+
 def employe_dans_ma_region_ou_service(fn):
     """
     Test d'accès à un employé
index d6eda59..e028a2a 100644 (file)
@@ -71,7 +71,7 @@ class PostePieceForm(inlineformset_factory(dae.Poste, dae.PostePiece)):
 class DossierPieceForm(inlineformset_factory(dae.Dossier, dae.DossierPiece)):
     pass
 
-class FinancementForm(inlineformset_factory(dae.Poste, dae.PosteFinancement, extra=1)):
+class FinancementForm(inlineformset_factory(dae.Poste, dae.PosteFinancement, extra=2)):
     pass
 
 
@@ -97,50 +97,6 @@ class FlexibleRemunForm(forms.ModelForm):
 class RemunForm(inlineformset_factory(dae.Dossier, dae.Remuneration, extra=5, form=FlexibleRemunForm)):
     pass
 
-class JustificationNouvelEmployeForm(inlineformset_factory(dae.Dossier,
-                                                           dae.JustificationNouvelEmploye,
-                                                           extra=0,
-                                                           can_delete=False,
-                                                           exclude=('question',))):
-    """
-    Formulaire de justification d'un nouvel employé.
-    Le dossier a besoin d'être enregistré une première fois afin de prépopuler les questions.
-    """
-    def __init__(self, *args, **kwargs):
-        instance = kwargs['instance']
-        if instance.id:
-            q_ids = [j.question.id for j in instance.justificationnouvelemploye_set.filter(dossier=instance)]
-            for q in dae.JustificationQuestion.objects.filter(type="N"):
-                if q.id in q_ids:
-                    continue
-                j = dae.JustificationNouvelEmploye()
-                j.dossier = instance
-                j.question = q
-                j.save()
-        super(self.__class__, self).__init__(*args, **kwargs)
-
-class JustificationAutreEmployeForm(inlineformset_factory(dae.Dossier,
-                                                           dae.JustificationAutreEmploye,
-                                                           extra=0,
-                                                           can_delete=False,
-                                                           exclude=('question',))):
-    """
-    Formulaire de justification d'un nouvel employé.
-    Le dossier a besoin d'être enregistré une première fois afin de prépopuler les questions.
-    """
-    def __init__(self, *args, **kwargs):
-        instance = kwargs['instance']
-        if instance.id:
-            q_ids = [j.question.id for j in instance.justificationautreemploye_set.filter(dossier=instance)]
-            for q in dae.JustificationQuestion.objects.filter(type="R"):
-                if q.id in q_ids:
-                    continue
-                j = dae.JustificationAutreEmploye()
-                j.dossier = instance
-                j.question = q
-                j.save()
-        super(self.__class__, self).__init__(*args, **kwargs)
-
 class PosteForm(forms.ModelForm):
     """ Formulaire des postes. """
 
@@ -158,10 +114,10 @@ class PosteForm(forms.ModelForm):
     
     class Meta:
         model = dae.Poste
-
+        exclude = ('actif', )
         fields = ('poste', 'implantation', 'type_poste', 'service', 'nom',
                   'responsable', 'local', 'expatrie', 'mise_a_disposition',
-                  'appel', 'date_debut', 'date_fin', 'actif',
+                  'appel', 'date_debut', 'date_fin',
                   'regime_travail', 'regime_travail_nb_heure_semaine',
                   'classement_min', 'classement_max',
                   'valeur_point_min', 'valeur_point_max',
@@ -318,6 +274,7 @@ class DossierForm(forms.ModelForm):
 
 WF_HELP_TEXT = """Ce champs affiche par défaut l'étape de traitement de la demande.
 La liste déroulante vous permet de sélectionner l'étape suivante."""
+WF_HELP_TEXT = ""
 
 class PosteWorkflowForm(WorkflowFormMixin):
    
index 91c03a6..df40a7c 100644 (file)
@@ -3,7 +3,7 @@
 from django.db import models
 from django.db.models import Q
 from utils import is_user_dans_service, get_employe_from_user
-from workflow import POSTE_ETAT_HAUTE_DIRECTION, POSTE_ETAT_POLE_FINANCIER
+from workflow import POSTE_ETAT_HAUTE_DIRECTION, POSTE_ETAT_POLE_FINANCIER, MAP_GROUPE_ETATS_A_FAIRE
 from workflow import dae_groupes, \
                      grp_administrateurs, \
                      grp_gestionnaires, \
@@ -15,10 +15,21 @@ from workflow import dae_groupes, \
                      grp_directeurs_service, \
                      grp_correspondants_rh
 
+
 class SecurityManager(models.Manager):
 
     prefixe_implantation = None
 
+    def mes_choses_a_faire(self, user):
+        q = Q()
+        for g in user.groups.all():
+            etats = MAP_GROUPE_ETATS_A_FAIRE.get(g, ())
+            for etat in etats:
+                q = q | Q(etat=etat)
+
+        qs = self.ma_region_ou_service(user).filter(q)
+        return qs
+
     def ma_region_ou_service(self, user):
         """
         Filtrage des postes en fonction du user connecté (region / service)
@@ -75,6 +86,9 @@ class PosteManager(SecurityManager):
     """
     prefixe_implantation = "implantation"
 
+    def ma_region_ou_service(self, user):
+        return super(PosteManager, self).filter(actif=True)
+
     def get_query_set(self):
         fkeys = (
             'id_rh',
@@ -94,3 +108,7 @@ class PosteManager(SecurityManager):
 class DossierManager(SecurityManager):
     prefixe_implantation = "poste__implantation"
 
+    def ma_region_ou_service(self, user):
+        return super(DossierManager, self).filter(poste__actif=True)
+
+
diff --git a/project/dae/migrations/0035_auto__chg_field_dossier_classement__add_field_poste_pourvu__chg_field_.py b/project/dae/migrations/0035_auto__chg_field_dossier_classement__add_field_poste_pourvu__chg_field_.py
new file mode 100644 (file)
index 0000000..5aea2b6
--- /dev/null
@@ -0,0 +1,439 @@
+# 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):
+        
+        # Changing field 'Dossier.classement'
+        db.alter_column('dae_dossier', 'classement_id', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, null=True, to=orm['rh_v1.Classement']))
+
+        # Adding field 'Poste.pourvu'
+        db.add_column('dae_poste', 'pourvu', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True), keep_default=False)
+
+        # Changing field 'Poste.classement_max'
+        db.alter_column('dae_poste', 'classement_max_id', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, null=True, to=orm['rh_v1.Classement']))
+
+        # Changing field 'Poste.classement_min'
+        db.alter_column('dae_poste', 'classement_min_id', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, null=True, to=orm['rh_v1.Classement']))
+
+        # Changing field 'Employe.genre'
+        db.alter_column('dae_employe', 'genre', self.gf('django.db.models.fields.CharField')(max_length=1))
+    
+    
+    def backwards(self, orm):
+        
+        # Changing field 'Dossier.classement'
+        db.alter_column('dae_dossier', 'classement_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.Classement']))
+
+        # Deleting field 'Poste.pourvu'
+        db.delete_column('dae_poste', 'pourvu')
+
+        # Changing field 'Poste.classement_max'
+        db.alter_column('dae_poste', 'classement_max_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.Classement']))
+
+        # Changing field 'Poste.classement_min'
+        db.alter_column('dae_poste', 'classement_min_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.Classement']))
+
+        # Changing field 'Employe.genre'
+        db.alter_column('dae_employe', 'genre', self.gf('django.db.models.fields.CharField')(max_length=1, null=True, blank=True))
+    
+    
+    models = {
+        'auth.group': {
+            'Meta': {'object_name': 'Group'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'unique': 'True'}),
+            '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', [], {'max_length': '30', 'unique': 'True'})
+        },
+        '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'})
+        },
+        'dae.dossier': {
+            'Meta': {'object_name': 'Dossier'},
+            'classement': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.Classement']"}),
+            'classement_anterieur': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.Classement']"}),
+            'classement_titulaire_anterieur': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.Classement']"}),
+            'compte_compta': ('django.db.models.fields.CharField', [], {'default': "'aucun'", 'max_length': '10'}),
+            'compte_courriel': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'contrat_date_debut': ('django.db.models.fields.DateField', [], {}),
+            'contrat_date_fin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_creation': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'devise': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'to': "orm['rh_v1.Devise']"}),
+            'employe': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['dae.Employe']"}),
+            'employe_anterieur': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.Employe']"}),
+            'etat': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '20', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'organisme_bstg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.OrganismeBstg']"}),
+            'organisme_bstg_autre': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'poste': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['dae.Poste']"}),
+            'regime_travail': ('django.db.models.fields.DecimalField', [], {'default': '100.0', 'max_digits': '12', 'decimal_places': '2'}),
+            'regime_travail_nb_heure_semaine': ('django.db.models.fields.DecimalField', [], {'default': '35.0', 'max_digits': '12', 'decimal_places': '2'}),
+            'remplacement': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'salaire': ('django.db.models.fields.DecimalField', [], {'default': 'None', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'salaire_anterieur': ('django.db.models.fields.DecimalField', [], {'default': 'None', 'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'salaire_titulaire_anterieur': ('django.db.models.fields.DecimalField', [], {'default': 'None', 'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'statut': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['rh_v1.Statut']"}),
+            'statut_anterieur': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.Statut']"}),
+            'statut_residence': ('django.db.models.fields.CharField', [], {'default': "'local'", 'max_length': '10'}),
+            'statut_titulaire_anterieur': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.Statut']"}),
+            'type_contrat': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['rh_v1.TypeContrat']"})
+        },
+        'dae.dossiercomparaison': {
+            'Meta': {'object_name': 'DossierComparaison'},
+            'devise': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.Devise']"}),
+            'dossier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comparaisons'", 'to': "orm['dae.Dossier']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'null': 'True', 'blank': 'True'}),
+            'montant': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
+            'montant_euros': ('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'})
+        },
+        'dae.dossierpiece': {
+            'Meta': {'object_name': 'DossierPiece'},
+            'dossier': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['dae.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'})
+        },
+        'dae.employe': {
+            'Meta': {'object_name': 'Employe'},
+            'genre': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'id_rh': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'to': "orm['rh_v1.Employe']"}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'prenom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'dae.justificationautreemploye': {
+            'Meta': {'object_name': 'JustificationAutreEmploye'},
+            'dossier': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['dae.Dossier']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['dae.JustificationQuestion']"}),
+            'reponse': ('django.db.models.fields.TextField', [], {})
+        },
+        'dae.justificationnouvelemploye': {
+            'Meta': {'object_name': 'JustificationNouvelEmploye'},
+            'dossier': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['dae.Dossier']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['dae.JustificationQuestion']"}),
+            'reponse': ('django.db.models.fields.TextField', [], {})
+        },
+        'dae.justificationquestion': {
+            'Meta': {'object_name': 'JustificationQuestion'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'question': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'dae.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'}),
+            'autre_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'autre_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'classement_max': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.Classement']"}),
+            'classement_min': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.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_creation': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_debut': ('django.db.models.fields.DateField', [], {}),
+            'date_fin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'devise_comparaison': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'to': "orm['rh_v1.Devise']"}),
+            'devise_max': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'to': "orm['rh_v1.Devise']"}),
+            'devise_min': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'to': "orm['rh_v1.Devise']"}),
+            'etat': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '20', 'null': 'True', 'blank': 'True'}),
+            'expatrie': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'id_rh': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'to': "orm['rh_v1.Poste']"}),
+            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']"}),
+            'indemn_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'indemn_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'justification': ('django.db.models.fields.TextField', [], {}),
+            'local': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'mise_a_disposition': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'pourvu': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'regime_travail': ('django.db.models.fields.DecimalField', [], {'default': '100.0', 'max_digits': '12', 'decimal_places': '2'}),
+            'regime_travail_nb_heure_semaine': ('django.db.models.fields.DecimalField', [], {'default': '35.0', 'max_digits': '12', 'decimal_places': '2'}),
+            'responsable': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['rh_v1.Poste']"}),
+            'salaire_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'salaire_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'service': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['rh_v1.Service']"}),
+            'type_poste': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'to': "orm['rh_v1.TypePoste']"}),
+            'valeur_point_max': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.ValeurPoint']"}),
+            'valeur_point_min': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.ValeurPoint']"})
+        },
+        'dae.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': "'financements'", 'to': "orm['dae.Poste']"}),
+            'pourcentage': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '1'})
+        },
+        'dae.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', [], {'to': "orm['dae.Poste']"})
+        },
+        'dae.remuneration': {
+            'Meta': {'object_name': 'Remuneration'},
+            'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'devise': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to_field': "'code'", 'db_column': "'devise'", 'to': "orm['rh_v1.Devise']"}),
+            'dossier': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['dae.Dossier']", 'db_column': "'dossier'"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'montant': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'type'", 'to': "orm['rh_v1.TypeRemuneration']"}),
+            'user_creation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+        },
+        'datamaster_modeles.bureau': {
+            'Meta': {'object_name': 'Bureau', 'db_table': "u'ref_bureau'"},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.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['datamaster_modeles.Region']", 'db_column': "'region'"})
+        },
+        'datamaster_modeles.implantation': {
+            'Meta': {'object_name': 'Implantation', 'db_table': "u'ref_implantation'"},
+            '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['datamaster_modeles.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['datamaster_modeles.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['datamaster_modeles.Implantation']", 'db_column': "'bureau_rattachement'"}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True'}),
+            '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['datamaster_modeles.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'})
+        },
+        'datamaster_modeles.pays': {
+            'Meta': {'object_name': 'Pays', 'db_table': "u'ref_pays'"},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '2', 'unique': 'True'}),
+            'code_bureau': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Bureau']", 'to_field': "'code'", 'db_column': "'code_bureau'"}),
+            'code_iso3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'unique': 'True', '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['datamaster_modeles.Region']", 'db_column': "'region'"})
+        },
+        'datamaster_modeles.region': {
+            'Meta': {'object_name': 'Region', 'db_table': "u'ref_region'"},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True'}),
+            '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['datamaster_modeles.Implantation']"}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'rh_v1.classement': {
+            'Meta': {'object_name': 'Classement'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'coefficient': ('django.db.models.fields.FloatField', [], {}),
+            'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'degre': ('django.db.models.fields.IntegerField', [], {}),
+            'echelon': ('django.db.models.fields.IntegerField', [], {}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '10'})
+        },
+        'rh_v1.devise': {
+            'Meta': {'object_name': 'Devise'},
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'unique': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'rh_v1.employe': {
+            'Meta': {'object_name': 'Employe'},
+            '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'}),
+            'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_entree': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_maj': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'date_naissance': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'genre': ('django.db.models.fields.CharField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'nationalite': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'nationalite'", 'to_field': "'code'", 'db_column': "'nationalite'", 'to': "orm['datamaster_modeles.Pays']"}),
+            'no_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'pays'", 'db_column': "'pays'", 'to_field': "'code'", 'to': "orm['datamaster_modeles.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'}),
+            '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'}),
+            'ville': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
+        },
+        'rh_v1.familleemploi': {
+            'Meta': {'object_name': 'FamilleEmploi'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'rh_v1.organismebstg': {
+            'Meta': {'object_name': 'OrganismeBstg'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '10'})
+        },
+        'rh_v1.poste': {
+            'Meta': {'object_name': 'Poste'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'implantation'", 'to': "orm['datamaster_modeles.Implantation']"}),
+            'proportion': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
+            'type_poste': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypePoste']", 'db_column': "'type_poste'"})
+        },
+        'rh_v1.service': {
+            'Meta': {'object_name': 'Service'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'rh_v1.statut': {
+            'Meta': {'object_name': 'Statut'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '25', 'unique': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'type_contrat_categorie': ('django.db.models.fields.CharField', [], {'max_length': '10'})
+        },
+        'rh_v1.typecontrat': {
+            'Meta': {'object_name': 'TypeContrat'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'categorie': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'rh_v1.typeposte': {
+            'Meta': {'object_name': 'TypePoste'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'description': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'famille_emploi': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.FamilleEmploi']", 'db_column': "'famille_emploi'"}),
+            'id': ('django.db.models.fields.IntegerField', [], {'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'})
+        },
+        'rh_v1.typeremuneration': {
+            'Meta': {'object_name': 'TypeRemuneration'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'nature_remuneration': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'type_paiement': ('django.db.models.fields.CharField', [], {'max_length': '30'})
+        },
+        'rh_v1.valeurpoint': {
+            'Meta': {'object_name': 'ValeurPoint'},
+            'annee': ('django.db.models.fields.IntegerField', [], {}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'valeurs_point'", 'db_column': "'implantation'", 'to': "orm['datamaster_modeles.Implantation']"}),
+            'valeur': ('django.db.models.fields.FloatField', [], {})
+        },
+        'workflow.workflowcommentaire': {
+            'Meta': {'object_name': 'WorkflowCommentaire'},
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'etat_final': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'etat_initial': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+            'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+            'texte': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
+        }
+    }
+    
+    complete_apps = ['dae']
diff --git a/project/dae/migrations/0036_auto__del_justificationquestion__del_justificationnouvelemploye__del_j.py b/project/dae/migrations/0036_auto__del_justificationquestion__del_justificationnouvelemploye__del_j.py
new file mode 100644 (file)
index 0000000..35197a9
--- /dev/null
@@ -0,0 +1,487 @@
+# 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 'JustificationQuestion'
+        db.delete_table('dae_justificationquestion')
+
+        # Deleting model 'JustificationNouvelEmploye'
+        db.delete_table('dae_justificationnouvelemploye')
+
+        # Deleting model 'JustificationAutreEmploye'
+        db.delete_table('dae_justificationautreemploye')
+
+        # Adding field 'Dossier.justif_rempl_salaire'
+        db.add_column('dae_dossier', 'justif_rempl_salaire', self.gf('django.db.models.fields.TextField')(null=True, blank=True), keep_default=False)
+
+        # Adding field 'Dossier.justif_rempl_evaluation'
+        db.add_column('dae_dossier', 'justif_rempl_evaluation', self.gf('django.db.models.fields.TextField')(null=True, blank=True), keep_default=False)
+
+        # Adding field 'Dossier.justif_rempl_statut_employe'
+        db.add_column('dae_dossier', 'justif_rempl_statut_employe', self.gf('django.db.models.fields.TextField')(null=True, blank=True), keep_default=False)
+
+        # Adding field 'Dossier.justif_nouveau_tmp_remplacement'
+        db.add_column('dae_dossier', 'justif_nouveau_tmp_remplacement', self.gf('django.db.models.fields.TextField')(null=True, blank=True), keep_default=False)
+
+        # Adding field 'Dossier.justif_rempl_type_contrat'
+        db.add_column('dae_dossier', 'justif_rempl_type_contrat', self.gf('django.db.models.fields.TextField')(null=True, blank=True), keep_default=False)
+
+        # Adding field 'Dossier.justif_nouveau_statut'
+        db.add_column('dae_dossier', 'justif_nouveau_statut', self.gf('django.db.models.fields.TextField')(null=True, blank=True), keep_default=False)
+
+        # Adding field 'Dossier.justif_rempl_commentaire'
+        db.add_column('dae_dossier', 'justif_rempl_commentaire', self.gf('django.db.models.fields.TextField')(null=True, blank=True), keep_default=False)
+
+        # Adding field 'Dossier.justif_nouveau_commentaire'
+        db.add_column('dae_dossier', 'justif_nouveau_commentaire', self.gf('django.db.models.fields.TextField')(null=True, blank=True), keep_default=False)
+
+        # Adding field 'Dossier.justif_nouveau_salaire'
+        db.add_column('dae_dossier', 'justif_nouveau_salaire', self.gf('django.db.models.fields.TextField')(null=True, blank=True), keep_default=False)
+    
+    
+    def backwards(self, orm):
+        
+        # Adding model 'JustificationQuestion'
+        db.create_table('dae_justificationquestion', (
+            ('question', self.gf('django.db.models.fields.CharField')(max_length=255)),
+            ('type', self.gf('django.db.models.fields.CharField')(max_length=255)),
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+        ))
+        db.send_create_signal('dae', ['JustificationQuestion'])
+
+        # Adding model 'JustificationNouvelEmploye'
+        db.create_table('dae_justificationnouvelemploye', (
+            ('dossier', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['dae.Dossier'])),
+            ('question', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['dae.JustificationQuestion'])),
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('reponse', self.gf('django.db.models.fields.TextField')()),
+        ))
+        db.send_create_signal('dae', ['JustificationNouvelEmploye'])
+
+        # Adding model 'JustificationAutreEmploye'
+        db.create_table('dae_justificationautreemploye', (
+            ('dossier', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['dae.Dossier'])),
+            ('question', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['dae.JustificationQuestion'])),
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('reponse', self.gf('django.db.models.fields.TextField')()),
+        ))
+        db.send_create_signal('dae', ['JustificationAutreEmploye'])
+
+        # Deleting field 'Dossier.justif_rempl_salaire'
+        db.delete_column('dae_dossier', 'justif_rempl_salaire')
+
+        # Deleting field 'Dossier.justif_rempl_evaluation'
+        db.delete_column('dae_dossier', 'justif_rempl_evaluation')
+
+        # Deleting field 'Dossier.justif_rempl_statut_employe'
+        db.delete_column('dae_dossier', 'justif_rempl_statut_employe')
+
+        # Deleting field 'Dossier.justif_nouveau_tmp_remplacement'
+        db.delete_column('dae_dossier', 'justif_nouveau_tmp_remplacement')
+
+        # Deleting field 'Dossier.justif_rempl_type_contrat'
+        db.delete_column('dae_dossier', 'justif_rempl_type_contrat')
+
+        # Deleting field 'Dossier.justif_nouveau_statut'
+        db.delete_column('dae_dossier', 'justif_nouveau_statut')
+
+        # Deleting field 'Dossier.justif_rempl_commentaire'
+        db.delete_column('dae_dossier', 'justif_rempl_commentaire')
+
+        # Deleting field 'Dossier.justif_nouveau_commentaire'
+        db.delete_column('dae_dossier', 'justif_nouveau_commentaire')
+
+        # Deleting field 'Dossier.justif_nouveau_salaire'
+        db.delete_column('dae_dossier', 'justif_nouveau_salaire')
+    
+    
+    models = {
+        'auth.group': {
+            'Meta': {'object_name': 'Group'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'unique': 'True'}),
+            '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', [], {'max_length': '30', 'unique': 'True'})
+        },
+        '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'})
+        },
+        'dae.dossier': {
+            'Meta': {'object_name': 'Dossier'},
+            'classement': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.Classement']"}),
+            'classement_anterieur': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.Classement']"}),
+            'classement_titulaire_anterieur': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.Classement']"}),
+            'compte_compta': ('django.db.models.fields.CharField', [], {'default': "'aucun'", 'max_length': '10'}),
+            'compte_courriel': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'contrat_date_debut': ('django.db.models.fields.DateField', [], {}),
+            'contrat_date_fin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_creation': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'devise': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'to': "orm['rh_v1.Devise']"}),
+            'employe': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['dae.Employe']"}),
+            'employe_anterieur': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.Employe']"}),
+            'etat': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '20', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'justif_nouveau_commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'justif_nouveau_salaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'justif_nouveau_statut': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'justif_nouveau_tmp_remplacement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'justif_rempl_commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'justif_rempl_evaluation': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'justif_rempl_salaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'justif_rempl_statut_employe': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'justif_rempl_type_contrat': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'organisme_bstg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.OrganismeBstg']"}),
+            'organisme_bstg_autre': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'poste': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['dae.Poste']"}),
+            'regime_travail': ('django.db.models.fields.DecimalField', [], {'default': '100.0', 'max_digits': '12', 'decimal_places': '2'}),
+            'regime_travail_nb_heure_semaine': ('django.db.models.fields.DecimalField', [], {'default': '35.0', 'max_digits': '12', 'decimal_places': '2'}),
+            'remplacement': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'salaire': ('django.db.models.fields.DecimalField', [], {'default': 'None', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'salaire_anterieur': ('django.db.models.fields.DecimalField', [], {'default': 'None', 'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'salaire_titulaire_anterieur': ('django.db.models.fields.DecimalField', [], {'default': 'None', 'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'statut': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['rh_v1.Statut']"}),
+            'statut_anterieur': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.Statut']"}),
+            'statut_residence': ('django.db.models.fields.CharField', [], {'default': "'local'", 'max_length': '10'}),
+            'statut_titulaire_anterieur': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.Statut']"}),
+            'type_contrat': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['rh_v1.TypeContrat']"})
+        },
+        'dae.dossiercomparaison': {
+            'Meta': {'object_name': 'DossierComparaison'},
+            'devise': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.Devise']"}),
+            'dossier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comparaisons'", 'to': "orm['dae.Dossier']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'null': 'True', 'blank': 'True'}),
+            'montant': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
+            'montant_euros': ('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'})
+        },
+        'dae.dossierpiece': {
+            'Meta': {'object_name': 'DossierPiece'},
+            'dossier': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['dae.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'})
+        },
+        'dae.employe': {
+            'Meta': {'object_name': 'Employe'},
+            'genre': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'id_rh': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'to': "orm['rh_v1.Employe']"}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'prenom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'dae.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'}),
+            'autre_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'autre_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'classement_max': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.Classement']"}),
+            'classement_min': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.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_creation': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_debut': ('django.db.models.fields.DateField', [], {}),
+            'date_fin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'devise_comparaison': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'to': "orm['rh_v1.Devise']"}),
+            'devise_max': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'to': "orm['rh_v1.Devise']"}),
+            'devise_min': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'to': "orm['rh_v1.Devise']"}),
+            'etat': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '20', 'null': 'True', 'blank': 'True'}),
+            'expatrie': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'id_rh': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'to': "orm['rh_v1.Poste']"}),
+            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']"}),
+            'indemn_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'indemn_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'justification': ('django.db.models.fields.TextField', [], {}),
+            'local': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'mise_a_disposition': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'pourvu': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'regime_travail': ('django.db.models.fields.DecimalField', [], {'default': '100.0', 'max_digits': '12', 'decimal_places': '2'}),
+            'regime_travail_nb_heure_semaine': ('django.db.models.fields.DecimalField', [], {'default': '35.0', 'max_digits': '12', 'decimal_places': '2'}),
+            'responsable': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['rh_v1.Poste']"}),
+            'salaire_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'salaire_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'max_digits': '12', 'decimal_places': '2'}),
+            'service': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['rh_v1.Service']"}),
+            'type_poste': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'to': "orm['rh_v1.TypePoste']"}),
+            'valeur_point_max': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.ValeurPoint']"}),
+            'valeur_point_min': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'blank': 'True', 'null': 'True', 'to': "orm['rh_v1.ValeurPoint']"})
+        },
+        'dae.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': "'financements'", 'to': "orm['dae.Poste']"}),
+            'pourcentage': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '1'})
+        },
+        'dae.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', [], {'to': "orm['dae.Poste']"})
+        },
+        'dae.remuneration': {
+            'Meta': {'object_name': 'Remuneration'},
+            'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'devise': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to_field': "'code'", 'db_column': "'devise'", 'to': "orm['rh_v1.Devise']"}),
+            'dossier': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['dae.Dossier']", 'db_column': "'dossier'"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'montant': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'type'", 'to': "orm['rh_v1.TypeRemuneration']"}),
+            'user_creation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+        },
+        'datamaster_modeles.bureau': {
+            'Meta': {'object_name': 'Bureau', 'db_table': "u'ref_bureau'"},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.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['datamaster_modeles.Region']", 'db_column': "'region'"})
+        },
+        'datamaster_modeles.implantation': {
+            'Meta': {'object_name': 'Implantation', 'db_table': "u'ref_implantation'"},
+            '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['datamaster_modeles.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['datamaster_modeles.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['datamaster_modeles.Implantation']", 'db_column': "'bureau_rattachement'"}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True'}),
+            '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['datamaster_modeles.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'})
+        },
+        'datamaster_modeles.pays': {
+            'Meta': {'object_name': 'Pays', 'db_table': "u'ref_pays'"},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '2', 'unique': 'True'}),
+            'code_bureau': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Bureau']", 'to_field': "'code'", 'db_column': "'code_bureau'"}),
+            'code_iso3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'unique': 'True', '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['datamaster_modeles.Region']", 'db_column': "'region'"})
+        },
+        'datamaster_modeles.region': {
+            'Meta': {'object_name': 'Region', 'db_table': "u'ref_region'"},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True'}),
+            '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['datamaster_modeles.Implantation']"}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'rh_v1.classement': {
+            'Meta': {'object_name': 'Classement'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'coefficient': ('django.db.models.fields.FloatField', [], {}),
+            'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'degre': ('django.db.models.fields.IntegerField', [], {}),
+            'echelon': ('django.db.models.fields.IntegerField', [], {}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '10'})
+        },
+        'rh_v1.devise': {
+            'Meta': {'object_name': 'Devise'},
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'unique': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'rh_v1.employe': {
+            'Meta': {'object_name': 'Employe'},
+            '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'}),
+            'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_entree': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_maj': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'date_naissance': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'genre': ('django.db.models.fields.CharField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'nationalite': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'nationalite'", 'to_field': "'code'", 'db_column': "'nationalite'", 'to': "orm['datamaster_modeles.Pays']"}),
+            'no_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'pays'", 'db_column': "'pays'", 'to_field': "'code'", 'to': "orm['datamaster_modeles.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'}),
+            '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'}),
+            'ville': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
+        },
+        'rh_v1.familleemploi': {
+            'Meta': {'object_name': 'FamilleEmploi'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'rh_v1.organismebstg': {
+            'Meta': {'object_name': 'OrganismeBstg'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '10'})
+        },
+        'rh_v1.poste': {
+            'Meta': {'object_name': 'Poste'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'implantation'", 'to': "orm['datamaster_modeles.Implantation']"}),
+            'proportion': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
+            'type_poste': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypePoste']", 'db_column': "'type_poste'"})
+        },
+        'rh_v1.service': {
+            'Meta': {'object_name': 'Service'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'rh_v1.statut': {
+            'Meta': {'object_name': 'Statut'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '25', 'unique': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'type_contrat_categorie': ('django.db.models.fields.CharField', [], {'max_length': '10'})
+        },
+        'rh_v1.typecontrat': {
+            'Meta': {'object_name': 'TypeContrat'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'categorie': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'rh_v1.typeposte': {
+            'Meta': {'object_name': 'TypePoste'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'description': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'famille_emploi': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.FamilleEmploi']", 'db_column': "'famille_emploi'"}),
+            'id': ('django.db.models.fields.IntegerField', [], {'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'})
+        },
+        'rh_v1.typeremuneration': {
+            'Meta': {'object_name': 'TypeRemuneration'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'nature_remuneration': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'type_paiement': ('django.db.models.fields.CharField', [], {'max_length': '30'})
+        },
+        'rh_v1.valeurpoint': {
+            'Meta': {'object_name': 'ValeurPoint'},
+            'annee': ('django.db.models.fields.IntegerField', [], {}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'valeurs_point'", 'db_column': "'implantation'", 'to': "orm['datamaster_modeles.Implantation']"}),
+            'valeur': ('django.db.models.fields.FloatField', [], {})
+        },
+        'workflow.workflowcommentaire': {
+            'Meta': {'object_name': 'WorkflowCommentaire'},
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+            'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'etat_final': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'etat_initial': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+            'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+            'texte': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
+        }
+    }
+    
+    complete_apps = ['dae']
index e1a2e97..4a1565d 100644 (file)
@@ -6,6 +6,7 @@ from django.core.files.storage import FileSystemStorage
 from django.db import models
 import reversion
 from workflow import PosteWorkflow, DossierWorkflow
+from workflow import DOSSIER_ETAT_DRH_FINALISATION
 from managers import DossierManager, PosteManager
 import datamaster_modeles.models as ref
 from rh_v1 import models as rh
@@ -130,6 +131,7 @@ class Poste(PosteWorkflow, models.Model):
                                     verbose_name="Date de fin",
                                     help_text=HELP_TEXT_DATE)
     actif = models.BooleanField(default=True)
+    pourvu = models.BooleanField(default=False)
 
     # Managers
     objects = PosteManager()
@@ -200,9 +202,13 @@ class Poste(PosteWorkflow, models.Model):
         return (float)(self.salaire_min + self.indemn_min + self.autre_min)
 
     def get_taux_minimum(self):
-        try:
-            return rh.TauxChange.objects.filter(implantation=self.implantation, devise=self.devise_min)[0].taux
-        except:
+        taux_changes = rh.TauxChange.objects.filter(devise=self.devise_min).order_by('annee')
+        for t in taux_changes:
+            if t.implantation == self.implantation:
+                return t.taux
+        if len(taux_changes) > 0:
+            return taux_changes[0].taux
+        else:
             raise Exception('Taux indisponible pour la devise %s (%s)' % (self.devise_min, self.implantation))
 
     def get_couts_minimum_euros(self):
@@ -212,9 +218,13 @@ class Poste(PosteWorkflow, models.Model):
         return (float)(self.salaire_max + self.indemn_max + self.autre_max)
 
     def get_taux_maximum(self):
-        try:
-            return rh.TauxChange.objects.filter(implantation=self.implantation, devise=self.devise_max)[0].taux
-        except:
+        taux_changes = rh.TauxChange.objects.filter(devise=self.devise_max).order_by('annee')
+        for t in taux_changes:
+            if t.implantation == self.implantation:
+                return t.taux
+        if len(taux_changes) > 0:
+            return taux_changes[0].taux
+        else:
             raise Exception('Taux indisponible pour la devise %s (%s)' % (self.devise_max, self.implantation))
 
     def get_couts_maximum_euros(self):
@@ -467,6 +477,26 @@ class Dossier(DossierWorkflow, models.Model):
     contrat_date_fin = models.DateField(null=True, blank=True,
                                         help_text="format: aaaa-mm-jj")
 
+    # Justifications
+    justif_nouveau_statut_label = u'Justifier le statut que ce type de poste nécessite (national, expatrié, màd ou détachement)'
+    justif_nouveau_statut = models.TextField(verbose_name=justif_nouveau_statut_label, null=True, blank=True)
+    justif_nouveau_tmp_remplacement_label = u"Si l'employé effectue un remplacement temporaire, préciser le motif"
+    justif_nouveau_tmp_remplacement = models.TextField(verbose_name=justif_nouveau_tmp_remplacement_label, null=True, blank=True)
+    justif_nouveau_salaire_label = u"Si le salaire de l'employé ne correspond pas au classement du poste, ou est différent du salaire antérieur, jusitfier"
+    justif_nouveau_salaire = models.TextField(verbose_name=justif_nouveau_salaire_label, null=True, blank=True)
+    justif_nouveau_commentaire_label = u"Commentaires additionnels"
+    justif_nouveau_commentaire = models.TextField(verbose_name=justif_nouveau_commentaire_label, null=True, blank=True)
+    justif_rempl_type_contrat_label = u"Changement de type de contrat, ex : d'un CDD en CDI"
+    justif_rempl_type_contrat = models.TextField(verbose_name=justif_rempl_type_contrat_label, null=True, blank=True)
+    justif_rempl_statut_employe_label = u"Si le statut de l'employé a été modifié pour ce poste ; ex : national, expatrié, màd, détachement ? si oui, justifier"
+    justif_rempl_statut_employe = models.TextField(verbose_name=justif_rempl_statut_employe_label, null=True, blank=True)
+    justif_rempl_evaluation_label = u"L'évaluation de l'employé est-elle favorable, préciser"
+    justif_rempl_evaluation = models.TextField(verbose_name=justif_rempl_evaluation_label, null=True, blank=True)
+    justif_rempl_salaire_label = u"Si le salaire de l'employé est modifié et/ou ne correspond pas à son classement, justifier"
+    justif_rempl_salaire = models.TextField(verbose_name=justif_rempl_salaire_label, null=True, blank=True)
+    justif_rempl_commentaire_label = u"Commentaires additionnels"
+    justif_rempl_commentaire = models.TextField(verbose_name=justif_rempl_commentaire_label, null=True, blank=True)
+
     # Comptes
     compte_compta = models.CharField(max_length=10, default='aucun',
                                     verbose_name=u'Compte comptabilité',
@@ -572,28 +602,3 @@ class Remuneration(models.Model):
 
     def montant_euro_mois(self):
         return round(self.montant_euro() / 12, 2)
-
-
-### JUSTIFICATIONS
-
-TYPE_JUSTIFICATIONS = (
-    ('N', 'Nouvel employé'),
-    ('R', 'Renouvellement employé'),
-)
-
-class JustificationQuestion(models.Model):
-    question = models.CharField(max_length=255)
-    type = models.CharField(max_length=255, choices=TYPE_JUSTIFICATIONS)
-    
-    def __unicode__(self,):
-        return self.question
-
-class JustificationNouvelEmploye(models.Model):
-    dossier = models.ForeignKey("Dossier")
-    question = models.ForeignKey("JustificationQuestion")
-    reponse = models.TextField()
-
-class JustificationAutreEmploye(models.Model):
-    dossier = models.ForeignKey("Dossier")
-    question = models.ForeignKey("JustificationQuestion")
-    reponse = models.TextField()
index ffe32dc..7d10f06 100644 (file)
@@ -6,26 +6,28 @@
         <th>Type de contrat</th>
         <td colspan="4">{{ dossier.type_contrat }}</td>
         <th>Remplacement</th>
-        <td>{{ dossier.remplacement }}</td>
+        <td>{%if dossier.remplacement %}oui{% else %}non{%endif %}</td>
     </tr>
     <tr>
         <th rowspan="2">Durée</th>
-        <td>du</td>
-        <td>{{ dossier.contrat_date_debut }}</td>
-        <td>au</td>
-        <td>{{ dossier.contrat_date_fin }}</td>
+        <td colspan=2> du {{ dossier.contrat_date_debut }}</td>
+        <td colspan=2>au {{ dossier.contrat_date_fin }}</td>
         <th>Régime de travail</th>
-        <td>{{ dossier.regime_travail }}</td>
+        <td>{{ dossier.regime_travail }}%</td>
     </tr>
     <tr>
         <th>Nombre d'heure par semaine</th>
-        <td>{{ dossier.regime_travail_nb_heure_semaine }}</td>
+        <td colspan=5>{{ dossier.regime_travail_nb_heure_semaine }}H</td>
     </tr>
     <tr>
         <th>Statut : </th>
         <td colspan="4">{{ dossier.statut }} {{ dossier.statut_residence }}</td>
         <th>Organisme BSTG</th>
-        <td>{{ dossier.organisme_bstg }}{{ dossier.organisme_bstg_autre }}</td>
+        {% if dossier.organisme_bstg or dossier.organisme_bstg_autre %}
+            <td>{% if dossier.organisme_bstg %}{{ dossier.organisme_bstg }}{% endif %} {{ dossier.organisme_bstg_autre }}</td>
+        {% else %}
+            <td>s/o</td>
+        {% endif %}
     </tr>
     </tbody>
 </table>
     </tr>
     <tr>
         <th>Classement proposé</th>
-        <th colspan="6">Salaire proposé <span class="info">(fourchette du poste : {{ dossier.poste.salaire_min }} {{ dossier.poste.devise_min.code }}
-            - {{ dossier.poste.salaire_max }} {{ dossier.poste.devise_max.code }})</span>
+        <th colspan="6">Salaire proposé</span>
 </th>
     </tr>
     <tr>
         <td>{{ dossier.classement }}</td>
-        <td colspan="2">{{ dossier.salaire }} {{ dossier.devise.code }}         </td>
-        <td colspan="4" id="salaire-propose-euros" class="montant">{{ dossier.get_salaire_euros }} €</td>
+        <td colspan="2">{{ dossier.salaire|floatformat:0 }} {{ dossier.devise.code }}</td>
+        <td colspan="4" id="salaire-propose-euros" class="montant">{{ dossier.get_salaire_euros|floatformat:0 }} €</td>
     </tr>
     </tbody>
 </table>
index 2119f13..76c7567 100644 (file)
@@ -7,11 +7,14 @@
   <th>Précision</th>
 </tr>
 
+{% if dossier.get_couts_auf %}
 <tr>
     <th colspan="5">Coûts AUF</th>
     <th id="sous-total-cout" class="montant">{{ dossier.get_total_couts_auf|floatformat:0 }}€</th>
     <th></th>
 </tr>
+{% endif %}
+
 
 {% for remun in dossier.get_couts_auf %}
   <tr class="cout">
   </tr>
 {% endfor %}
 
+{% if dossier.get_aides_auf %}
 <tr>
     <th colspan="5">BSTG - Salaire de mise à disposition</th>
     <th id="sous-total-aide" class="montant">{{ dossier.get_total_aides_auf|floatformat:0 }}€</th>
     <th></th>
 </tr>
+{% endif %}
 
 {% for remun in dossier.get_aides_auf %}
   <tr class="aide">
index 4467dc8..8d8db95 100644 (file)
       <p>{{ poste.justification }}</p>
 
       <h3>B - Justification de l'employé</h3>
-      <p class="info">Les questions posées pour la justification apparaîtront après avoir enregistré le dossier.</p>
       <table>
       <tr>
-        <th>NOUVEL EMPLOYÉ</th>
-        <th>RENOUVELLEMENT, PROLONGATION, RECLASSEMENT, MOBILITÉ INTERNE</th>
+        <th>Nouvel employé</th>
+        <th>Renouvellement, prolongation, reclassement, mobilité interne</th>
       </tr>
       <tr>
-        <td> 
-        {% with justificationsNouveauForm as form %}
-          {% include "dae/justifications.html" %}
-        {% endwith %}
+        <td>
+          <h4>{{ forms.dossier.justif_nouveau_statut.label }}</h4>
+          {{ forms.dossier.justif_nouveau_statut }}
+          <h4>{{ forms.dossier.justif_nouveau_tmp_remplacement.label }}</h4>
+          {{ forms.dossier.justif_nouveau_tmp_remplacement }}
+          <h4>{{ forms.dossier.justif_nouveau_salaire.label }}</h4>
+          {{ forms.dossier.justif_nouveau_salaire }}
+          <h4>{{ forms.dossier.justif_nouveau_commentaire.label }}</h4>
+          {{ forms.dossier.justif_nouveau_commentaire }}
         </td>
         <td>
-        {% with justificationsAutreForm as form %}
-          {% include "dae/justifications.html" %}
-        {% endwith %}
+          <h4>{{ forms.dossier.justif_rempl_type_contrat.label }}</h4>
+          {{ forms.dossier.justif_rempl_type_contrat}}
+          <h4>{{ forms.dossier.justif_rempl_statut_employe.label }}</h4>
+          {{ forms.dossier.justif_rempl_statut_employe}}
+          <h4>{{ forms.dossier.justif_rempl_evaluation.label }}</h4>
+          {{ forms.dossier.justif_rempl_evaluation}}
+          <h4>{{ forms.dossier.justif_rempl_salaire.label }}</h4>
+          {{ forms.dossier.justif_rempl_salaire }}
+          <h4>{{ forms.dossier.justif_rempl_commentaire.label }}</h4>
+          {{ forms.dossier.justif_rempl_commentaire }}
         </td>
       </tr>
       </table>
index 65801c4..6b9de2f 100644 (file)
@@ -1,5 +1,5 @@
 {% extends 'base.html' %}
-{% load adminmedia %}
+{% load adminmedia dae %}
 
 {% block title %}RH - DAE - Embauche{% endblock %}
 {% block titre %}Ressources humaines{% endblock %}
@@ -12,7 +12,7 @@
 {% block main %}
 <h1 class="gauche">Demandes d'autorisation d'engagement de personnel</h1>
 <a class="droite bouton-action" target="_blank" href="?mode=vpdf">Format impression</a>
-<a class="droite bouton-action" href="{% url embauche dossier.poste.key dossier.id %}">Modifier</a>
+{% if dossier|est_editable %}<a class="droite bouton-action" href="{% url embauche dossier.poste.key dossier.id %}">Modifier</a>{% endif %}
 <div class="visualClear"></div>
 
 <h2 class="section">SECTION 1 - POSTE</h2>
   <p>{{ poste.justification }}</p>
 
   <h3>B - Justification de l'employé</h3>
-  <p class="info">Les questions posées pour la justification apparaîtront après avoir enregistré le dossier.</p>
   <table>
   <tr>
-    <th>NOUVEL EMPLOYÉ</th>
-    <th>RENOUVELLEMENT, PROLONGATION, RECLASSEMENT, MOBILITÉ INTERNE</th>
+    <th>Nouvel employé</th>
+    <th>Renouvellement, prolongation, reclassement, mobilité interne</th>
   </tr>
   <tr>
-    <td> 
-    {% for j in dossier.justificationnouvelemploye_set.all %}
-        <h4>{{ j.question }}</h4>
-        <p>{{ j.reponse }}</p>
-    {% endfor %}
+    <td>
+      <h4>{{ dossier.justif_nouveau_statut_label }}</h4>
+      {{ dossier.justif_nouveau_statut|default:"∅" }}
+      <h4>{{ dossier.justif_nouveau_tmp_remplacement_label }}</h4>
+      {{ dossier.justif_nouveau_tmp_remplacement|default:"∅" }}
+      <h4>{{ dossier.justif_nouveau_salaire_label }}</h4>
+      {{ dossier.justif_nouveau_salaire|default:"∅" }}
+      <h4>{{ dossier.justif_nouveau_commentaire_label }}</h4>
+      {{ dossier.justif_nouveau_commentaire|default:"∅" }}
     </td>
     <td>
-    {% for j in dossier.justificationautreemploye_set.all %}
-        <h4>{{ j.question }}</h4>
-        <p>{{ j.reponse }}</p>
-    {% endfor %}
+      <h4>{{ dossier.justif_rempl_type_contrat_label }}</h4>
+      {{ dossier.justif_rempl_type_contrat|default:"∅"}}
+      <h4>{{ dossier.justif_rempl_statut_employe_label }}</h4>
+      {{ dossier.justif_rempl_statut_employe|default:"∅"}}
+      <h4>{{ dossier.justif_rempl_evaluation_label }}</h4>
+      {{ dossier.justif_rempl_evaluation|default:"∅"}}
+      <h4>{{ dossier.justif_rempl_salaire_label }}</h4>
+      {{ dossier.justif_rempl_salaire|default:"∅" }}
+      <h4>{{ dossier.justif_rempl_commentaire_label }}</h4>
+      {{ dossier.justif_rempl_commentaire|default:"∅" }}
     </td>
   </tr>
   </table>
 
   <fieldset>
-  <h2>Validation</h2>
+  <h2>Validations</h2>
   
   <ul>
   {% for commentaire in dossier.historique_desc %}
       <li>{{ commentaire }}</li>
   {% endfor %}
   </ul>
+
+  <h2>Votre validation (ou commentaire)</h2>
+  <p>Ce dossier est présentement à l'état <span class="note">{{ poste.get_etat_display }}</span>.</p>
+  <ul>
+      <li>Si vous laissez le statut actuel, votre commentaire sera enregistré.</li>
+      <li>Si vous sélectionnez un autre statut, votre action sera considérée comme une validation, mais vous pourrez toujours ajouter un commentaire par la suite.</li>
+  </ul>
   
   <form action="" method="post">
   <table>
index 633bd07..bdbc555 100644 (file)
 <p>{{ poste.justification }}</p>
 
 <h3>B - Justification de l'employé</h3>
-<p class="info">Les questions posées pour la justification apparaîtront après avoir enregistré le dossier.</p>
 <table>
-    <tbody>
-    <tr>
-      <th>NOUVEL EMPLOYÉ</th>
-      <th>RENOUVELLEMENT, PROLONGATION, RECLASSEMENT, MOBILITÉ INTERNE</th>
-    </tr>
-    <tr>
-      <td>&nbsp; 
-      {% for j in dossier.justificationnouvelemploye_set.all %}
-          <h4>{{ j.question }}</h4>
-          <p>{{ j.reponse }}</p>
-      {% endfor %}
-      </td>
-      <td>&nbsp;
-      {% for j in dossier.justificationautreemploye_set.all %}
-          <h4>{{ j.question }}</h4>
-          <p>{{ j.reponse }}</p>
-      {% endfor %}
-      </td>
-    </tr>
-    </tbody>
+<tr>
+  <th>Nouvel employé</th>
+  <th>Renouvellement, prolongation, reclassement, mobilité interne</th>
+</tr>
+<tr>
+  <td>
+    <h4>{{ dossier.justif_nouveau_statut_label }}</h4>
+    {{ dossier.justif_nouveau_statut|default:"∅" }}
+    <h4>{{ dossier.justif_nouveau_tmp_remplacement_label }}</h4>
+    {{ dossier.justif_nouveau_tmp_remplacement|default:"∅" }}
+    <h4>{{ dossier.justif_nouveau_salaire_label }}</h4>
+    {{ dossier.justif_nouveau_salaire|default:"∅" }}
+    <h4>{{ dossier.justif_nouveau_commentaire_label }}</h4>
+    {{ dossier.justif_nouveau_commentaire|default:"∅" }}
+  </td>
+  <td>
+    <h4>{{ dossier.justif_rempl_type_contrat_label }}</h4>
+    {{ dossier.justif_rempl_type_contrat|default:"∅"}}
+    <h4>{{ dossier.justif_rempl_statut_employe_label }}</h4>
+    {{ dossier.justif_rempl_statut_employe|default:"∅"}}
+    <h4>{{ dossier.justif_rempl_evaluation_label }}</h4>
+    {{ dossier.justif_rempl_evaluation|default:"∅"}}
+    <h4>{{ dossier.justif_rempl_salaire_label }}</h4>
+    {{ dossier.justif_rempl_salaire|default:"∅" }}
+    <h4>{{ dossier.justif_rempl_commentaire_label }}</h4>
+    {{ dossier.justif_rempl_commentaire|default:"∅" }}
+  </td>
+</tr>
 </table>
 
 <fieldset>
index 5d702e4..318373c 100644 (file)
@@ -7,13 +7,15 @@
 {% block main %}
 <h1>Liste des demandes d'autorisation d'engagement de personnel</h1>
 
+<h2>Mes embauches à traiter</h2>
+{% if embauches_a_traiter %}
 <table>
     <tr>
         <th>Embauche</th>
         <th>Région</th>
         <th>État</th>
     </tr>
-{% for dossier in embauches %}
+{% for dossier in embauches_a_traiter %}
     <tr>
         <td><a href="{% url embauche_consulter dossier.id %}">{{ dossier }}</a></td>
         <td>{{ dossier.poste.implantation.region }}</td>
     </tr>
 {% endfor %}
 </table>
+{% else %}
+    <p>Vous n'avez aucune embauche à traiter.</p>
+{% endif %}
+
+<h2>Les embauches en cours</h2>
+{% if embauches_en_cours %}
+<table>
+    <tr>
+        <th>Embauche</th>
+        <th>Région</th>
+        <th>État</th>
+    </tr>
+{% for dossier in embauches_en_cours %}
+    <tr>
+        <td><a href="{% url embauche_consulter dossier.id %}">{{ dossier }}</a></td>
+        <td>{{ dossier.poste.implantation.region }}</td>
+        <td>{{ dossier.get_etat_display }}</td>
+    </tr>
+{% endfor %}
+</table>
+{% else %}
+    <p>Il n'y a aucune embauche en cours.</p>
+{% endif %}
+
+<h2>Les embauches non retenues</h2>
+{% if embauches_non_retenues %}
+<table>
+    <tr>
+        <th>Embauche</th>
+        <th>Région</th>
+        <th>État</th>
+    </tr>
+{% for dossier in embauches_non_retenues %}
+    <tr>
+        <td><a href="{% url embauche_consulter dossier.id %}">{{ dossier }}</a></td>
+        <td>{{ dossier.poste.implantation.region }}</td>
+        <td>{{ dossier.get_etat_display }}</td>
+    </tr>
+{% endfor %}
+</table>
+{% else %}
+    <p>Il n'y a aucune embauche non retenue.</p>
+{% endif %}
+
 
 {% endblock %}
index 60aa092..2817e34 100644 (file)
@@ -1,4 +1,5 @@
 {% extends 'base.html' %}
+{% load dae %}
 
 {% block title %}RH - DAE{% endblock %}
 {% block titre %}Ressources humaines{% endblock %}
@@ -13,14 +14,14 @@ Ce module permet la gestion de deux types de demandes :
 
 <h2>Demandes d'autorisation de création de poste</h2>
 <ul>
-    <li><a href="{% url poste %}">Soumettre une demande</a></li>
+    {% if request.user|peut_ajouter %}<li><a href="{% url poste %}">Soumettre une demande</a></li>{% endif %}
     <li><a href="{% url dae_postes_liste %}">Voir et valider les demandes</a></li>
 </ul>
 
 <h2>Demandes d'autorisation d'engagement de personnel</h2>
 
 <ul>
-    <li><a href="{% url embauche %}">Soumettre une demande</a> <i>(création de poste nécessaire au préalable)</i></li>
+    {% if request.user|peut_ajouter %}<li><a href="{% url embauche %}">Soumettre une demande</a> <i>(création de poste nécessaire au préalable)</i></li>{% endif %}
     <li><a href="{% url dae_embauches_liste %}">Voir et valider les demandes</a></li>
 </ul>
 {% endblock %}
index 09a630b..7b9e633 100644 (file)
@@ -280,7 +280,7 @@ Demande d'autorisation d'embauche
 
     <fieldset>
     <h2>Financement</h2>
-    <span class="info">Si vous avez plusieurs financements, cliquer sur sauvegarder et une nouvelle ligne de financement sera disponible.</span>
+    <span class="info">Si vous avez plus de 2 financements, cliquer sur 'sauvegarder et continuer' lorsque que le formulaire sera complété. Une nouvelle ligne de financement sera alors disponible.</span>
     {% include "dae/financements.html" %}
     </fieldset>
 
index c0cdb1a..e2afdaf 100644 (file)
@@ -1,5 +1,5 @@
 {% extends 'base.html' %}
-{% load adminmedia %}
+{% load adminmedia dae %}
 
 {% block title %}RH - DAE - Poste{% endblock %}
 {% block titre %}Ressources humaines{% endblock %}
@@ -15,13 +15,13 @@ Demande d'autorisation d'embauche
 
 <h1 class="gauche">Demande d'autorisation de création de poste</h1>
 <a class="droite bouton-action" target="_blank" href="?mode=vpdf">Format impression</a>
-<a class="droite bouton-action" href="{% url poste poste.key %}">Modifier</a>
+{% if poste|est_editable %}<a class="droite bouton-action" href="{% url poste poste.key %}">Modifier</a>{% endif %}
 <div class="visualClear"></div>
 
 {% include "dae/poste_resume.html" %}
 
 <fieldset>
-<h2>Validation</h2>
+<h2>Validations</h2>
 
 <ul>
 {% for commentaire in poste.historique_desc %}
@@ -29,6 +29,13 @@ Demande d'autorisation d'embauche
 {% endfor %}
 </ul>
 
+<h2>Votre validation (ou commentaire)</h2>
+<p>Ce poste est présentement à l'état <span class="note">{{ poste.get_etat_display }}</span>.</p>
+<ul>
+    <li>Si vous laissez le statut actuel, votre commentaire sera enregistré.</li>
+    <li>Si vous sélectionnez un autre statut, votre action sera considérée comme une validation, mais vous pourrez toujours ajouter un commentaire par la suite.</li>
+</ul>
+
 <form action="" method="post">
 <table>
 {{ validationForm }}
index 6de655f..976b810 100644 (file)
@@ -86,7 +86,7 @@
         <td class="montant">{{ poste.salaire_min|floatformat:0 }} {{ poste.devise_min.code }}</td>
         <td class="montant">{{ poste.indemn_min|floatformat:0 }} {{ poste.devise_min.code }}</td>
         <td class="montant">{{ poste.autre_min|floatformat:0 }} {{ poste.devise_min.code }}</td>
-        <td class="montant">{{ poste.show_couts_minimum|floatformat:0 }} {{ poste.devise_min.code }}</td>
+        <td class="montant">{{ poste.get_couts_minimum|floatformat:0 }} {{ poste.devise_min.code }}</td>
         <td>{{ poste.show_taux_minimum }}</td>
         <td class="montant">{{ poste.show_couts_minimum_euros|floatformat:0 }} EUR</td>
     </tr>
@@ -96,7 +96,7 @@
         <td class="montant">{{ poste.salaire_max|floatformat:0 }} {{ poste.devise_max.code }}</td>
         <td class="montant">{{ poste.indemn_max|floatformat:0 }} {{ poste.devise_max.code }}</td>
         <td class="montant">{{ poste.autre_max|floatformat:0 }} {{ poste.devise_max.code }}</td>
-        <td class="montant">{{ poste.show_couts_maximum|floatformat:0 }} {{ poste.devise_max.code }}</td>
+        <td class="montant">{{ poste.get_couts_maximum|floatformat:0 }} {{ poste.devise_max.code }}</td>
         <td>{{ poste.show_taux_maximum }}</td>
         <td class="montant">{{ poste.show_couts_maximum_euros|floatformat:0 }} EUR</td>
     </tr>
index 04f309b..353300f 100644 (file)
@@ -7,13 +7,56 @@
 {% block main %}
 <h1>Liste des demandes d'autorisation de création de poste</h1>
 
+<h2>Mes postes à traiter</h2>
+{% if postes_a_traiter %}
 <table>
     <tr>
         <th>Poste</th>
         <th>Région</th>
         <th>État</th>
     </tr>
-{% for poste in postes %}
+{% for poste in postes_a_traiter %}
+    <tr>
+        <td><a href="{% url poste_consulter poste.key %}">{{ poste }}</a></td>
+        <td>{{ poste.implantation.region }}</td>
+        <td>{{ poste.get_etat_display }}</td>
+    </tr>
+{% endfor %}
+</table>
+{% else %}
+    <p>Vous n'avez aucun poste à traiter.</p>
+{% endif %}
+
+<h2>Les postes en cours de validation</h2>
+{% if postes_vacants %}
+<table>
+    <tr>
+        <th>Poste</th>
+        <th>Région</th>
+        <th>État</th>
+    </tr>
+{% for poste in postes_vacants %}
+    <tr>
+        <td><a href="{% url poste_consulter poste.key %}">{{ poste }}</a></td>
+        <td>{{ poste.implantation.region }}</td>
+        <td>{{ poste.get_etat_display }}</td>
+    </tr>
+
+{% endfor %}
+</table>
+{% else %}
+    <p>Il n'y a aucun poste en cours de validation.</p>
+{% endif %}
+
+<h2>Les postes pourvus</h2>
+{% if postes_pourvus %}
+<table>
+    <tr>
+        <th>Poste</th>
+        <th>Région</th>
+        <th>État</th>
+    </tr>
+{% for poste in postes_pourvus %}
     <tr>
         <td><a href="{% url poste_consulter poste.key %}">{{ poste }}</a></td>
         <td>{{ poste.implantation.region }}</td>
@@ -22,5 +65,8 @@
 
 {% endfor %}
 </table>
+{% else %}
+    <p>Il n'y a aucun poste pourvu pour l'instant.</p>
+{% endif %}
         
 {% endblock %}
diff --git a/project/dae/templatetags/__init__.py b/project/dae/templatetags/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/project/dae/templatetags/dae.py b/project/dae/templatetags/dae.py
new file mode 100644 (file)
index 0000000..8ad31b5
--- /dev/null
@@ -0,0 +1,20 @@
+from django import template
+from project.dae.workflow import ETATS_EDITABLE
+from project.dae.workflow import grp_gestionnaires, grp_service_utilisateurs, grp_correspondants_rh, grp_administrateurs, grp_directeurs_bureau, grp_drh, grp_directeurs_service
+
+register = template.Library()
+
+@register.filter
+def peut_ajouter(user):
+    for g in user.groups.all():
+        if g in (grp_gestionnaires, grp_service_utilisateurs, grp_administrateurs, grp_drh, grp_directeurs_bureau, grp_directeurs_service):
+            return True
+    return False
+
+@register.filter
+def est_editable(obj):
+    if obj.etat in ETATS_EDITABLE:
+        return True
+    else:
+        return False
+
index 33e3bbb..a30c6a0 100644 (file)
@@ -24,6 +24,7 @@ from project.rh_v1 import models as rh
 from decorators import dae_groupe_requis, \
                        poste_dans_ma_region_ou_service, \
                        dossier_dans_ma_region_ou_service, \
+                       vieux_dossier_dans_ma_region_ou_service, \
                        employe_dans_ma_region_ou_service, \
                        dossier_est_modifiable, \
                        poste_est_modifiable
@@ -160,7 +161,9 @@ def poste(request, key=None):
 def postes_liste(request):
     """ Liste des postes. """
     vars = dict()
-    vars['postes'] = dae.Poste.objects.ma_region_ou_service(request.user).order_by('-date_creation')
+    vars['postes_a_traiter'] = dae.Poste.objects.mes_choses_a_faire(request.user).filter(pourvu=False).order_by('-date_creation')
+    vars['postes_vacants'] = dae.Poste.objects.ma_region_ou_service(request.user).filter(pourvu=False).order_by('-date_creation')
+    vars['postes_pourvus'] = dae.Poste.objects.ma_region_ou_service(request.user).filter(pourvu=True).order_by('-date_creation')
     return render_to_response('dae/postes_liste.html', vars, RequestContext(request))
 
 def filtered_type_remun():
@@ -245,25 +248,16 @@ def embauche(request, key=None, dossier_id=None):
                     dossier = get_object_or_404(dae.Dossier, pk=dossier_id)
                 dossier_form = DossierForm(request.POST, instance=dossier)
                 piecesForm = DossierPieceForm(request.POST, request.FILES, instance=dossier)
-                justificationsNouveauForm = JustificationNouvelEmployeForm(request.POST, instance=dossier)
-                justificationsAutreForm = JustificationAutreEmployeForm(request.POST, instance=dossier)
                 dossiersComparaisonsForm = DossierComparaisonForm(request.POST, instance=dossier)
                 remunForm = RemunForm(request.POST, instance=dossier)
-                print remunForm.errors
                 if dossier_form.is_valid() and \
                    piecesForm.is_valid() and \
-                   justificationsNouveauForm.is_valid() and \
-                   justificationsAutreForm.is_valid() and \
                    dossiersComparaisonsForm.is_valid() and \
                    remunForm.is_valid():
 
                     dossier = dossier_form.save()
                     piecesForm.instance = dossier
                     piecesForm.save()
-                    justificationsNouveauForm.instance = dossier
-                    justificationsNouveauForm.save()
-                    justificationsAutreForm.instance = dossier
-                    justificationsAutreForm.save()
                     dossiersComparaisonsForm.instance = dossier
                     dossiersComparaisonsForm.save()
                     remunForm.instance = dossier
@@ -306,8 +300,6 @@ def embauche(request, key=None, dossier_id=None):
             else:
                 dossier_form = DossierForm(instance=dossier)
                 piecesForm = DossierPieceForm(instance=dossier)
-                justificationsNouveauForm = JustificationNouvelEmployeForm(instance=dossier)
-                justificationsAutreForm = JustificationAutreEmployeForm(instance=dossier)
                 dossiersComparaisonsForm = DossierComparaisonForm(instance=dossier)
                 remunForm = RemunForm(instance=dossier)
         else:
@@ -325,8 +317,6 @@ def embauche(request, key=None, dossier_id=None):
 
             dossier_form = DossierForm(instance=dossier)
             piecesForm = DossierPieceForm(instance=dossier)
-            justificationsNouveauForm = JustificationNouvelEmployeForm(instance=dossier)
-            justificationsAutreForm = JustificationAutreEmployeForm(instance=dossier)
             dossiersComparaisonsForm = DossierComparaisonForm(instance=dossier)
             remunForm = RemunForm(instance=dossier)
 
@@ -337,8 +327,6 @@ def embauche(request, key=None, dossier_id=None):
                 dossier=dossier,
                 piecesForm=piecesForm,
                 remunForm=remunForm,
-                justificationsNouveauForm=justificationsNouveauForm,
-                justificationsAutreForm=justificationsAutreForm,
                 dossiersComparaisonsForm=dossiersComparaisonsForm,
                 forms=dict(employe=employe_form, dossier=dossier_form, )
                 )
@@ -351,7 +339,9 @@ def embauche(request, key=None, dossier_id=None):
 def embauches_liste(request):
     """ Liste des embauches. """
     vars = dict()
-    vars['embauches'] = dae.Dossier.objects.ma_region_ou_service(request.user).order_by('-date_creation')
+    vars['embauches_a_traiter'] = dae.Dossier.objects.ma_region_ou_service(request.user).filter(poste__pourvu=False).order_by('-date_creation')
+    vars['embauches_en_cours'] = dae.Dossier.objects.ma_region_ou_service(request.user).filter(poste__pourvu=False).order_by('-date_creation')
+    vars['embauches_non_retenues'] = dae.Dossier.objects.ma_region_ou_service(request.user).filter(poste__pourvu=True).order_by('-date_creation')
     return render_to_response('dae/embauches_liste.html', vars, RequestContext(request))
 
 def employe(request, key):
@@ -490,7 +480,7 @@ def pre_filled_dossier(dossier_rh, employe_source, poste_rh):
     return dossier
 
 @dae_groupe_requis
-@dossier_dans_ma_region_ou_service
+@vieux_dossier_dans_ma_region_ou_service
 def dossier_resume(request, dossier_id=None):
     """ Appel AJAX : 
     input : valeur_point
index 6bfab83..2236691 100644 (file)
@@ -31,6 +31,7 @@ dae_groupes = (grp_administrateurs, grp_gestionnaires, grp_directeurs_bureau, gr
                grp_directeurs_service, grp_correspondants_rh, )
 
 # codes états
+POSTE_ETAT_REFUSE = 'REFUSE'
 POSTE_ETAT_BROUILLON = 'BROUILLON'
 POSTE_ETAT_DIRECTEUR_BUREAU_OU_SERVICE = 'DIRECTEUR_BUR_SRV'
 POSTE_ETAT_ADMINISTRATEUR = 'ADMINISTRATEUR'
@@ -39,9 +40,8 @@ POSTE_ETAT_POLE_FINANCIER = 'FINANCE'
 POSTE_ETAT_HAUTE_DIRECTION = 'HAUTE_DIRECTION'
 POSTE_ETAT_DRH_FINALISATION = 'DRH_FINALISATION'
 
-ETATS_EDITABLE = (POSTE_ETAT_BROUILLON, POSTE_ETAT_ADMINISTRATEUR, POSTE_ETAT_DRH_CONTROLE)
-
 #codes actions
+POSTE_ACTION_ENVOYER_REFUSE = POSTE_ETAT_REFUSE
 POSTE_ACTION_ENVOYER_BROUILLON = POSTE_ETAT_BROUILLON
 POSTE_ACTION_ENVOYER_DIRECTEUR_BUREAU_OU_SERVICE = POSTE_ETAT_DIRECTEUR_BUREAU_OU_SERVICE
 POSTE_ACTION_ENVOYER_ADMINISTRATEUR = POSTE_ETAT_ADMINISTRATEUR
@@ -52,7 +52,8 @@ POSTE_ACTION_ENVOYER_DRH_FINALISATION = POSTE_ETAT_DRH_FINALISATION
 
 #libellés états
 POSTE_ETATS = {
-    POSTE_ETAT_BROUILLON : u"Proposition",
+    POSTE_ETAT_REFUSE : u"Refusé",
+    POSTE_ETAT_BROUILLON : u"En rédaction",
     POSTE_ETAT_DIRECTEUR_BUREAU_OU_SERVICE : u"Directeur de bureau, pôle ou service",
     POSTE_ETAT_ADMINISTRATEUR : u"Validation de l'adminstrateur",
     POSTE_ETAT_DRH_CONTROLE : u"Validation DRH",
@@ -63,6 +64,11 @@ POSTE_ETATS = {
 
 # définition du worflow séquentiel
 POSTE_ACTIONS = {
+    POSTE_ACTION_ENVOYER_REFUSE : {
+        'nom' : u'Refuser',
+        'etat_initial' : (POSTE_ETAT_DIRECTEUR_BUREAU_OU_SERVICE, POSTE_ETAT_ADMINISTRATEUR, POSTE_ETAT_DRH_CONTROLE, POSTE_ETAT_POLE_FINANCIER, POSTE_ETAT_HAUTE_DIRECTION),
+        'etat_final' : POSTE_ETAT_REFUSE,
+    },
     POSTE_ACTION_ENVOYER_BROUILLON : {
         'nom' : u'Créer',
         'etat_initial' : None,
@@ -108,6 +114,8 @@ class PosteWorkflow(WorkflowMixin):
     class Meta:
         abstract = True
 
+    def acces_refuse(self, action, request):
+        return True
 
     def acces_directeur_bur_srv(self, action, request):
         for g in request.user.groups.all():
@@ -146,8 +154,44 @@ class PosteWorkflow(WorkflowMixin):
         return False
 
 
+#codes actions
+DOSSIER_ETAT_BROUILLON = POSTE_ETAT_BROUILLON
+DOSSIER_ETAT_DIRECTEUR_BUREAU_OU_SERVICE = POSTE_ETAT_DIRECTEUR_BUREAU_OU_SERVICE
+DOSSIER_ETAT_ADMINISTRATEUR = POSTE_ETAT_ADMINISTRATEUR
+DOSSIER_ETAT_DRH_CONTROLE = POSTE_ETAT_DRH_CONTROLE
+DOSSIER_ETAT_POLE_FINANCIER = POSTE_ETAT_POLE_FINANCIER
+DOSSIER_ETAT_HAUTE_DIRECTION = POSTE_ETAT_HAUTE_DIRECTION
+DOSSIER_ETAT_DRH_FINALISATION = POSTE_ETAT_DRH_FINALISATION
 
 class DossierWorkflow(PosteWorkflow):
 
     class Meta:
         abstract = True
+
+    def save(self, force_insert=False, force_update=False, using=None):
+        """
+        Lorsqu'un dossier est retenu, on flag le poste pourvu
+        """
+        super(PosteWorkflow, self).save(force_insert, force_update, using)
+        if self.etat == DOSSIER_ETAT_DRH_FINALISATION:
+            self.poste.pourvu = True
+            self.poste.save()
+
+
+MAP_GROUPE_ETATS_A_FAIRE = {
+    grp_gestionnaires : (),
+    grp_service_utilisateurs : (),
+    grp_correspondants_rh : (),
+    grp_administrateurs : (POSTE_ETAT_ADMINISTRATEUR, DOSSIER_ETAT_ADMINISTRATEUR,),
+    grp_directeurs_bureau : (POSTE_ETAT_DIRECTEUR_BUREAU_OU_SERVICE, DOSSIER_ETAT_DIRECTEUR_BUREAU_OU_SERVICE,),
+    grp_drh : (POSTE_ETAT_DRH_CONTROLE, POSTE_ETAT_DRH_FINALISATION, DOSSIER_ETAT_DRH_CONTROLE, DOSSIER_ETAT_DRH_FINALISATION,),
+    grp_pole_financier : (POSTE_ETAT_POLE_FINANCIER, DOSSIER_ETAT_POLE_FINANCIER, ),
+    grp_haute_direction : (POSTE_ETAT_HAUTE_DIRECTION, DOSSIER_ETAT_HAUTE_DIRECTION, ),
+    grp_directeurs_service : (POSTE_ETAT_DIRECTEUR_BUREAU_OU_SERVICE, DOSSIER_ETAT_DIRECTEUR_BUREAU_OU_SERVICE,),
+}
+
+
+ETATS_EDITABLE = (POSTE_ETAT_BROUILLON, POSTE_ETAT_ADMINISTRATEUR, POSTE_ETAT_DRH_CONTROLE, POSTE_ETAT_DIRECTEUR_BUREAU_OU_SERVICE,
+                  DOSSIER_ETAT_BROUILLON, DOSSIER_ETAT_ADMINISTRATEUR, DOSSIER_ETAT_DRH_CONTROLE, DOSSIER_ETAT_DIRECTEUR_BUREAU_OU_SERVICE,
+)
+
index 96da061..8e35ceb 100644 (file)
@@ -60,14 +60,14 @@ function remun_line(input) {
     value = (montant_annuel.val());
   }
 
-  montant_mensuel.val(value / 12);
+  montant_mensuel.val(clean_float(value / 12));
   montant_annuel.val(value);
 
   var devise = $('#' + prefix + '-devise').val();
   var taux = parseFloat(DEVISES[devise]);
   if (isNaN(taux)) taux = 0;
-  montant_mensuel_euros.text(value / 12 * taux)
-  montant_annuel_euros.text(value * taux)
+  montant_mensuel_euros.text(clean_float(value / 12 * taux))
+  montant_annuel_euros.text(clean_float(value * taux))
   
 }
 
index daa3b52..9ebda6f 100644 (file)
@@ -62,7 +62,6 @@ function charger_valeurs_point(implantation_id) {
 /* Calcul des totaux dans les 2 devises, selon les champs sélectionnés. Cette fonction
 est appelée À chaque modification du formulaire de classement. */
 function recalculer_ligne(element) {
-
     /* on laisse la possibilité de choisir le salaire manuellement,
        la réinitialisation du salaire de base s'opère dès qu'on choisi
        un nouveau classement. */
@@ -126,7 +125,7 @@ function recalculer_ligne(element) {
 
 /* recalcule tout le classement */
 function recalculer_tout() {
-    $("#classement tr *[name*=classement]").each(function() {
+    $("#classement tr *[name*=salaire]").each(function() {
         recalculer_ligne($(this));
     });
 }
@@ -151,6 +150,9 @@ $(document).ready(function() {
 
 
     $('#id_valeur_point_min, #id_valeur_point_max').change(function(e) {
+        // pas de traitement si aucune valeur de point n'est choisie
+        if (this.value == '') return;
+
         var vp_input = $(this);
         var ligne = vp_input.parents("tr").parent(); // en fait on travaille sur tout le tableau dans ce cas!
 
index e6240e1..34d2819 100644 (file)
@@ -69,7 +69,7 @@ POSTE_APPEL_CHOICES = (
     ('externe', 'Externe'),
 )
 
-class Poste(Metadata):
+class Poste_(Metadata):
     """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.
@@ -185,6 +185,7 @@ class Poste(Metadata):
                             null=True, blank=True)
 
     class Meta:
+        abstract = True
         ordering = ['implantation__nom', 'nom']
 
     def __unicode__(self):
@@ -193,6 +194,10 @@ class Poste(Metadata):
         return u'%s - %s [%s]' % (self.implantation, self.nom, self.id)
 
 
+class Poste(Poste_):
+    __doc__ = Poste_.__doc__
+
+
 POSTE_FINANCEMENT_CHOICES = (
     ('A', 'A - Frais de personnel'),
     ('B', 'B - Projet(s)-Titre(s)'),
@@ -374,7 +379,7 @@ COMPTE_COMPTA_CHOICES = (
     ('aucun', 'Aucun'),
 )
 
-class Dossier(Metadata):
+class Dossier_(Metadata):
     """Le Dossier regroupe les informations relatives à l'occupation
     d'un Poste par un Employe. Un seul Dossier existe par Poste occupé
     par un Employe.
@@ -431,11 +436,17 @@ class Dossier(Metadata):
     # TODO?
     
     class Meta:
+        abstract = True
         ordering = ['poste__nom', 'employe__nom_affichage']
         
     def __unicode__(self):
         return u'%s - %s' % (self.poste.nom, self.employe)
 
+
+class Dossier(Dossier_):
+    __doc__ = Dossier_.__doc__
+
+
 class DossierPiece(models.Model):
     """Documents relatifs au Dossier (à l'occupation de ce poste par employé).
     Ex.: Lettre de motivation.
@@ -764,7 +775,19 @@ class ValeurPoint(Metadata):
 
     class Meta:
         ordering = ['annee', 'implantation__nom']
-        
+
+    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):
         tx = self.get_tauxchange_courant()
         if tx:
index c88acb6..f78182c 100644 (file)
@@ -69,6 +69,7 @@ INSTALLED_APPS = (
     'auf.django.workflow',
     'project.rh_v1',
     'project.dae',
+    'project.budget', 
 )
 
 TEMPLATE_CONTEXT_PROCESSORS = (
index 7e843e9..a0ba2f0 100644 (file)
@@ -1,4 +1,4 @@
-{% load auf_menu %}
+{% load auf_menu dae %}
 
 <ul class="menu">
   <li class="{% menu_actif request '^$' %}">
@@ -7,15 +7,19 @@
   <li class="{% menu_actif request '^dae$' %}">
     <a href="{% url dae_index %}">DAE</a>
     <ul>
+        {% if request.user|peut_ajouter %}
         <li class="{% menu_actif request '^poste$' %}">
           <a href="{% url poste %}">Poste : formulaire</a>
         </li>
+        {% endif %}
         <li class="{% menu_actif request '^postes$' %}">
           <a href="{% url dae_postes_liste %}">Postes : voir et valider</a>
         </li>
+        {% if request.user|peut_ajouter %}
         <li class="{% menu_actif request '^embauche$' %}">
           <a href="{% url embauche %}">Embauche : formulaire</a>
         </li>
+        {% endif %}
         <li class="{% menu_actif request '^embauches$' %}">
           <a href="{% url dae_embauches_liste %}">Embauches : voir et valider</a>
         </li>