merge nilo recrutement
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Fri, 15 Jul 2011 18:30:13 +0000 (14:30 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Fri, 15 Jul 2011 18:30:13 +0000 (14:30 -0400)
15 files changed:
buildout.cfg
project/budget/admin.py
project/budget/migrations/0004_auto__del_classement__del_tauxchange__del_poste__del_dossier__del_vale.py [new file with mode: 0644]
project/budget/migrations/0005_auto__add_classement__add_tauxchange__add_poste__add_simulation__add_d.py [new file with mode: 0644]
project/budget/models.py
project/dae/forms.py
project/dae/models.py
project/dae/templates/dae/embauche-dossier.html
project/dae/templatetags/dae.py
project/development.py
project/rh/admin.py
project/rh/lib.py
project/rh/models.py
project/rh/templates/admin/rh/change_list.html [new file with mode: 0644]
project/settings.py

index b91ff39..36f727b 100644 (file)
@@ -9,6 +9,8 @@ find-links = http://pypi.auf.org/simple/auf.recipe.django/
     http://pypi.auf.org/simple/auf.django.auth/
     http://pypi.auf.org/simple/auf.django.workflow/
     http://pypi.auf.org/simple/auf.django.admingroup/
+    http://pypi.auf.org/simple/auf.django.metadata/
+    http://pypi.auf.org/django-alphafilter/
 
 eggs =
     django
@@ -22,9 +24,12 @@ eggs =
     django-reversion
     simplejson
     django-ajax-selects
+    auf.django.metadata
+    django-alphafilter
     django-form-utils
     django-tinymce
     django-simple-captcha
+
 # LA PROD ne dispose que de reportlab 2.1, incompatible avec
 # les versions de pisa assez évoluées pour un bon rendu.
 #    reportlab
@@ -41,6 +46,12 @@ auf.django.auth = 0.5.5dev
 django-reversion = 1.3.3
 auf.django.workflow = 0.14dev
 django-ajax-selects = 1.1.4
+django-alphafilter = 0.5.3auf2
+#reportlab = 2.5
+#html5lib = 0.90
+#pyPDF = 1.13
+#pisa = 3.0.33
+
 #reportlab = 2.5
 #html5lib = 0.90
 #pyPDF = 1.13
index 5338b9b..bd44358 100644 (file)
@@ -3,7 +3,9 @@
 from django.contrib import admin
 
 from budget.models import *
-from rh.lib import *
+from rh.lib import (ClassementAdmin, DossierAdmin, EvenementAdmin,
+                    EvenementRemunerationAdmin, PosteAdmin, RemunerationAdmin,
+                    ValeurPointAdmin, TauxChangeAdmin)
 
 admin.site.register(Classement, ClassementAdmin)
 admin.site.register(Dossier, DossierAdmin)
diff --git a/project/budget/migrations/0004_auto__del_classement__del_tauxchange__del_poste__del_dossier__del_vale.py b/project/budget/migrations/0004_auto__del_classement__del_tauxchange__del_poste__del_dossier__del_vale.py
new file mode 100644 (file)
index 0000000..c2bd9ff
--- /dev/null
@@ -0,0 +1,248 @@
+# 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 'Classement'
+        db.delete_table('budget_classement')
+
+        # Deleting model 'TauxChange'
+        db.delete_table('budget_tauxchange')
+
+        # Deleting model 'Poste'
+        db.delete_table('budget_poste')
+
+        # Deleting model 'Dossier'
+        db.delete_table('budget_dossier')
+
+        # Deleting model 'ValeurPoint'
+        db.delete_table('budget_valeurpoint')
+
+        # Deleting model 'Remuneration'
+        db.delete_table('budget_remuneration')
+
+        # Deleting model 'Evenement'
+        db.delete_table('budget_evenement')
+
+        # Deleting model 'Simulation'
+        db.delete_table('budget_simulation')
+
+        # Deleting model 'EvenementRemuneration'
+        db.delete_table('budget_evenementremuneration')
+    
+    
+    def backwards(self, orm):
+        
+        # Adding model 'Classement'
+        db.create_table('budget_classement', (
+            ('coefficient', self.gf('django.db.models.fields.FloatField')(default=0)),
+            ('user_desactivation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_desactivation', blank=True)),
+            ('commentaire', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+            ('degre', self.gf('django.db.models.fields.IntegerField')()),
+            ('date_creation', self.gf('django.db.models.fields.DateField')(auto_now_add=True, blank=True)),
+            ('date_desactivation', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('user_creation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_creation', blank=True)),
+            ('user_modification', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_modification', blank=True)),
+            ('date_modification', self.gf('django.db.models.fields.DateField')(auto_now=True, blank=True)),
+            ('echelon', self.gf('django.db.models.fields.IntegerField')()),
+            ('type', self.gf('django.db.models.fields.CharField')(max_length=10)),
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('actif', self.gf('django.db.models.fields.BooleanField')(default=True, blank=True)),
+            ('simulation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['budget.Simulation'])),
+        ))
+        db.send_create_signal('budget', ['Classement'])
+
+        # Adding model 'TauxChange'
+        db.create_table('budget_tauxchange', (
+            ('user_desactivation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_desactivation', blank=True)),
+            ('devise', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', to_field='code', db_column='devise', to=orm['rh.Devise'])),
+            ('actif', self.gf('django.db.models.fields.BooleanField')(default=True, blank=True)),
+            ('date_creation', self.gf('django.db.models.fields.DateField')(auto_now_add=True, blank=True)),
+            ('date_desactivation', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('user_creation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_creation', blank=True)),
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('user_modification', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_modification', blank=True)),
+            ('date_modification', self.gf('django.db.models.fields.DateField')(auto_now=True, blank=True)),
+            ('simulation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['budget.Simulation'])),
+            ('taux', self.gf('django.db.models.fields.FloatField')()),
+            ('annee', self.gf('django.db.models.fields.IntegerField')()),
+        ))
+        db.send_create_signal('budget', ['TauxChange'])
+
+        # 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)),
+            ('implantation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', db_column='implantation', to=orm['datamaster_modeles.Implantation'])),
+            ('salaire_min', self.gf('django.db.models.fields.DecimalField')(default=0, max_digits=12, decimal_places=2)),
+            ('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)),
+            ('comp_locale_min', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
+            ('devise_max', self.gf('django.db.models.fields.related.ForeignKey')(default=5, related_name='+', db_column='devise_max', 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'])),
+            ('comp_ong_max', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
+            ('date_validation', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
+            ('simulation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['budget.Simulation'])),
+            ('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')(related_name='+', null=True, to=orm['rh.ValeurPoint'], db_column='valeur_point_max', blank=True)),
+            ('indemn_max', self.gf('django.db.models.fields.DecimalField')(default=0, max_digits=12, decimal_places=2)),
+            ('devise_min', self.gf('django.db.models.fields.related.ForeignKey')(default=5, related_name='+', db_column='devise_min', to=orm['rh.Devise'])),
+            ('date_debut', self.gf('django.db.models.fields.DateField')()),
+            ('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)),
+            ('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)),
+            ('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)),
+            ('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')(related_name='+', null=True, to=orm['auth.User'], db_column='user_creation', blank=True)),
+            ('appel', self.gf('django.db.models.fields.CharField')(default='interne', max_length=10)),
+            ('user_modification', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_modification', blank=True)),
+            ('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_autre_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')(related_name='+', null=True, to=orm['auth.User'], db_column='user_desactivation', blank=True)),
+            ('valeur_point_min', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['rh.ValeurPoint'], db_column='valeur_point_min', blank=True)),
+            ('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')(related_name='+', null=True, to=orm['rh.Classement'], db_column='classement_max', blank=True)),
+            ('comp_universite_min', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=12, decimal_places=2, blank=True)),
+            ('devise_comparaison', self.gf('django.db.models.fields.related.ForeignKey')(default=5, related_name='+', db_column='devise_comparaison', to=orm['rh.Devise'])),
+            ('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')(related_name='+', null=True, to=orm['rh.Classement'], db_column='classement_min', blank=True)),
+        ))
+        db.send_create_signal('budget', ['Poste'])
+
+        # 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')(related_name='+', null=True, to=orm['rh.Classement'], db_column='classement', blank=True)),
+            ('organisme_bstg', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['rh.OrganismeBstg'], db_column='organisme_bstg', blank=True)),
+            ('user_desactivation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_desactivation', blank=True)),
+            ('statut', self.gf('django.db.models.fields.related.ForeignKey')(default=3, related_name='+', to=orm['rh.Statut'])),
+            ('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)),
+            ('simulation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['budget.Simulation'])),
+            ('user_creation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_creation', blank=True)),
+            ('date_modification', self.gf('django.db.models.fields.DateField')(auto_now=True, blank=True)),
+            ('remplacement', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
+            ('regime_travail', self.gf('django.db.models.fields.DecimalField')(default=100.0, max_digits=12, decimal_places=2)),
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('user_modification', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_modification', blank=True)),
+            ('poste', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', db_column='poste', to=orm['rh.Poste'])),
+            ('date_desactivation', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('actif', self.gf('django.db.models.fields.BooleanField')(default=True, blank=True)),
+            ('date_debut', self.gf('django.db.models.fields.DateField')()),
+        ))
+        db.send_create_signal('budget', ['Dossier'])
+
+        # Adding model 'ValeurPoint'
+        db.create_table('budget_valeurpoint', (
+            ('user_desactivation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_desactivation', blank=True)),
+            ('implantation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='budget_valeur_point', db_column='implantation', to=orm['datamaster_modeles.Implantation'])),
+            ('date_creation', self.gf('django.db.models.fields.DateField')(auto_now_add=True, blank=True)),
+            ('date_desactivation', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('devise', self.gf('django.db.models.fields.related.ForeignKey')(default=5, related_name='+', db_column='devise', to=orm['rh.Devise'])),
+            ('user_creation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_creation', blank=True)),
+            ('date_modification', self.gf('django.db.models.fields.DateField')(auto_now=True, blank=True)),
+            ('valeur', self.gf('django.db.models.fields.FloatField')()),
+            ('user_modification', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_modification', blank=True)),
+            ('annee', self.gf('django.db.models.fields.IntegerField')()),
+            ('simulation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['budget.Simulation'])),
+            ('actif', self.gf('django.db.models.fields.BooleanField')(default=True, blank=True)),
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+        ))
+        db.send_create_signal('budget', ['ValeurPoint'])
+
+        # Adding model 'Remuneration'
+        db.create_table('budget_remuneration', (
+            ('user_desactivation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_desactivation', blank=True)),
+            ('montant', self.gf('django.db.models.fields.FloatField')(default=0, null=True, blank=True)),
+            ('devise', self.gf('django.db.models.fields.related.ForeignKey')(default=5, related_name='+', db_column='devise', to=orm['rh.Devise'])),
+            ('commentaire', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
+            ('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)),
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('dossier', self.gf('django.db.models.fields.related.ForeignKey')(related_name='budget_remuneration_remunerations', db_column='dossier', to=orm['rh.Dossier'])),
+            ('user_creation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_creation', blank=True)),
+            ('date_modification', self.gf('django.db.models.fields.DateField')(auto_now=True, blank=True)),
+            ('user_modification', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_modification', blank=True)),
+            ('type_revalorisation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['rh.TypeRevalorisation'], db_column='type_revalorisation', blank=True)),
+            ('date_desactivation', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', db_column='type', to=orm['rh.TypeRemuneration'])),
+            ('date_debut', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('actif', self.gf('django.db.models.fields.BooleanField')(default=True, blank=True)),
+            ('simulation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['budget.Simulation'])),
+        ))
+        db.send_create_signal('budget', ['Remuneration'])
+
+        # Adding model 'Evenement'
+        db.create_table('budget_evenement', (
+            ('nom', self.gf('django.db.models.fields.CharField')(max_length=255)),
+            ('user_desactivation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_desactivation', blank=True)),
+            ('dossier', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', db_column='dossier', to=orm['rh.Dossier'])),
+            ('user_creation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_creation', blank=True)),
+            ('date_creation', self.gf('django.db.models.fields.DateField')(auto_now_add=True, blank=True)),
+            ('date_desactivation', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('date_fin', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('date_debut', self.gf('django.db.models.fields.DateField')()),
+            ('user_modification', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_modification', blank=True)),
+            ('date_modification', self.gf('django.db.models.fields.DateField')(auto_now=True, blank=True)),
+            ('simulation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['budget.Simulation'])),
+            ('actif', self.gf('django.db.models.fields.BooleanField')(default=True, blank=True)),
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+        ))
+        db.send_create_signal('budget', ['Evenement'])
+
+        # 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 'EvenementRemuneration'
+        db.create_table('budget_evenementremuneration', (
+            ('user_desactivation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_desactivation', blank=True)),
+            ('montant', self.gf('django.db.models.fields.FloatField')(default=0, null=True, blank=True)),
+            ('devise', self.gf('django.db.models.fields.related.ForeignKey')(default=5, related_name='+', db_column='devise', to=orm['rh.Devise'])),
+            ('commentaire', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
+            ('evenement', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', db_column='evenement', to=orm['rh.Evenement'])),
+            ('date_fin', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('date_creation', self.gf('django.db.models.fields.DateField')(auto_now_add=True, blank=True)),
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('dossier', self.gf('django.db.models.fields.related.ForeignKey')(related_name='budget_evenementremuneration_remunerations', db_column='dossier', to=orm['rh.Dossier'])),
+            ('user_creation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_creation', blank=True)),
+            ('date_modification', self.gf('django.db.models.fields.DateField')(auto_now=True, blank=True)),
+            ('user_modification', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['auth.User'], db_column='user_modification', blank=True)),
+            ('type_revalorisation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', null=True, to=orm['rh.TypeRevalorisation'], db_column='type_revalorisation', blank=True)),
+            ('date_desactivation', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', db_column='type', to=orm['rh.TypeRemuneration'])),
+            ('date_debut', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('actif', self.gf('django.db.models.fields.BooleanField')(default=True, blank=True)),
+            ('simulation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['budget.Simulation'])),
+        ))
+        db.send_create_signal('budget', ['EvenementRemuneration'])
+    
+    
+    models = {
+        
+    }
+    
+    complete_apps = ['budget']
diff --git a/project/budget/migrations/0005_auto__add_classement__add_tauxchange__add_poste__add_simulation__add_d.py b/project/budget/migrations/0005_auto__add_classement__add_tauxchange__add_poste__add_simulation__add_d.py
new file mode 100644 (file)
index 0000000..2f3efff
--- /dev/null
@@ -0,0 +1,855 @@
+# 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 'Classement'
+        db.create_table('budget_classement', (
+            ('coefficient', self.gf('django.db.models.fields.FloatField')(default=0, null=True)),
+            ('simulation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['budget.Simulation'])),
+            ('user_desactivation', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='user_desactivation', to=orm['auth.User'])),
+            ('supprime', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
+            ('degre', self.gf('django.db.models.fields.IntegerField')()),
+            ('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'])),
+            ('echelon', self.gf('django.db.models.fields.IntegerField')()),
+            ('type', self.gf('django.db.models.fields.CharField')(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'])),
+            ('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)),
+            ('commentaire', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+        ))
+        db.send_create_signal('budget', ['Classement'])
+
+        # Adding model 'TauxChange'
+        db.create_table('budget_tauxchange', (
+            ('user_desactivation', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='user_desactivation', to=orm['auth.User'])),
+            ('devise', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', db_column='devise', to=orm['rh.Devise'])),
+            ('supprime', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
+            ('taux', self.gf('django.db.models.fields.FloatField')()),
+            ('date_creation', self.gf('django.db.models.fields.DateField')(auto_now_add=True, blank=True)),
+            ('annee', self.gf('django.db.models.fields.IntegerField')()),
+            ('user_creation', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='user_creation', to=orm['auth.User'])),
+            ('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)),
+            ('simulation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['budget.Simulation'])),
+        ))
+        db.send_create_signal('budget', ['TauxChange'])
+
+        # Adding model 'Poste'
+        db.create_table('budget_poste', (
+            ('indemn_min', self.gf('django.db.models.fields.DecimalField')(default=0, null=True, max_digits=12, decimal_places=2)),
+            ('salaire_min', self.gf('django.db.models.fields.DecimalField')(default=0, null=True, 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'])),
+            ('supprime', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
+            ('devise_max', self.gf('django.db.models.fields.related.ForeignKey')(default=5, related_name='+', null=True, db_column='devise_max', to=orm['rh.Devise'])),
+            ('expatrie', self.gf('django.db.models.fields.NullBooleanField')(default=False, null=True, 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='+', null=True, 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='+', null=True, 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, null=True, max_digits=12, decimal_places=2)),
+            ('service', self.gf('django.db.models.fields.related.ForeignKey')(default=1, related_name='+', null=True, 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, null=True, 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='+', null=True, 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')(null=True)),
+            ('regime_travail', self.gf('django.db.models.fields.DecimalField')(default=100.0, null=True, 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.NullBooleanField')(default=True, null=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.NullBooleanField')(default=False, null=True, 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, null=True, 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, null=True)),
+            ('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, null=True, 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, null=True, 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'])
+
+        # 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 '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, null=True, 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'])),
+            ('simulation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['budget.Simulation'])),
+            ('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='+', null=True, to=orm['rh.Statut'])),
+            ('supprime', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
+            ('statut_residence', self.gf('django.db.models.fields.CharField')(default='local', max_length=10, null=True)),
+            ('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, null=True, 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 'ValeurPoint'
+        db.create_table('budget_valeurpoint', (
+            ('user_desactivation', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='user_desactivation', to=orm['auth.User'])),
+            ('devise', self.gf('django.db.models.fields.related.ForeignKey')(default=5, related_name='+', null=True, db_column='devise', to=orm['rh.Devise'])),
+            ('supprime', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
+            ('date_creation', self.gf('django.db.models.fields.DateField')(auto_now_add=True, blank=True)),
+            ('annee', self.gf('django.db.models.fields.IntegerField')()),
+            ('implantation', self.gf('django.db.models.fields.related.ForeignKey')(related_name='budget_valeur_point', db_column='implantation', to=orm['datamaster_modeles.Implantation'])),
+            ('user_creation', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='user_creation', to=orm['auth.User'])),
+            ('valeur', self.gf('django.db.models.fields.FloatField')(null=True)),
+            ('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)),
+            ('simulation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['budget.Simulation'])),
+        ))
+        db.send_create_signal('budget', ['ValeurPoint'])
+
+        # Adding model 'Remuneration'
+        db.create_table('budget_remuneration', (
+            ('simulation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['budget.Simulation'])),
+            ('montant', self.gf('django.db.models.fields.FloatField')(default=0, null=True, blank=True)),
+            ('user_desactivation', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='user_desactivation', to=orm['auth.User'])),
+            ('dossier', self.gf('django.db.models.fields.related.ForeignKey')(related_name='budget_remuneration_remunerations', db_column='dossier', to=orm['rh.Dossier'])),
+            ('supprime', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
+            ('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)),
+            ('date_debut', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('devise', self.gf('django.db.models.fields.related.ForeignKey')(default=5, related_name='+', db_column='devise', to=orm['rh.Devise'])),
+            ('user_creation', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='user_creation', to=orm['auth.User'])),
+            ('type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', db_column='type', to=orm['rh.TypeRemuneration'])),
+            ('type_revalorisation', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='type_revalorisation', to=orm['rh.TypeRevalorisation'])),
+            ('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)),
+            ('commentaire', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
+        ))
+        db.send_create_signal('budget', ['Remuneration'])
+
+        # Adding model 'Evenement'
+        db.create_table('budget_evenement', (
+            ('nom', self.gf('django.db.models.fields.CharField')(max_length=255)),
+            ('user_desactivation', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='user_desactivation', to=orm['auth.User'])),
+            ('dossier', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', db_column='dossier', to=orm['rh.Dossier'])),
+            ('supprime', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
+            ('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'])),
+            ('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)),
+            ('simulation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['budget.Simulation'])),
+        ))
+        db.send_create_signal('budget', ['Evenement'])
+
+        # Adding model 'PosteFinancement'
+        db.create_table('budget_postefinancement', (
+            ('pourcentage', self.gf('django.db.models.fields.DecimalField')(max_digits=12, decimal_places=2)),
+            ('commentaire', self.gf('django.db.models.fields.TextField')()),
+            ('simulation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['budget.Simulation'])),
+            ('poste', self.gf('django.db.models.fields.related.ForeignKey')(related_name='budget_financements', db_column='poste', to=orm['rh.Poste'])),
+            ('type', self.gf('django.db.models.fields.CharField')(max_length=1)),
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+        ))
+        db.send_create_signal('budget', ['PosteFinancement'])
+
+        # Adding model 'EvenementRemuneration'
+        db.create_table('budget_evenementremuneration', (
+            ('simulation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['budget.Simulation'])),
+            ('montant', self.gf('django.db.models.fields.FloatField')(default=0, null=True, blank=True)),
+            ('user_desactivation', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='user_desactivation', to=orm['auth.User'])),
+            ('dossier', self.gf('django.db.models.fields.related.ForeignKey')(related_name='budget_evenementremuneration_remunerations', db_column='dossier', to=orm['rh.Dossier'])),
+            ('supprime', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
+            ('evenement', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', db_column='evenement', to=orm['rh.Evenement'])),
+            ('date_fin', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('date_creation', self.gf('django.db.models.fields.DateField')(auto_now_add=True, blank=True)),
+            ('date_debut', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('devise', self.gf('django.db.models.fields.related.ForeignKey')(default=5, related_name='+', db_column='devise', to=orm['rh.Devise'])),
+            ('user_creation', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='user_creation', to=orm['auth.User'])),
+            ('type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='+', db_column='type', to=orm['rh.TypeRemuneration'])),
+            ('type_revalorisation', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, db_column='type_revalorisation', to=orm['rh.TypeRevalorisation'])),
+            ('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)),
+            ('commentaire', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
+        ))
+        db.send_create_signal('budget', ['EvenementRemuneration'])
+    
+    
+    def backwards(self, orm):
+        
+        # Deleting model 'Classement'
+        db.delete_table('budget_classement')
+
+        # Deleting model 'TauxChange'
+        db.delete_table('budget_tauxchange')
+
+        # Deleting model 'Poste'
+        db.delete_table('budget_poste')
+
+        # Deleting model 'Simulation'
+        db.delete_table('budget_simulation')
+
+        # Deleting model 'Dossier'
+        db.delete_table('budget_dossier')
+
+        # Deleting model 'ValeurPoint'
+        db.delete_table('budget_valeurpoint')
+
+        # Deleting model 'Remuneration'
+        db.delete_table('budget_remuneration')
+
+        # Deleting model 'Evenement'
+        db.delete_table('budget_evenement')
+
+        # Deleting model 'PosteFinancement'
+        db.delete_table('budget_postefinancement')
+
+        # Deleting model 'EvenementRemuneration'
+        db.delete_table('budget_evenementremuneration')
+    
+    
+    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.classement': {
+            'Meta': {'object_name': 'Classement'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'coefficient': ('django.db.models.fields.FloatField', [], {'default': '0', 'null': 'True'}),
+            'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'date_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'}),
+            'simulation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['budget.Simulation']"}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': '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']"})
+        },
+        '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', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'regime_travail_nb_heure_semaine': ('django.db.models.fields.DecimalField', [], {'default': '35.0', 'null': 'True', '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': "'+'", 'null': 'True', 'to': "orm['rh.Statut']"}),
+            'statut_residence': ('django.db.models.fields.CharField', [], {'default': "'local'", 'max_length': '10', 'null': 'True'}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'user_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.evenement': {
+            'Meta': {'object_name': 'Evenement'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', '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'}),
+            'dossier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'dossier'", 'to': "orm['rh.Dossier']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'simulation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['budget.Simulation']"}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', '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']"})
+        },
+        'budget.evenementremuneration': {
+            'Meta': {'object_name': 'EvenementRemuneration'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'commentaire': ('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_debut': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_fin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'devise': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'db_column': "'devise'", 'to': "orm['rh.Devise']"}),
+            'dossier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'budget_evenementremuneration_remunerations'", 'db_column': "'dossier'", 'to': "orm['rh.Dossier']"}),
+            'evenement': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'evenement'", 'to': "orm['rh.Evenement']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'montant': ('django.db.models.fields.FloatField', [], {'default': '0', 'null': 'True', 'blank': 'True'}),
+            'simulation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['budget.Simulation']"}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'type'", 'to': "orm['rh.TypeRemuneration']"}),
+            'type_revalorisation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'type_revalorisation'", 'to': "orm['rh.TypeRevalorisation']"}),
+            'user_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', 'null': 'True'}),
+            'autre_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'autre_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'classement_max': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'classement_max'", 'to': "orm['rh.Classement']"}),
+            'classement_min': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'classement_min'", 'to': "orm['rh.Classement']"}),
+            'comp_autre_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'comp_autre_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'comp_fonctionpub_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'comp_fonctionpub_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'comp_locale_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'comp_locale_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'comp_ong_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'comp_ong_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'comp_universite_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'comp_universite_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_debut': ('django.db.models.fields.DateField', [], {'null': 'True'}),
+            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_fin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateField', [], {'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': "'+'", 'null': 'True', 'db_column': "'devise_comparaison'", 'to': "orm['rh.Devise']"}),
+            'devise_max': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'null': 'True', 'db_column': "'devise_max'", 'to': "orm['rh.Devise']"}),
+            'devise_min': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'null': 'True', 'db_column': "'devise_min'", 'to': "orm['rh.Devise']"}),
+            'expatrie': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'implantation'", 'to': "orm['datamaster_modeles.Implantation']"}),
+            'indemn_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'indemn_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'justification': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'local': ('django.db.models.fields.NullBooleanField', [], {'default': 'True', 'null': 'True', 'blank': 'True'}),
+            'mise_a_disposition': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'nom_feminin': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
+            'regime_travail': ('django.db.models.fields.DecimalField', [], {'default': '100.0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'regime_travail_nb_heure_semaine': ('django.db.models.fields.DecimalField', [], {'default': '35.0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'responsable': ('django.db.models.fields.related.ForeignKey', [], {'default': '149', 'related_name': "'+'", 'null': 'True', 'db_column': "'responsable'", 'to': "orm['rh.Poste']"}),
+            'salaire_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'salaire_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'service': ('django.db.models.fields.related.ForeignKey', [], {'default': '1', 'related_name': "'+'", 'null': 'True', 'db_column': "'service'", 'to': "orm['rh.Service']"}),
+            'simulation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['budget.Simulation']"}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'type_poste': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'db_column': "'type_poste'", 'to': "orm['rh.TypePoste']"}),
+            'user_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.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': "'budget_financements'", 'db_column': "'poste'", 'to': "orm['rh.Poste']"}),
+            'pourcentage': ('django.db.models.fields.DecimalField', [], {'max_digits': '12', 'decimal_places': '2'}),
+            'simulation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['budget.Simulation']"}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '1'})
+        },
+        'budget.remuneration': {
+            'Meta': {'object_name': 'Remuneration'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'commentaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_debut': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_fin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'devise': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'db_column': "'devise'", 'to': "orm['rh.Devise']"}),
+            'dossier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'budget_remuneration_remunerations'", 'db_column': "'dossier'", 'to': "orm['rh.Dossier']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'montant': ('django.db.models.fields.FloatField', [], {'default': '0', 'null': 'True', 'blank': 'True'}),
+            'simulation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['budget.Simulation']"}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'type'", 'to': "orm['rh.TypeRemuneration']"}),
+            'type_revalorisation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'type_revalorisation'", 'to': "orm['rh.TypeRevalorisation']"}),
+            'user_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.simulation': {
+            'Meta': {'object_name': 'Simulation'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'budget.tauxchange': {
+            'Meta': {'object_name': 'TauxChange'},
+            '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', [], {'related_name': "'+'", 'db_column': "'devise'", 'to': "orm['rh.Devise']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'simulation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['budget.Simulation']"}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'taux': ('django.db.models.fields.FloatField', [], {}),
+            '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.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': "'+'", 'null': 'True', 'db_column': "'devise'", 'to': "orm['rh.Devise']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'budget_valeur_point'", 'db_column': "'implantation'", 'to': "orm['datamaster_modeles.Implantation']"}),
+            'simulation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['budget.Simulation']"}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', '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']"}),
+            'valeur': ('django.db.models.fields.FloatField', [], {'null': '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'})
+        },
+        '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', 'null': '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_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'}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': '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'}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', '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']"})
+        },
+        'rh.dossier': {
+            'Meta': {'object_name': 'Dossier'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'classement': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'classement'", 'to': "orm['rh.Classement']"}),
+            'date_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', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'regime_travail_nb_heure_semaine': ('django.db.models.fields.DecimalField', [], {'default': '35.0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'remplacement': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'statut': ('django.db.models.fields.related.ForeignKey', [], {'default': '3', 'related_name': "'+'", 'null': 'True', 'to': "orm['rh.Statut']"}),
+            'statut_residence': ('django.db.models.fields.CharField', [], {'default': "'local'", 'max_length': '10', 'null': 'True'}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'user_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'}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'tel_cellulaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'tel_domicile': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'user_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.evenement': {
+            'Meta': {'object_name': 'Evenement'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', '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'}),
+            'dossier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'dossier'", 'to': "orm['rh.Dossier']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', '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']"})
+        },
+        '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'}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', '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']"})
+        },
+        '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'}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': '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', 'null': 'True'}),
+            'autre_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'autre_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'classement_max': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'classement_max'", 'to': "orm['rh.Classement']"}),
+            'classement_min': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'classement_min'", 'to': "orm['rh.Classement']"}),
+            'comp_autre_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'comp_autre_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'comp_fonctionpub_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'comp_fonctionpub_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'comp_locale_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'comp_locale_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'comp_ong_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'comp_ong_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'comp_universite_max': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'comp_universite_min': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '12', 'decimal_places': '2', 'blank': 'True'}),
+            'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'date_debut': ('django.db.models.fields.DateField', [], {'null': 'True'}),
+            'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_fin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_modification': ('django.db.models.fields.DateField', [], {'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': "'+'", 'null': 'True', 'db_column': "'devise_comparaison'", 'to': "orm['rh.Devise']"}),
+            'devise_max': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'null': 'True', 'db_column': "'devise_max'", 'to': "orm['rh.Devise']"}),
+            'devise_min': ('django.db.models.fields.related.ForeignKey', [], {'default': '5', 'related_name': "'+'", 'null': 'True', 'db_column': "'devise_min'", 'to': "orm['rh.Devise']"}),
+            'expatrie': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'implantation'", 'to': "orm['datamaster_modeles.Implantation']"}),
+            'indemn_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'indemn_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'justification': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'local': ('django.db.models.fields.NullBooleanField', [], {'default': 'True', 'null': 'True', 'blank': 'True'}),
+            'mise_a_disposition': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'nom_feminin': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
+            'regime_travail': ('django.db.models.fields.DecimalField', [], {'default': '100.0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'regime_travail_nb_heure_semaine': ('django.db.models.fields.DecimalField', [], {'default': '35.0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'responsable': ('django.db.models.fields.related.ForeignKey', [], {'default': '149', 'related_name': "'+'", 'null': 'True', 'db_column': "'responsable'", 'to': "orm['rh.Poste']"}),
+            'salaire_max': ('django.db.models.fields.DecimalField', [], {'default': '0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'salaire_min': ('django.db.models.fields.DecimalField', [], {'default': '0', 'null': 'True', 'max_digits': '12', 'decimal_places': '2'}),
+            'service': ('django.db.models.fields.related.ForeignKey', [], {'default': '1', 'related_name': "'+'", 'null': 'True', 'db_column': "'service'", 'to': "orm['rh.Service']"}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'type_poste': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'db_column': "'type_poste'", 'to': "orm['rh.TypePoste']"}),
+            'user_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'}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', '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']"})
+        },
+        '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'}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', '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']"})
+        },
+        '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'}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', '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']"})
+        },
+        'rh.typeremuneration': {
+            'Meta': {'object_name': 'TypeRemuneration'},
+            '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'}),
+            'nature_remuneration': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'type_paiement': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
+            'user_creation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_creation'", 'to': "orm['auth.User']"}),
+            'user_desactivation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_desactivation'", 'to': "orm['auth.User']"}),
+            'user_modification': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'db_column': "'user_modification'", 'to': "orm['auth.User']"})
+        },
+        'rh.typerevalorisation': {
+            'Meta': {'object_name': 'TypeRevalorisation'},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'date_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'}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', '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']"})
+        },
+        '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': "'+'", 'null': 'True', 'db_column': "'devise'", 'to': "orm['rh.Devise']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rh_valeur_point'", 'db_column': "'implantation'", 'to': "orm['datamaster_modeles.Implantation']"}),
+            'supprime': ('django.db.models.fields.BooleanField', [], {'default': 'False', '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']"}),
+            'valeur': ('django.db.models.fields.FloatField', [], {'null': 'True'})
+        }
+    }
+    
+    complete_apps = ['budget']
index 1e6b00f..da4a4e6 100755 (executable)
@@ -1,9 +1,6 @@
 # -=- encoding: utf-8 -=-
 
-import inspect
-
 from django.db import models
-
 from rh import models as rh
 
 
@@ -63,6 +60,29 @@ class Simulation(models.Model):
                            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
+
     def xlate_dossier(self, d):
         if not d.poste.id in self.seen_models['poste']:
             raise ValueError(u'Données inconsistantes.')
@@ -115,6 +135,11 @@ class Poste(rh.Poste_):
     simulation = models.ForeignKey(Simulation)
 
 
+class PosteFinancement(rh.PosteFinancement_):
+    __doc__ = rh.PosteFinancement_.__doc__
+    simulation = models.ForeignKey(Simulation)
+
+
 class Remuneration(rh.Remuneration_):
     __doc__ = rh.Remuneration_.__doc__
     simulation = models.ForeignKey(Simulation)
index 9f487c7..7b247ff 100644 (file)
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
 
-from django.db.models import Q
+from django.db.models import Q, Max
 from django import forms
 from django.forms.models import inlineformset_factory
 from django.contrib.admin import widgets as admin_widgets 
@@ -28,27 +28,32 @@ def _implantation_choices(obj, request):
     return [('', '----------')] + [(i.id, unicode(i), )for i in ref.Implantation.objects.filter(q)]
 
 def _employe_choices(obj, request):
-    q = Q(id_rh__isnull=True) & Q(id_rh__isnull=True)
-
     # TRAITEMENT NORMAL
     employe = get_employe_from_user(request.user)
     # SERVICE
     if is_user_dans_services_centraux(request.user):
-        q_region_service = Q(implantation1=employe.implantation) | Q(implantation2=employe.implantation)
+        q_dae_region_service = Q(poste__implantation=employe.implantation)
+        q_rh_region_service = Q(implantation1=employe.implantation) | Q(implantation2=employe.implantation)
     # REGION
     else:
-        q_region_service = Q(implantation1__region=employe.implantation.region) | Q(implantation2__region=employe.implantation.region) 
+        q_dae_region_service = Q(poste__implantation__region=employe.implantation.region)
+        q_rh_region_service = Q(implantation1__region=employe.implantation.region) | Q(implantation2__region=employe.implantation.region) 
     # TRAITEMENT DRH
     if grp_drh in request.user.groups.all():
-        q_region_service = Q()
-
-    # Construction de la liste des employés en puisant dans DAE (pas d'info) et dans rh_v1
-    # Pour le filtrage par région/service, on est obligé d'aller regarder le dossier rh_v1
-    # car l'information dans le modèle rh_v1.Employe n'existe pas.
-    dae_ = dae.Employe.objects.filter(id_rh__isnull=True)
-    copies = dae.Employe.objects.filter(Q(id_rh__isnull=False))
+        q_dae_region_service = Q()
+        q_rh_region_service = Q()
+
+    # On filtre les employes avec les droits régionaux et on s'assure que c'est bien le dernier dossier en date pour sortir l'employe
+    # On retient un employé qui travaille présentement dans la même région que le user connecté.
+    dossiers_regionaux_ids = [d.id for d in dae.Dossier.objects.filter(q_dae_region_service)]
+    employes_ids = [d['employe'] for d in dae.Dossier.objects.values('employe').annotate(dernier_dossier=Max('id')) if d['dernier_dossier'] in dossiers_regionaux_ids]
+    dae_employe = dae.Employe.objects.filter(id__in=employes_ids)
+    dae_ = dae_employe.filter(id_rh__isnull=True)
+    copies = dae_employe.filter(Q(id_rh__isnull=False))
     id_copies = [p.id_rh_id for p in copies.all()]
-    employes_ids = list(set([d.employe_id for d in rh.Dossier.objects.filter(q_region_service)]))
+
+    dossiers_regionaux_ids = [d.id for d in rh.Dossier.objects.filter(q_rh_region_service)]
+    employes_ids = [d['employe'] for d in rh.Dossier.objects.values('employe').annotate(dernier_dossier=Max('id')) if d['dernier_dossier'] in dossiers_regionaux_ids]
     rhv1 = rh.Employe.objects.filter(id__in=employes_ids).exclude(id__in=id_copies)
 
     def option_label(employe):
index 47be29f..382d2d9 100644 (file)
@@ -378,7 +378,7 @@ class PostePiece(models.Model):
 
 class PosteComparaison(models.Model):
     poste = models.ForeignKey('Poste', related_name='comparaisons_internes')
-    implantation = models.ForeignKey(ref.Implantation, null=True, blank=True)
+    implantation = models.ForeignKey(ref.Implantation, null=True, blank=True, related_name="+")
     nom = models.CharField(verbose_name="Poste", max_length=255, null=True, blank=True)
     montant = models.IntegerField(null=True)
     devise = models.ForeignKey(rh.Devise, default=5, related_name='+', null=True, blank=True)
index 96d584c..259eb18 100644 (file)
@@ -1,3 +1,5 @@
+{% load dae %}
+
 <fieldset>
 <h2>Contrat</h2>
 <table>
     </tr>
     <tr>
         <td colspan="7">
+        {% if request.user|test_membre_drh %}
+            {{ form.instance.employe_anterieur }}{{ form.employe_anterieur }}
+        {% else %}
             {{ form.instance.employe_anterieur }}{{ form.employe_anterieur.as_hidden }}
+        {% endif %}
             {{ form.employe_anterieur.errors }}
         </td>
     </tr>
         <th></th>
     </tr>
     <tr>
-        <td>{{ form.instance.classement_titulaire_anterieur }}{{ form.classement_titulaire_anterieur.as_hidden }}<br />
-            {{ form.classement_titulaire_anterieur.errors }}
-        </td>
-        <td>{{ form.instance.salaire_titulaire_anterieur }}{{ form.salaire_titulaire_anterieur.as_hidden }}</td>
-        <td>{% comment %}${% endcomment %}</td>
-        <td>{% comment %}0.00{% endcomment %}</td>
-        <td>{% comment %}€{% endcomment %}</td>
-        <td>{{ form.instance.statut_titulaire_anterieur }}{{ form.statut_titulaire_anterieur.as_hidden }}</td>
+        {% if request.user|test_membre_drh %}
+            <td>{{ form.instance.classement_titulaire_anterieur }}
+                {{ form.classement_titulaire_anterieur }}<br />
+                {{ form.classement_titulaire_anterieur.errors }}
+            </td>
+            <td>{{ form.instance.salaire_titulaire_anterieur }}{{ form.salaire_titulaire_anterieur }}</td>
+            <td></td>
+            <td></td>
+            <td></td>
+            <td>{{ form.instance.statut_titulaire_anterieur }}{{ form.statut_titulaire_anterieur }}</td>
+        {% else %}
+            <td>{{ form.instance.classement_titulaire_anterieur }}
+                {{ form.classement_titulaire_anterieur.as_hidden }}<br />
+                {{ form.classement_titulaire_anterieur.errors }}
+            </td>
+            <td>{{ form.instance.salaire_titulaire_anterieur }}{{ form.salaire_titulaire_anterieur.as_hidden }}</td>
+            <td></td>
+            <td></td>
+            <td></td>
+            <td>{{ form.instance.statut_titulaire_anterieur }}{{ form.statut_titulaire_anterieur.as_hidden }}</td>
+        {% endif %}
         <td></td>
     </tr>
     <tr>
index 05a2197..02a50df 100644 (file)
@@ -5,6 +5,10 @@ from project.dae.workflow import grp_correspondants_rh, grp_administrateurs, grp
 register = template.Library()
 
 @register.filter
+def test_membre_drh(user):
+    return grp_drh in user.groups.all()
+
+@register.filter
 def peut_ajouter(user):
     for g in user.groups.all():
         if g in (grp_administrateurs, grp_correspondants_rh, grp_drh):
index 0c7f53f..1a763c0 100644 (file)
@@ -5,8 +5,8 @@ DEBUG=True
 TEMPLATE_DEBUG=DEBUG
 
 # Décommentez ces lignes pour activer la debugtoolbar
-INTERNAL_IPS = ('127.0.0.1',)
-INSTALLED_APPS += ('debug_toolbar',)
-MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',)
+#INTERNAL_IPS = ('127.0.0.1',)
+#INSTALLED_APPS += ('debug_toolbar',)
+#MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',)
 
 AUTH_PASSWORD_REQUIRED = False
index 570432c..d40bed1 100644 (file)
-# -*- encoding: utf-8 -*-
-
+# -*- encoding: utf-8 
 from django.contrib import admin
 from rh.models import *
 from rh.lib import *
 
+AyantDroitInline.model = AyantDroit
+AyantDroitCommentaireInline.model = AyantDroitCommentaire
+ContratInline.model = Contrat
+DossierROInline.model = Dossier
+DossierCommentaireInline.model = DossierCommentaire
+DossierPieceInline.model = DossierPiece
+EmployeInline.model = Employe
+EmployeCommentaireInline.model = EmployeCommentaire
+EmployePieceInline.model = EmployePiece
+EvenementInline.model = Evenement
+EvenementRemunerationInline.model = EvenementRemuneration
+PosteCommentaireInline.model = PosteCommentaire
+PosteFinancementInline.model = PosteFinancement
+PostePieceInline.model = PostePiece
+RemunerationInline.model = Remuneration
+TypePosteInline.model = TypePoste
 
-class CommentaireAdmin(admin.ModelAdmin):
-    pass
-
-class PosteAdmin(admin.ModelAdmin):
-    fieldsets = (
-        (None, {
-            'fields': ('nom', 'nom_feminin', 'implantation', 'type_poste',
-                       'service', 'responsable')
-        }),
-        ('Contrat', {
-            'fields': ('regime_travail', 'regime_travail_nb_heure_semaine')
-        }),
-        ('Recrutement', {
-            'fields': ('local', 'expatrie', 'mise_a_disposition', 'appel')
-        }),
-        ('Rémunération', {
-            'fields': ('classement_min', 'classement_max', 'valeur_point_min',
-                       'valeur_point_max', 'devise_min', 'devise_max',
-                       'salaire_min', 'salaire_max', 'indemn_min',
-                       'indemn_max', 'autre_min', 'autre_max')
-        }),
-        ('Comparatifs de rémunération', {
-            'fields': ('devise_comparaison', 'comp_locale_min',
-                       'comp_locale_max', 'comp_universite_min',
-                       'comp_universite_max', 'comp_fonctionpub_min',
-                       'comp_fonctionpub_max', 'comp_ong_min', 'comp_ong_max',
-                       'comp_autre_min', 'comp_autre_max')
-        }),
-        ('Justification', {
-            'fields': ('justification',)
-        }),
-        ('Autres Metadata', {
-            'fields': ('date_validation', 'date_debut', 'date_fin')
-        }),
-    )
-
-
-class PosteFinancementAdmin(admin.ModelAdmin):
-    pass
-
-class PostePieceAdmin(admin.ModelAdmin):
-    pass
-
-class PosteCommentaireAdmin(admin.ModelAdmin):
-    pass
-
-class EmployeAdmin(admin.ModelAdmin):
-    pass
-
-class EmployePieceAdmin(admin.ModelAdmin):
-    pass
-
-class EmployeCommentaireAdmin(admin.ModelAdmin):
-    pass
-
-class AyantDroitAdmin(admin.ModelAdmin):
-    pass
-
-class AyantDroitCommentaireAdmin(admin.ModelAdmin):
-    pass
-
-class DossierAdmin(admin.ModelAdmin):
-    list_display = ('_employe', '_poste')
-    
-    def _poste(self, dossier):
-        return unicode(dossier.poste.nom)
-    _poste.short_description = u'Poste'
-        
-    def _employe(self, dossier):
-        return unicode(dossier.employe)
-    _employe.short_description = u'Employé'
-    
-class DossierPieceAdmin(admin.ModelAdmin):
-    pass
-
-class DossierCommentaireAdmin(admin.ModelAdmin):
-    pass
-
-class RemunerationAdmin(admin.ModelAdmin):
-    pass
-
-class ContratAdmin(admin.ModelAdmin):
-    pass
-
-class EvenementAdmin(admin.ModelAdmin):
-    pass
-
-class EvenementRemunerationAdmin(admin.ModelAdmin):
-    pass
-
-class FamilleEmploiAdmin(admin.ModelAdmin):
-    pass
-
-class TypePosteAdmin(admin.ModelAdmin):
-    pass
-
-class TypeRemunerationAdmin(admin.ModelAdmin):
-    pass
-
-class TypeRevalorisationAdmin(admin.ModelAdmin):
-    pass
-
-class ServiceAdmin(admin.ModelAdmin):
-    pass
-
-class OrganismeBstgAdmin(admin.ModelAdmin):
-    pass
-
-class StatutAdmin(admin.ModelAdmin):
-    pass
-
-class ClassementAdmin(admin.ModelAdmin):
-    pass
-
-class TauxChangeAdmin(admin.ModelAdmin):
-    pass
-
-class ValeurPointAdmin(admin.ModelAdmin):
-    pass
-
-class DeviseAdmin(admin.ModelAdmin):
-    pass
-
-class TypeContratAdmin(admin.ModelAdmin):
-    pass
-
-class ResponsableImplantationAdmin(admin.ModelAdmin):
-    pass
-
-
-#admin.site.register(Commentaire, CommentaireAdmin)
-admin.site.register(Poste, PosteAdmin)
-#admin.site.register(PosteFinancement, PosteFinancementAdmin)
-#admin.site.register(PostePiece, PostePieceAdmin)
-#admin.site.register(PosteCommentaire, PosteCommentaireAdmin)
-admin.site.register(Employe, EmployeAdmin)
-#admin.site.register(EmployePiece, EmployePieceAdmin)
-#admin.site.register(EmployeCommentaire, EmployeCommentaireAdmin)
 admin.site.register(AyantDroit, AyantDroitAdmin)
 #admin.site.register(AyantDroitCommentaire, AyantDroitCommentaireAdmin)
+admin.site.register(Classement, ClassementAdmin)
+#admin.site.register(Commentaire, CommentaireAdmin)
+admin.site.register(Contrat, ContratAdmin)
+admin.site.register(Devise, DeviseAdmin)
 admin.site.register(Dossier, DossierAdmin)
-#admin.site.register(DossierPiece, DossierPieceAdmin)
 #admin.site.register(DossierCommentaire, DossierCommentaireAdmin)
-admin.site.register(Remuneration, RemunerationAdmin)
-admin.site.register(Contrat, ContratAdmin)
-admin.site.register(Evenement, EvenementAdmin)
-admin.site.register(EvenementRemuneration, EvenementRemunerationAdmin)
+#admin.site.register(DossierPiece, DossierPieceAdmin)
+admin.site.register(Employe, EmployeAdmin)
+#admin.site.register(EmployeCommentaire, EmployeCommentaireAdmin)
+#admin.site.register(EmployePiece, EmployePieceAdmin)
+#admin.site.register(Evenement, EvenementAdmin)
+#admin.site.register(EvenementRemuneration, EvenementRemunerationAdmin)
 admin.site.register(FamilleEmploi, FamilleEmploiAdmin)
+admin.site.register(OrganismeBstg, OrganismeBstgAdmin)
+admin.site.register(Poste, PosteAdmin)
+#admin.site.register(PosteCommentaire, PosteCommentaireAdmin)
+#admin.site.register(PosteFinancement, PosteFinancementAdmin)
+#admin.site.register(PostePiece, PostePieceAdmin)
+#admin.site.register(Remuneration, RemunerationAdmin)
+admin.site.register(ResponsableImplantation, ResponsableImplantationAdmin)
+admin.site.register(Service, ServiceAdmin)
+admin.site.register(Statut, StatutAdmin)  # FIXME: timeout in admin
+admin.site.register(TauxChange, TauxChangeAdmin)
+admin.site.register(TypeContrat, TypeContratAdmin)  # FIXME: timeout in admin
 admin.site.register(TypePoste, TypePosteAdmin)
 admin.site.register(TypeRemuneration, TypeRemunerationAdmin)
 admin.site.register(TypeRevalorisation, TypeRevalorisationAdmin)
-admin.site.register(Service, ServiceAdmin)
-admin.site.register(OrganismeBstg, OrganismeBstgAdmin)
-admin.site.register(Statut, StatutAdmin)
-admin.site.register(Classement, ClassementAdmin)
-admin.site.register(TauxChange, TauxChangeAdmin)
 admin.site.register(ValeurPoint, ValeurPointAdmin)
-admin.site.register(Devise, DeviseAdmin)
-admin.site.register(TypeContrat, TypeContratAdmin)
-admin.site.register(ResponsableImplantation, ResponsableImplantationAdmin)
index da6bf77..6d1b43e 100644 (file)
 # -*- encoding: utf-8 -*-
 
+from django.db import models
 from django.contrib import admin
+from auf.django.metadata.admin import AUFMetadataAdminMixin, AUFMetadataInlineAdminMixin, AUF_METADATA_READONLY_FIELDS
+from project.rh import models as rh
+
+# Inlines
+
+class ReadOnlyInlineMixin(object):
+    def get_readonly_fields(self, request, obj=None):
+        return [f.name for f in self.model._meta.fields if f.name not in AUF_METADATA_READONLY_FIELDS]
+
+
+class AyantDroitInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+    extra = 1
+
+
+class AyantDroitCommentaireInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
+    readonly_fields = ('owner', )
+    model = models.Model  # à remplacer dans admin.py
+    extra = 1
+
+
+class ContratInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+    extra = 1
+
+
+class DossierROInline(ReadOnlyInlineMixin, admin.TabularInline):
+    exclude = AUF_METADATA_READONLY_FIELDS
+    model = models.Model  # à remplacer dans admin.py
+
+
+class DossierCommentaireInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
+    readonly_fields = ('owner', )
+    model = models.Model  # à remplacer dans admin.py
+    extra = 1
+
+
+class DossierPieceInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+class EmployeInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+class EmployeCommentaireInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
+    readonly_fields = ('owner', )
+    model = models.Model  # à remplacer dans admin.py
+    extra = 1
+
+
+class EmployePieceInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+class EvenementInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+    extra = 1
+
+
+class EvenementRemunerationInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+    extra = 1
+
+
+class PosteCommentaireInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
+    readonly_fields = ('owner', )
+    model = models.Model  # à remplacer dans admin.py
+    extra = 1
+
+
+class PosteFinancementInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+class PostePieceInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+class RemunerationInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+    extra = 1
+
+
+class RemunerationROInline(ReadOnlyInlineMixin, RemunerationInline):
+    pass
+
+
+class TypePosteInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+# Admins
+
+class AyantDroitAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+    """
+    L'ajout d'un nouvel ayantdroit se fait dans l'admin de l'employé.
+    """
+    alphabet_filter = 'nom'
+    search_fields = ('nom', 'prenom', 'employe__nom', 'employe__prenom', )
+    list_display = ('_employe', 'lien_parente', '_ayantdroit', )
+    inlines = (AyantDroitCommentaireInline,)
+    readonly_fields = AUFMetadataAdminMixin.readonly_fields + ('employe',)
+    fieldsets = AUFMetadataAdminMixin.fieldsets + (
+        ("Lien avec l'employé", {
+            'fields': ('employe', 'lien_parente', )
+        }),
+
+        ('Identification', {
+            'fields': ('nom', 'prenom', 'nom_affichage', 'nationalite', 'date_naissance', 'genre', )
+        }),
+    )
+
+    def save_formset(self, request, form, formset, change):
+        super(AyantDroitAdmin, self).save_formset(request, form, formset, change)
+        instances = formset.save(commit=False)
+        for instance in instances:
+            if instance.__class__ == rh.AyantDroitCommentaire:
+                instance.owner = request.user
+            instance.save()
+        formset.save_m2m()
+
+    def _ayantdroit(self, obj):
+        return unicode(obj)
+    _ayantdroit.short_description = u'Ayant droit'
+
+    def _employe(self, obj):
+        return unicode(obj.employe)
+    _employe.short_description = u'Employé'
+
+    def has_add_permission(self, request):
+        return False
+
+class AyantDroitCommentaireAdmin(admin.ModelAdmin):
+    pass
+
+
+class ClassementAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+    fieldsets = AUFMetadataAdminMixin.fieldsets + (
+        (None, {
+            'fields': ('type', 'echelon', 'degre', 'coefficient',  )
+        }),
+    )
+
 
 
 class CommentaireAdmin(admin.ModelAdmin):
     pass
 
 
-class PosteAdmin(admin.ModelAdmin):
-    fieldsets = (
+class ContratAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+    alphabet_filter = 'dossier__employe__nom'
+    search_fields = ('dossier__employe__nom', 'dossier__employe__prenom', 'dossier__poste__nom', 'dossier__poste__nom_feminin', )
+    list_display = ('id', 'dossier', '_poste', )
+    fieldsets = AUFMetadataAdminMixin.fieldsets + (
+        (None, {
+            'fields': ('dossier', 'type_contrat', 'date_debut', 'date_fin', )
+        }),
+    )
+
+    def lookup_allowed(self, key, value):
+        if key in ('dossier__employe__nom__istartswith',  ):
+            return True
+
+    def _poste(self, obj):
+        return obj.dossier.poste
+    _poste.short_description = "Poste"
+
+
+class DeviseAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+    fieldsets = AUFMetadataAdminMixin.fieldsets + (
+        (None, {
+            'fields': ('code', 'nom', ),
+        }),
+    )
+
+
+class DossierAdmin(AUFMetadataAdminMixin, admin.ModelAdmin,):
+    alphabet_filter = 'employe__nom'
+    search_fields = ('employe__nom', 'employe__prenom', 'poste__nom', 'poste__nom_feminin')
+    list_display = ('_employe', '_poste', 'date_debut', 'date_fin', )
+    inlines = (DossierPieceInline, ContratInline,
+               RemunerationInline,
+               #EvenementInline,
+               DossierCommentaireInline,
+              )
+    fieldsets = AUFMetadataAdminMixin.fieldsets + (
+        ('Identification', {
+            'fields': ('employe', 'poste', 'statut', 'organisme_bstg',)
+        }),
+        ('Recrutement', {
+            'fields': ('remplacement', 'statut_residence', )
+        }),
+        ('Rémunération', {
+            'fields': ('classement', 'regime_travail', 'regime_travail_nb_heure_semaine',)
+        }),
+        ('Occupation du Poste par cet Employe', {
+            'fields': ('date_debut', 'date_fin', )
+        }),
+    )
+
+    def lookup_allowed(self, key, value):
+        if key in ('employe__nom__istartswith',  ):
+            return True
+
+
+    def _poste(self, dossier):
+        return unicode(dossier.poste.nom)
+    _poste.short_description = u'Poste'
+
+    def _employe(self, dossier):
+        return unicode(dossier.employe)
+    _employe.short_description = u'Employé'
+    
+    def save_formset(self, request, form, formset, change):
+        super(DossierAdmin, self).save_formset(request, form, formset, change)
+        instances = formset.save(commit=False)
+        for instance in instances:
+            if instance.__class__ == rh.DossierCommentaire:
+                instance.owner = request.user
+            instance.save()
+        formset.save_m2m()
+
+class DossierPieceAdmin(admin.ModelAdmin):
+    pass
+
+
+class DossierCommentaireAdmin(admin.ModelAdmin):
+    pass
+
+
+class EmployeAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+    alphabet_filter = 'nom'
+    search_fields = ('id', 'nom', 'prenom', 'nom_affichage', )
+    inlines = (AyantDroitInline,
+               DossierROInline,
+               EmployePieceInline,
+               EmployeCommentaireInline)
+    fieldsets = AUFMetadataAdminMixin.fieldsets + ( 
+        ('Identification', {
+            'fields': ('nom', 'prenom', 'nom_affichage', 'nationalite', 'date_naissance', 'genre', )
+        }),
+        ('Informations personnelles', {
+            'fields': ('situation_famille', 'date_entree', )
+        }),
+        ('Coordonnées', {
+            'fields': ('tel_domicile', 'tel_cellulaire', 'adresse', 'ville', 'province', 'code_postal', 'pays', )
+        }),
+        )
+
+    def save_formset(self, request, form, formset, change):
+        super(EmployeAdmin, self).save_formset(request, form, formset, change)
+        instances = formset.save(commit=False)
+        for instance in instances:
+            if instance.__class__ == rh.EmployeCommentaire:
+                instance.owner = request.user
+            instance.save()
+        formset.save_m2m()
+
+class EmployeCommentaireAdmin(admin.ModelAdmin):
+    pass
+
+
+class EmployePieceAdmin(admin.ModelAdmin):
+    pass
+
+
+class EvenementAdmin(admin.ModelAdmin):
+    inlines = (EvenementRemunerationInline,)
+
+
+class EvenementRemunerationAdmin(admin.ModelAdmin):
+    pass
+
+
+class FamilleEmploiAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+    inlines = (TypePosteInline,)
+    fieldsets = AUFMetadataAdminMixin.fieldsets + ( 
+        (None, {
+            'fields': ('nom', )
+        }),
+        )
+
+
+class OrganismeBstgAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+    search_fields = ('nom', )
+    list_display = ('nom', 'type', 'pays', )
+    inlines = (DossierROInline,)
+    fieldsets = AUFMetadataAdminMixin.fieldsets + ( 
+        (None, {
+            'fields': ('nom', 'type', 'pays', )
+        }),
+        )
+
+
+class PosteAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+    alphabet_filter = 'nom'
+    search_fields = ('nom', 'implantation__code', 'implantation__nom', 'implantation__region__code', 'implantation__region__nom', )
+    list_display = ('nom', 'implantation', 'service', 'type_poste', 'date_debut', 'date_fin', )
+    fieldsets = AUFMetadataAdminMixin.fieldsets + (
         (None, {
             'fields': ('nom', 'nom_feminin', 'implantation', 'type_poste',
                        'service', 'responsable')
@@ -40,84 +332,113 @@ class PosteAdmin(admin.ModelAdmin):
         }),
     )
 
+    inlines = (PosteFinancementInline,
+               PostePieceInline,
+               DossierROInline,
+               PosteCommentaireInline, )
 
-class PosteFinancementAdmin(admin.ModelAdmin):
-    pass
-
-class PostePieceAdmin(admin.ModelAdmin):
-    pass
+    def save_formset(self, request, form, formset, change):
+        instances = formset.save(commit=False)
+        for instance in instances:
+            if instance.__class__ == rh.PosteCommentaire:
+                instance.owner = request.user
+            instance.save()
+        formset.save_m2m()
 
 class PosteCommentaireAdmin(admin.ModelAdmin):
     pass
 
-class EmployeAdmin(admin.ModelAdmin):
-    pass
-
-class EmployePieceAdmin(admin.ModelAdmin):
-    pass
 
-class EmployeCommentaireAdmin(admin.ModelAdmin):
-    pass
-
-class AyantDroitAdmin(admin.ModelAdmin):
+class PosteFinancementAdmin(admin.ModelAdmin):
     pass
 
-class AyantDroitCommentaireAdmin(admin.ModelAdmin):
-    pass
 
-class DossierAdmin(admin.ModelAdmin):
-    pass
-
-class DossierPieceAdmin(admin.ModelAdmin):
+class PostePieceAdmin(admin.ModelAdmin):
     pass
 
-class DossierCommentaireAdmin(admin.ModelAdmin):
-    pass
 
 class RemunerationAdmin(admin.ModelAdmin):
     pass
 
-class ContratAdmin(admin.ModelAdmin):
-    pass
 
-class EvenementAdmin(admin.ModelAdmin):
-    pass
+class ResponsableImplantationAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+    fieldsets = AUFMetadataAdminMixin.fieldsets + ( 
+        (None, {
+            'fields': ('employe', 'implantation', ),
+        }),
+        )
+    
 
-class EvenementRemunerationAdmin(admin.ModelAdmin):
-    pass
+class ServiceAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+    list_display = ('nom', 'actif', )
+    fieldsets = AUFMetadataAdminMixin.fieldsets + ( 
+        (None, {
+            'fields': ('nom', ),
+        }),
+        )
 
-class FamilleEmploiAdmin(admin.ModelAdmin):
-    pass
+class StatutAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+    fieldsets = AUFMetadataAdminMixin.fieldsets + ( 
+        (None, {
+            'fields': ('code', 'nom', ),
+        }),
+        )
 
-class TypePosteAdmin(admin.ModelAdmin):
-    pass
+class TauxChangeAdmin(admin.ModelAdmin):
+    list_display = ('taux', 'devise', 'annee', )
+    list_filter = ('devise', )
+    fieldsets = AUFMetadataAdminMixin.fieldsets + ( 
+        (None, {
+            'fields': ('taux', 'devise', 'annee', ),
+        }),
+        )
 
-class TypeRemunerationAdmin(admin.ModelAdmin):
-    pass
+class TypeContratAdmin(admin.ModelAdmin):
+    inlines = (ContratInline,)
 
-class TypeRevalorisationAdmin(admin.ModelAdmin):
-    pass
 
-class ServiceAdmin(admin.ModelAdmin):
-    pass
+class TypePosteAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+    search_fields = ('nom', 'nom_feminin', )
+    list_display = ('nom', 'famille_emploi', )
+    list_filter = ('famille_emploi', )
+    fieldsets = AUFMetadataAdminMixin.fieldsets + ( 
+        (None, {
+            'fields': ('nom', 'nom_feminin', 'is_responsable', 'famille_emploi',  )
+        }),
+        )
 
-class OrganismeBstgAdmin(admin.ModelAdmin):
-    pass
 
-class StatutAdmin(admin.ModelAdmin):
-    pass
+class TypeRemunerationAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+    list_display = ('nom', 'type_paiement', 'nature_remuneration', )
+    #inlines = (RemunerationROInline,) utilité?
+    fieldsets = AUFMetadataAdminMixin.fieldsets + ( 
+        (None, {
+            'fields': ('nom', 'type_paiement', 'nature_remuneration', )
+        }),
+        )
 
-class ClassementAdmin(admin.ModelAdmin):
-    pass
 
-class TauxChangeAdmin(admin.ModelAdmin):
-    pass
+class TypeRevalorisationAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+    #inlines = (RemunerationROInline,) utilité?
+    fieldsets = AUFMetadataAdminMixin.fieldsets + ( 
+        (None, {
+            'fields': ('nom', )
+        }),
+        )
 
-class ValeurPointAdmin(admin.ModelAdmin):
-    pass
 
-class DeviseAdmin(admin.ModelAdmin):
-    pass
+class ValeurPointAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+    list_display = ('_devise_code', '_devise_nom', 'annee', 'valeur', )
+    fieldsets = AUFMetadataAdminMixin.fieldsets + ( 
+        (None, {
+            'fields': ('valeur', 'devise', 'implantation', 'annee', )
+        }),
+        )
 
-class TypeContratAdmin(admin.ModelAdmin):
-    pass
+    def _devise_code(self, obj):
+        return obj.devise.code
+    _devise_code.short_description = "Code de la devise"
+
+    def _devise_nom(self, obj):
+        return obj.devise.nom
+    _devise_nom.short_description = "Nom de la devise"
index 1090f9c..d48f1ad 100644 (file)
@@ -1,11 +1,10 @@
 # -=- encoding: utf-8 -=-
 
-import datetime
-
 from django.core.files.storage import FileSystemStorage
 from django.db import models
-import settings
-
+from django.conf import settings
+from auf.django.metadata.models import AUFMetadata
+from auf.django.metadata.managers import NoDeleteManager
 import datamaster_modeles.models as ref
 
 
@@ -27,30 +26,8 @@ def dossier_piece_dispatch(instance, filename):
     path = "dossier/%s/%s" % (instance.dossier_id, filename)
     return path
 
-# Abstracts
-class Metadata(models.Model):
-    """Méta-données AUF.
-    Metadata.actif = flag remplaçant la suppression.
-    actif == False : objet réputé supprimé.
-    """
-    actif = models.BooleanField(default=True)
-    date_creation = models.DateField(auto_now_add=True, null=True)
-    user_creation = models.ForeignKey('auth.User', 
-                            db_column='user_creation', related_name='+',
-                            null=True, blank=True)
-    date_modification = models.DateField(auto_now=True)
-    user_modification = models.ForeignKey('auth.User', 
-                            db_column='user_modification', related_name='+',
-                            null=True, blank=True)
-    date_desactivation = models.DateField(null=True, blank=True)
-    user_desactivation = models.ForeignKey('auth.User', 
-                            db_column='user_desactivation', related_name='+',
-                            null=True, blank=True)
-    
-    class Meta:
-        abstract = True
 
-class Commentaire(Metadata):
+class Commentaire(AUFMetadata):
     texte = models.TextField()
     owner = models.ForeignKey('auth.User', db_column='owner', related_name='+')
     
@@ -69,11 +46,18 @@ POSTE_APPEL_CHOICES = (
     ('externe', 'Externe'),
 )
 
-class Poste_(Metadata):
+class PosteManager(NoDeleteManager):
+    def get_query_set(self):
+        return super(PosteManager, self).get_query_set().select_related('implantation')
+
+class Poste_(AUFMetadata):
     """Un Poste est un emploi (job) à combler dans une implantation. 
     Un Poste peut être comblé par un Employe, auquel cas un Dossier est créé.
     Si on veut recruter 2 jardiniers, 2 Postes distincts existent.
     """
+
+    objects = PosteManager()
+
     # Identification
     nom = models.CharField(max_length=255, 
                             verbose_name="Titre du poste", )
@@ -85,34 +69,34 @@ class Poste_(Metadata):
     type_poste = models.ForeignKey('TypePoste', db_column='type_poste',
                             related_name='+',
                             null=True)
-    service = models.ForeignKey('Service', db_column='service', 
+    service = models.ForeignKey('Service', db_column='service', null=True,
                             related_name='+',
                             verbose_name="Direction/Service/Pôle support",
                             default=1)  # default = Rectorat
     responsable = models.ForeignKey('Poste', db_column='responsable', 
-                            related_name='+',
+                            related_name='+', null=True,
                             verbose_name="Poste du responsable",
                             default=149)    # default = Recteur
                                 
     # Contrat
     regime_travail = models.DecimalField(max_digits=12, decimal_places=2,
-                            default=REGIME_TRAVAIL_DEFAULT, 
+                            default=REGIME_TRAVAIL_DEFAULT, null=True,
                             verbose_name="Temps de travail", 
                             help_text="% du temps complet")
     regime_travail_nb_heure_semaine = models.DecimalField(max_digits=12,
-                            decimal_places=2,
+                            decimal_places=2, null=True,
                             default=REGIME_TRAVAIL_NB_HEURE_SEMAINE_DEFAULT,
                             verbose_name="Nb. heures par semaine")
 
     # Recrutement
-    local = models.BooleanField(verbose_name="Local", default=True, 
-                            blank=True)
-    expatrie = models.BooleanField(verbose_name="Expatrié", default=False, 
-                            blank=True)
-    mise_a_disposition = models.BooleanField(
+    local = models.NullBooleanField(verbose_name="Local", default=True, 
+                            null=True, blank=True)
+    expatrie = models.NullBooleanField(verbose_name="Expatrié", default=False, 
+                            null=True, blank=True)
+    mise_a_disposition = models.NullBooleanField(
                             verbose_name="Mise à disposition",
-                            default=False)
-    appel = models.CharField(max_length=10, 
+                            null=True, default=False)
+    appel = models.CharField(max_length=10, null=True,
                             verbose_name="Appel à candidature",
                             choices=POSTE_APPEL_CHOICES,
                             default='interne')
@@ -130,25 +114,25 @@ class Poste_(Metadata):
     valeur_point_max = models.ForeignKey('ValeurPoint', 
                             db_column='valeur_point_max', related_name='+', 
                             null=True, blank=True)
-    devise_min = models.ForeignKey('Devise', db_column='devise_min', 
+    devise_min = models.ForeignKey('Devise', db_column='devise_min', null=True,
                             related_name='+', default=5)
-    devise_max = models.ForeignKey('Devise', db_column='devise_max', 
+    devise_max = models.ForeignKey('Devise', db_column='devise_max', null=True,
                             related_name='+', default=5)
     salaire_min = models.DecimalField(max_digits=12, decimal_places=2,
-                            default=0)
+                            null=True, default=0)
     salaire_max = models.DecimalField(max_digits=12, decimal_places=2,
-                            default=0)
+                            null=True, default=0)
     indemn_min = models.DecimalField(max_digits=12, decimal_places=2,
-                            default=0)
+                            null=True, default=0)
     indemn_max = models.DecimalField(max_digits=12, decimal_places=2,
-                            default=0)
+                            null=True, default=0)
     autre_min = models.DecimalField(max_digits=12, decimal_places=2,
-                            default=0)
+                            null=True, default=0)
     autre_max = models.DecimalField(max_digits=12, decimal_places=2,
-                            default=0)
+                            null=True, default=0)
 
     # Comparatifs de rémunération
-    devise_comparaison = models.ForeignKey('Devise', 
+    devise_comparaison = models.ForeignKey('Devise', null=True,
                             db_column='devise_comparaison', 
                             related_name='+',
                             default=5)
@@ -178,7 +162,7 @@ class Poste_(Metadata):
 
     # Autres Metadata
     date_validation = models.DateTimeField(null=True, blank=True)   # de dae
-    date_debut = models.DateField(verbose_name="Date de début",
+    date_debut = models.DateField(verbose_name="Date de début", null=True,
                             help_text=HELP_TEXT_DATE)
     date_fin = models.DateField(verbose_name="Date de fin",
                             help_text=HELP_TEXT_DATE,
@@ -207,6 +191,10 @@ class Poste(Poste_):
     __doc__ = Poste_.__doc__
 
 
+class Poste(Poste_):
+    __doc__ = Poste_.__doc__
+
+
 POSTE_FINANCEMENT_CHOICES = (
     ('A', 'A - Frais de personnel'),
     ('B', 'B - Projet(s)-Titre(s)'),
@@ -260,7 +248,7 @@ class PosteComparaison(models.Model):
     De la même manière qu'un dossier, un poste peut-être comparé à un autre poste.
     """
     poste = models.ForeignKey('Poste', related_name='comparaisons_internes')
-    implantation = models.ForeignKey(ref.Implantation, null=True, blank=True, related_name='+')
+    implantation = models.ForeignKey(ref.Implantation, null=True, blank=True, related_name="+")
     nom = models.CharField(verbose_name="Poste", max_length=255, null=True, blank=True)
     montant = models.IntegerField(null=True)
     devise = models.ForeignKey("Devise", default=5, related_name='+', null=True, blank=True)
@@ -283,7 +271,7 @@ SITUATION_CHOICES = (
     ('M', 'Marié'),
 )
 
-class Employe(Metadata):
+class Employe(AUFMetadata):
     """Personne occupant ou ayant occupé un Poste. Un Employe aura autant de 
     Dossiers qu'il occupe ou a occupé de Postes.
     
@@ -372,7 +360,7 @@ LIEN_PARENTE_CHOICES = (
     ('Fils', 'Fils'),
 )
 
-class AyantDroit(Metadata):
+class AyantDroit(AUFMetadata):
     """Personne en relation avec un Employe.
     """
     # Identification
@@ -432,8 +420,7 @@ COMPTE_COMPTA_CHOICES = (
     ('aucun', 'Aucun'),
 )
 
-
-class Dossier_(Metadata):
+class Dossier_(AUFMetadata):
     """Le Dossier regroupe les informations relatives à l'occupation
     d'un Poste par un Employe. Un seul Dossier existe par Poste occupé
     par un Employe.
@@ -446,9 +433,9 @@ class Dossier_(Metadata):
     employe = models.ForeignKey('Employe', db_column='employe', 
                             related_name='+',
                             verbose_name="Employé")
-    poste = models.ForeignKey('Poste', db_column='poste', 
-                            related_name='+', editable=False)
-    statut = models.ForeignKey('Statut', related_name='+', default=3)
+    poste = models.ForeignKey('Poste', db_column='poste', related_name='+')
+    statut = models.ForeignKey('Statut', related_name='+', default=3,
+                            null=True)
     organisme_bstg = models.ForeignKey('OrganismeBstg', 
                             db_column='organisme_bstg',
                             related_name='+',
@@ -461,20 +448,20 @@ class Dossier_(Metadata):
     # Recrutement
     remplacement = models.BooleanField(default=False)
     statut_residence = models.CharField(max_length=10, default='local', 
-                            verbose_name="Statut",
+                            verbose_name="Statut", null=True,
                             choices=STATUT_RESIDENCE_CHOICES)
    
     # Rémunération
     classement = models.ForeignKey('Classement', db_column='classement', 
                             related_name='+',
                             null=True, blank=True)
-    regime_travail = models.DecimalField(max_digits=12, 
+    regime_travail = models.DecimalField(max_digits=12, null=True,
                             decimal_places=2,
                             default=REGIME_TRAVAIL_DEFAULT,
                             verbose_name="Régime de travail",
                             help_text="% du temps complet")
     regime_travail_nb_heure_semaine = models.DecimalField(max_digits=12,
-                            decimal_places=2, 
+                            decimal_places=2, null=True,
                             default=REGIME_TRAVAIL_NB_HEURE_SEMAINE_DEFAULT,
                             verbose_name="Nb. heures par semaine")
 
@@ -507,6 +494,11 @@ class Dossier(Dossier_):
     __doc__ = Dossier_.__doc__
 
 
+
+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.
@@ -531,7 +523,7 @@ class DossierCommentaire(Commentaire):
 
 ### RÉMUNÉRATION
     
-class RemunerationMixin(Metadata):
+class RemunerationMixin(AUFMetadata):
     # Identification
     dossier = models.ForeignKey('Dossier', db_column='dossier',
                         related_name='%(app_label)s_%(class)s_remunerations')
@@ -602,12 +594,20 @@ class Remuneration(Remuneration_):
 
 
 ### CONTRATS
+
+class ContratManager(NoDeleteManager):
+    def get_query_set(self):
+        return super(ContratManager, self).get_query_set().select_related('dossier', 'dossier__poste')
+
         
-class Contrat(Metadata):
+class Contrat(AUFMetadata):
     """Document juridique qui encadre la relation de travail d'un Employe
     pour un Poste particulier. Pour un Dossier (qui documente cette 
     relation de travail) plusieurs contrats peuvent être associés.
     """
+
+    objects = ContratManager()
+
     dossier = models.ForeignKey('Dossier', db_column='dossier', 
                             related_name='+')
     type_contrat = models.ForeignKey('TypeContrat', db_column='type_contrat', 
@@ -632,7 +632,7 @@ class Contrat(Metadata):
 
 ### ÉVÉNEMENTS
 
-class Evenement_(Metadata):
+class Evenement_(AUFMetadata):
     """Un Evenement sert à déclarer une situation temporaire (exceptionnelle) 
     d'un Dossier qui vient altérer des informations normales liées à un Dossier 
     (ex.: la Remuneration).
@@ -688,10 +688,17 @@ class EvenementRemuneration_(RemunerationMixin):
 class EvenementRemuneration(EvenementRemuneration_):
     __doc__ = EvenementRemuneration_.__doc__
 
+    class Meta:
+        abstract = True
+
+
+class EvenementRemuneration(EvenementRemuneration_):
+    __doc__ = EvenementRemuneration_.__doc__
+
 
 ### RÉFÉRENCES RH 
 
-class FamilleEmploi(Metadata):
+class FamilleEmploi(AUFMetadata):
     """Catégorie utilisée dans la gestion des Postes.
     Catégorie supérieure à TypePoste.
     """
@@ -705,7 +712,7 @@ class FamilleEmploi(Metadata):
     def __unicode__(self):
         return u'%s' % (self.nom)
 
-class TypePoste(Metadata):
+class TypePoste(AUFMetadata):
     """Catégorie de Poste.
     """
     nom = models.CharField(max_length=255)
@@ -741,7 +748,7 @@ NATURE_REMUNERATION_CHOICES = (
     ('Traitement', 'Traitement'),
 )
 
-class TypeRemuneration(Metadata):
+class TypeRemuneration(AUFMetadata):
     """Catégorie de Remuneration.
     """
     nom = models.CharField(max_length=255)
@@ -760,7 +767,7 @@ class TypeRemuneration(Metadata):
     def __unicode__(self):
         return u'%s' % (self.nom)
         
-class TypeRevalorisation(Metadata):
+class TypeRevalorisation(AUFMetadata):
     """Justification du changement de la Remuneration.
     (Actuellement utilisé dans aucun traitement informatique.)
     """
@@ -774,7 +781,7 @@ class TypeRevalorisation(Metadata):
     def __unicode__(self):
         return u'%s' % (self.nom)
     
-class Service(Metadata):
+class Service(AUFMetadata):
     """Unité administrative où les Postes sont rattachés.
     """
     nom = models.CharField(max_length=255)
@@ -793,7 +800,7 @@ TYPE_ORGANISME_CHOICES = (
     ('DET', 'Détachement'),
 )
 
-class OrganismeBstg(Metadata):
+class OrganismeBstg(AUFMetadata):
     """Organisation d'où provient un Employe mis à disposition (MAD) de 
     ou détaché (DET) à l'AUF à titre gratuit.
     
@@ -814,7 +821,7 @@ class OrganismeBstg(Metadata):
     def __unicode__(self):
         return u'%s (%s)' % (self.nom, self.get_type_display())
 
-class Statut(Metadata):
+class Statut(AUFMetadata):
     """Statut de l'Employe dans le cadre d'un Dossier particulier.
     """
     # Identification
@@ -841,7 +848,7 @@ TYPE_CLASSEMENT_CHOICES = (
 )
 
 
-class Classement_(Metadata):
+class Classement_(AUFMetadata):
     """Éléments de classement de la 
     "Grille générique de classement hiérarchique".
     
@@ -854,7 +861,8 @@ class Classement_(Metadata):
     type = models.CharField(max_length=10, choices=TYPE_CLASSEMENT_CHOICES)
     echelon = models.IntegerField(verbose_name="Échelon")
     degre = models.IntegerField(verbose_name="Degré")
-    coefficient = models.FloatField(default=0, verbose_name="Coéfficient")
+    coefficient = models.FloatField(default=0, verbose_name="Coéfficient",
+                                    null=True)
     # Méta
     # annee # au lieu de date_debut et date_fin
     commentaire = models.TextField(null=True, blank=True)
@@ -873,7 +881,7 @@ class Classement(Classement_):
     __doc__ = Classement_.__doc__
 
 
-class TauxChange_(Metadata):
+class TauxChange_(AUFMetadata):
     """Taux de change de la devise vers l'euro (EUR) 
     pour chaque année budgétaire.
     """
@@ -896,16 +904,23 @@ class TauxChange_(Metadata):
 class TauxChange(TauxChange_):
     __doc__ = TauxChange_.__doc__
 
+class ValeurPointManager(NoDeleteManager):
+    def get_query_set(self):
+        return super(ValeurPointManager, self).get_query_set().select_related('devise', 'implantation')
+
 
-class ValeurPoint_(Metadata):
+class ValeurPoint_(AUFMetadata):
     """Utile pour connaître, pour un Dossier, le salaire de base théorique lié 
     au classement dans la grille. La ValeurPoint s'obtient par l'implantation 
     du Poste de ce Dossier : dossier.poste.implantation (pseudo code).
 
     salaire de base = coefficient * valeur du point de l'Implantation du Poste
     """
-    valeur = models.FloatField()
-    devise = models.ForeignKey('Devise', db_column='devise', 
+    
+    objects = ValeurPointManager()
+
+    valeur = models.FloatField(null=True)
+    devise = models.ForeignKey('Devise', db_column='devise', null=True,
                             related_name='+', default=5)
     implantation = models.ForeignKey(ref.Implantation, 
                             db_column='implantation',
@@ -914,11 +929,24 @@ class ValeurPoint_(Metadata):
     annee = models.IntegerField()
 
     class Meta:
+        ordering = ['-annee', 'implantation__nom']
         abstract = True
-        ordering = ['annee']
         verbose_name = "Valeur du point"
         verbose_name_plural = "Valeurs du point"
 
+    # TODO : cette fonction n'était pas présente dans la branche dev, utilité?
+    def get_tauxchange_courant(self):
+        """
+        Recherche le taux courant associé à la valeur d'un point.
+        Tous les taux de l'année courante sont chargés, pour optimiser un
+        affichage en liste. (On pourrait probablement améliorer le manager pour
+        lui greffer le taux courant sous forme de JOIN)
+        """
+        for tauxchange in self.tauxchange:
+            if tauxchange.implantation_id == self.implantation_id:
+                return tauxchange
+        return None
+
     def __unicode__(self):
         return u'%s %s (%s)' % (self.valeur, self.devise, self.annee)
 
@@ -927,7 +955,7 @@ class ValeurPoint(ValeurPoint_):
     __doc__ = ValeurPoint_.__doc__
 
 
-class Devise(Metadata):
+class Devise(AUFMetadata):
     """Devise monétaire.
     """
     code =  models.CharField(max_length=10, unique=True)
@@ -941,7 +969,7 @@ class Devise(Metadata):
     def __unicode__(self):
         return u'%s - %s' % (self.code, self.nom)
 
-class TypeContrat(Metadata):
+class TypeContrat(AUFMetadata):
     """Type de contrat.
     """
     nom = models.CharField(max_length=255)
@@ -958,7 +986,7 @@ class TypeContrat(Metadata):
         
 ### AUTRES
 
-class ResponsableImplantation(Metadata):
+class ResponsableImplantation(AUFMetadata):
     """Le responsable d'une implantation. 
     Anciennement géré sur le Dossier du responsable.
     """
diff --git a/project/rh/templates/admin/rh/change_list.html b/project/rh/templates/admin/rh/change_list.html
new file mode 100644 (file)
index 0000000..333da8d
--- /dev/null
@@ -0,0 +1,9 @@
+{% extends "alphafilter/change_list.html" %}
+
+{% block extrastyle %}
+{{block.super}}
+    <style type="text/css" media="screen">
+    .change-list ul.alphabetfilter li:first-child {width: 2em; }
+    </style>
+{% endblock %}
+
index 75ad500..f496e56 100644 (file)
@@ -65,11 +65,12 @@ INSTALLED_APPS = (
     'ajax_select',
     'south',
     'reversion',
-    #'project.rh', 
+    'project.rh', 
     'auf.django.workflow',
     'project.rh_v1',
     'project.dae',
-    'project.budget', 
+    #'project.budget',
+    'alphafilter',
     'project.recrutement',
     'form_utils',
     'tinymce',