poste dae -> poste rh
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 17 Jan 2012 21:43:30 +0000 (16:43 -0500)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 17 Jan 2012 21:43:30 +0000 (16:43 -0500)
project/dae/models.py
project/dae/templates/dae/poste_resume.html
project/rh/lib.py
project/rh/models.py
project/rh/urls.py
project/rh/views.py
project/settings.py

index 56f63f4..cfba8db 100644 (file)
@@ -71,6 +71,35 @@ class Poste(PosteWorkflow, rh.Poste_):
         rh_poste = rh.Poste()
         # Faire une copie profonde de l'objet.
         # PosteFinancement, PosteComparaison, Remun modele a ajuster...
+
+        def copy_model(src, dst, exclude=[]):
+            keys = [f.name for f in src._meta.fields if f.name not in ['id', ] + exclude]
+            for k in keys:
+                setattr(dst, k, getattr(src, k))
+            return dst
+        
+        rh_poste = copy_model(self, rh_poste)
+        rh_poste.save()
+        print rh_poste.id
+
+        for o in self.dae_financements.all():
+            rh_financement = rh.PosteFinancement()
+            rh_financement = copy_model(o, rh_financement, exclude=['poste',])
+            rh_financement.poste = rh_poste
+            rh_financement.save()
+
+        for o in self.dae_pieces.all():
+            rh_piece = rh.PostePiece()
+            rh_piece = copy_model(o, rh_piece, exclude=['poste',])
+            rh_piece.poste = rh_poste
+            rh_piece.save()
+
+        for o in self.dae_comparaisons_internes.all():
+            rh_comp = rh.PosteComparaison()
+            rh_comp = copy_model(o, rh_financement, exclude=['poste',])
+            rh_comp.poste = rh_poste
+            rh_comp.save()
+
         return rh_poste
 
     def _get_key(self):
index d8501e6..bd479c8 100644 (file)
 <fieldset>
 <h2>Pièces jointes</h2>
 <ul>
-{% for pj in poste.postepiece_set.all %}
+{% for pj in poste.dae_pieces.all %}
     <li><a href="{% url poste_piece pj.id pj.fichier.name|basename %}">{{ pj.nom }}</a></li>
 {% endfor %}
 </ul>
 <fieldset>
   <h2>Financement</h2>
 
-  {% if poste.financements.count > 0 %}
+  {% if poste.dae_financements.count > 0 %}
   <table>
     <thead>
       <tr>
       </tr>
     </thead>
     <tbody>
-      {% for f in poste.financements.all %}
+      {% for f in poste.dae_financements.all %}
       <tr>
         <td>{{ f.get_type_display }}</td>
         <td>{{ f.pourcentage|floatformat:0 }} %</td>
index 82aa226..44c092f 100644 (file)
@@ -580,7 +580,7 @@ class PosteFinancementAdmin(admin.ModelAdmin):
 
 
 class PostePieceAdmin(admin.ModelAdmin):
-    pass
+    fk_name = 'poste'
 
 
 class RemunerationAdmin(admin.ModelAdmin):
index 77a201d..d8cd318 100644 (file)
@@ -241,7 +241,7 @@ class PosteFinancement_(models.Model):
         ordering = ['type']
         
     def __unicode__(self):
-        return u'%s : %s %' % (self.type, self.pourcentage)
+        return u'%s : %s %%' % (self.type, self.pourcentage)
 
 
 class PosteFinancement(PosteFinancement_):
index 17e2d13..b9bc4a4 100644 (file)
@@ -10,4 +10,5 @@ urlpatterns = patterns(
     url(r'^admin/rh/dossier/(\d+)/apercu/$', 'dossier_apercu', name='dossier_apercu'),
     url(r'^admin/rh/employe/(\d+)/apercu/$', 'employe_apercu', name='employe_apercu'),
     url(r'^admin/rh/poste/(\d+)/apercu/$', 'poste_apercu', name='poste_apercu'),
+    url(r'^prive/(.*)$', 'poste_piece'),
 )
index 973f481..86e66c2 100644 (file)
@@ -6,6 +6,7 @@ from django.contrib.auth.decorators import login_required
 from django.utils.encoding import smart_str
 from django.shortcuts import redirect, render_to_response, get_object_or_404
 from django.template import RequestContext
+from sendfile import sendfile
 
 from datamaster_modeles import models as ref
 from project.lib import get_employe_from_id
@@ -13,6 +14,15 @@ from project.lib import get_employe_from_id
 from rh import models as rh
 from rh.lib import calc_remun
 
+@login_required
+def poste_piece(request, filename):
+    """Téléchargement d'une pièce jointe à un poste."""
+    piece = get_object_or_404(rh.PostePiece, fichier=filename)
+    if rh.Poste.objects.ma_region_ou_service(request.user).filter(id=piece.poste_id).exists():
+        return sendfile(request, piece.fichier.path)
+    else:
+        return redirect_interdiction(request)
+
 # homes
 @login_required
 def profil(request):
index 8f1e771..7504eb9 100644 (file)
@@ -34,7 +34,7 @@ PRIVE_MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'media_prive')
 # 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 = '/dae/prive/'
+PRIVE_MEDIA_URL = '/rh/prive/'
 OE_PRIVE_MEDIA_URL = '/recrutement/prive/'