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)
1  2 
buildout.cfg
project/rh/models.py
project/settings.py

diff --combined buildout.cfg
@@@ -34,7 -34,7 +34,7 @@@ django-admin-tools = 0.4.
  django = 1.2.5
  south = 0.7
  auf.django.skin = 0.15dev
- auf.django.auth = 0.5.2dev
+ auf.django.auth = 0.5.4dev
  django-reversion = 1.3.3
  auf.django.workflow = 0.14dev
  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 
diff --combined project/rh/models.py
@@@ -31,10 -31,9 +31,10 @@@ def dossier_piece_dispatch(instance, fi
  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='+',
@@@ -208,10 -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)'),
@@@ -260,6 -255,18 +260,18 @@@ class PostePiece(models.Model)
      def __unicode__(self):
          return u'%s' % (self.nom)
  
+ 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)
+     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)
+     montant_euros = models.IntegerField(null=True)
  class PosteCommentaire(Commentaire):
      poste = models.ForeignKey('Poste', db_column='poste', related_name='+')
  
@@@ -425,6 -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é
@@@ -499,11 -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.
@@@ -685,13 -688,6 +697,13 @@@ class EvenementRemuneration_(Remunerati
  class EvenementRemuneration(EvenementRemuneration_):
      __doc__ = EvenementRemuneration_.__doc__
  
 +    class Meta:
 +        abstract = True
 +
 +
 +class EvenementRemuneration(EvenementRemuneration_):
 +    __doc__ = EvenementRemuneration_.__doc__
 +
  
  ### RÉFÉRENCES RH 
  
@@@ -918,25 -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)
  
diff --combined project/settings.py
@@@ -27,7 -27,7 +27,7 @@@ PRIVE_MEDIA_ROOT = os.path.join(os.path
  # trailing slash if there is a path component (optional in other cases).
  # Examples: "http://media.lawrence.com", "http://example.com/media/"
  MEDIA_URL = '/media/'
- PRIVE_MEDIA_URL = '/prive/'
+ PRIVE_MEDIA_URL = '/dae/prive/'
  
  
  # URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
@@@ -65,7 -65,7 +65,7 @@@ INSTALLED_APPS = 
      'ajax_select',
      'south',
      'reversion',
 -    #'project.rh', 
 +    'project.rh', 
      'auf.django.workflow',
      'project.rh_v1',
      'project.dae',
@@@ -88,6 -88,7 +88,7 @@@ AUTHENTICATION_BACKENDS = 
      'auf.django.auth.backends.CascadeBackend',
  )
  LOGIN_URL = "/connexion"
+ LOGIN_REDIRECT_URL = "/"
  
  TEMPLATE_LOADERS = (
      'django.template.loaders.filesystem.load_template_source',
@@@ -104,4 -105,5 +105,5 @@@ ADMIN_TOOLS_INDEX_DASHBOARD = 'project.
  AJAX_LOOKUP_CHANNELS = {
      'responsables' : ('dae.catalogues', 'Responsable'),
      'dossiers' : ('dae.catalogues', 'Dossier'),
+     'postes' : ('dae.catalogues', 'Poste'),
  }