poste PDF
[auf_rh_dae.git] / project / dae / views.py
index b534850..1f881ea 100644 (file)
@@ -1,6 +1,8 @@
 # -*- encoding: utf-8 -*-
 
+import os
 import datetime
+import StringIO
 from collections import defaultdict
 from datetime import date
 from simplejson import dumps
@@ -9,10 +11,13 @@ import warnings
 from django.core.urlresolvers import reverse
 from django.http import Http404, HttpResponse, HttpResponseGone
 from django.shortcuts import redirect, render_to_response, get_object_or_404
-from django.template import RequestContext
+from django.template import Context, RequestContext
+from django.template.loader import get_template
 from django.contrib import messages
+from django.conf import settings
 
 from reversion.models import Version
+import ho.pisa as pisa
 
 from project.dae import models as dae
 from project.rh_v1 import models as rh
@@ -23,6 +28,28 @@ from decorators import dae_groupe_requis, \
                        employe_dans_ma_region_ou_service
 from forms import *
 
+pisa.showLogging()
+
+def reponse_pdf(template_src, context_dict):
+    """
+    Générer une réponse HTTP avec un PDF
+    """
+    css = ""
+    for f in ('css/pdf.css', 'css/dae.css'):
+        css_file = os.path.join(settings.MEDIA_ROOT, f)
+        css += open(css_file, 'r').read()
+    context_dict['css'] = css
+
+    template = get_template(template_src)
+    context = Context(context_dict)
+    html  = template.render(context)
+    result = StringIO.StringIO()
+    pdf = pisa.pisaDocument(html, result, encoding='UTF-8')
+    if not pdf.err:
+        return HttpResponse(result.getvalue(), mimetype='application/pdf')
+    return HttpResponse("impossible de générer le pdf! %s" % html)
+
+
 @dae_groupe_requis
 def index(request):
     return render_to_response('dae/index.html', {}, RequestContext(request))
@@ -43,7 +70,16 @@ def poste_consulter(request, key):
         validationForm = PosteWorkflowForm(instance=poste, request=request)
     
     vars = {'poste' : poste, 'validationForm' : validationForm, }
-    return render_to_response('dae/poste_consulter.html', vars, RequestContext(request))
+
+
+    mode = request.GET.get('mode', None)
+    if mode is None:
+        return render_to_response('dae/poste_consulter.html', vars, RequestContext(request))
+    if mode == 'pdf':
+        return reponse_pdf('dae/poste_pdf.html', vars)
+    if mode == 'vpdf':
+        return render_to_response('dae/poste_pdf.html', vars, RequestContext(request))
+
 
 @dae_groupe_requis
 @poste_dans_ma_region_ou_service