Merge branch 'dev' into rh
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 6 Jun 2011 14:01:01 +0000 (10:01 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 6 Jun 2011 14:01:01 +0000 (10:01 -0400)
buildout.cfg
project/budget/admin.py
project/budget/models.py
project/rh/admin.py
project/rh/models.py
project/settings.py

index 2f94e8c..175a5d9 100644 (file)
@@ -43,6 +43,11 @@ django-ajax-selects = 1.1.4
 #pyPDF = 1.13
 #pisa = 3.0.33
 
+#reportlab = 2.5
+#html5lib = 0.90
+#pyPDF = 1.13
+#pisa = 3.0.33
+
 [django] 
 recipe = auf.recipe.django
 wsgi=true 
index 5338b9b..fb2eb1c 100644 (file)
@@ -2,14 +2,26 @@
 
 from django.contrib import admin
 
+<<<<<<< HEAD
+from rh.admin import (DossierAdmin, EvenementAdmin, EvenementRemunerationAdmin,
+                      PosteAdmin, PosteFinancementAdmin, RemunerationAdmin)
+from models import *
+
+=======
 from budget.models import *
 from rh.lib import *
 
 admin.site.register(Classement, ClassementAdmin)
+>>>>>>> dev
 admin.site.register(Dossier, DossierAdmin)
 admin.site.register(Evenement, EvenementAdmin)
 admin.site.register(EvenementRemuneration, EvenementRemunerationAdmin)
 admin.site.register(Poste, PosteAdmin)
+<<<<<<< HEAD
+admin.site.register(PosteFinancement, PosteFinancementAdmin)
+admin.site.register(Remuneration, RemunerationAdmin)
+=======
 admin.site.register(Remuneration, RemunerationAdmin)
 admin.site.register(ValeurPoint, ValeurPointAdmin)
 admin.site.register(TauxChange, TauxChangeAdmin)
+>>>>>>> dev
index 1e6b00f..6c40b51 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.')
@@ -94,7 +114,6 @@ class Classement(rh.Classement_):
     __doc__ = rh.Classement_.__doc__
     simulation = models.ForeignKey(Simulation)
 
-
 class Dossier(rh.Dossier_):
     __doc__ = rh.Dossier_.__doc__
     simulation = models.ForeignKey(Simulation)
@@ -115,6 +134,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 570432c..7f4b662 100644 (file)
@@ -5,9 +5,11 @@ from rh.models import *
 from rh.lib import *
 
 
+
 class CommentaireAdmin(admin.ModelAdmin):
     pass
 
+
 class PosteAdmin(admin.ModelAdmin):
     fieldsets = (
         (None, {
index e991319..820f50b 100644 (file)
@@ -31,9 +31,10 @@ def dossier_piece_dispatch(instance, filename):
 class Metadata(models.Model):
     """Méta-données AUF.
     Metadata.actif = flag remplaçant la suppression.
-    actif == False : objet réputé supprimé.
+    supprime == True : objet réputé supprimé.
     """
     actif = models.BooleanField(default=True)
+    supprime = models.BooleanField(default=False)
     date_creation = models.DateField(auto_now_add=True)
     user_creation = models.ForeignKey('auth.User', 
                             db_column='user_creation', related_name='+',
@@ -207,6 +208,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)'),
@@ -432,7 +437,6 @@ COMPTE_COMPTA_CHOICES = (
     ('aucun', 'Aucun'),
 )
 
-
 class Dossier_(Metadata):
     """Le Dossier regroupe les informations relatives à l'occupation
     d'un Poste par un Employe. Un seul Dossier existe par Poste occupé
@@ -507,6 +511,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.
@@ -688,6 +697,13 @@ class EvenementRemuneration_(RemunerationMixin):
 class EvenementRemuneration(EvenementRemuneration_):
     __doc__ = EvenementRemuneration_.__doc__
 
+    class Meta:
+        abstract = True
+
+
+class EvenementRemuneration(EvenementRemuneration_):
+    __doc__ = EvenementRemuneration_.__doc__
+
 
 ### RÉFÉRENCES RH 
 
@@ -914,11 +930,25 @@ 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)
 
index ffa3803..9afabae 100644 (file)
@@ -65,7 +65,7 @@ INSTALLED_APPS = (
     'ajax_select',
     'south',
     'reversion',
-    #'project.rh', 
+    'project.rh', 
     'auf.django.workflow',
     'project.rh_v1',
     'project.dae',