]> git.parisson.com Git - teleforma.git/commitdiff
add pdf response functions
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Wed, 3 Feb 2016 23:15:50 +0000 (00:15 +0100)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Wed, 3 Feb 2016 23:15:50 +0000 (00:15 +0100)
teleforma/templates/registration/registration_pdf.html
teleforma/urls.py
teleforma/views/core.py
teleforma/views/crfpa.py

index 8d47c789517053f61805a4786e0972a8d7d77d59..f826136cb74ca44dd384b20e82d08d5e69399c95 100644 (file)
@@ -44,9 +44,9 @@
           Je certifie avoir pris connaissance des conditions générales d’inscription et du règlement intérieur.
       </td>
       <td>
-          A ...................................., le .......................................
+          <p>A ...................................., le .......................................</p>
           <br>
-          Signature
+          <p>Signature</p>
       </td></tr>
     </table>
 
index 2a4498194567a3e5a8ea5fe9184b2a8affd93b5f..d66ad50c082926349e958a6135511298250beda8 100644 (file)
@@ -58,7 +58,7 @@ urlpatterns = patterns('',
     # (r'^accounts/register0/$', RegistrationView.as_view(), {'form_class':CustomRegistrationForm}),
     url(r'^accounts/register/$', UserAddView.as_view(), name="teleforma-register"),
     url(r'^accounts/complete/$', UserCompleteView.as_view(), name="teleforma-register-complete"),
-    url(r'^accounts/register/(?P<pk>.*)/download/$', RegistrationPDFViewDowload.as_view(),
+    url(r'^accounts/register/(?P<pk>.*)/download/$', RegistrationPDFViewDownload.as_view(),
                                                     name="teleforma-registration-download"),
 
     url(r'^captcha/', include('captcha.urls')),
index c31b65714658a60d8c58c643913bf292fe3880ef..11cb9a9638ade8477b86f08cffae9d011479ef8e 100644 (file)
@@ -191,6 +191,42 @@ def get_default_period(periods):
         return Period.objects.get(id=getattr(settings, 'TELEFORMA_PERIOD_DEFAULT_ID', 1))
 
 
+def content_to_pdf(content, dest, encoding='utf-8', **kwargs):
+    """
+    Write into *dest* file object the given html *content*.
+    Return True if the operation completed successfully.
+    """
+    from xhtml2pdf import pisa
+    src = StringIO(content.encode(encoding))
+    pdf = pisa.pisaDocument(src, dest, encoding=encoding, **kwargs)
+    return not pdf.err
+
+def content_to_response(content, filename=None):
+    """
+    Return a pdf response using given *content*.
+    """
+    response = HttpResponse(content, mimetype='application/pdf')
+    if filename is not None:
+        response['Content-Disposition'] = 'attachment; filename=%s' % filename
+    return response
+
+def render_to_pdf(request, template, context, filename=None, encoding='utf-8',
+    **kwargs):
+    """
+    Render a pdf response using given *request*, *template* and *context*.
+    """
+    if not isinstance(context, Context):
+        context = RequestContext(request, context)
+
+    content = loader.render_to_string(template, context)
+    buffer = StringIO()
+
+    succeed = content_to_pdf(content, buffer, encoding, **kwargs)
+    if succeed:
+        return content_to_response(buffer.getvalue(), filename)
+    return HttpResponse('Errors rendering pdf:<pre>%s</pre>' % escape(content))
+
+
 class HomeRedirectView(View):
 
     def get(self, request):
index 98a155595605dfba79d0651528fdeacd50f13e91..4015178875208f3567069419c32293ec5867b18a 100644 (file)
@@ -441,12 +441,12 @@ class RegistrationPDFView(PDFTemplateResponseMixin, DetailView):
         return context
 
 
-class RegistrationPDFViewDowload(RegistrationPDFView):
+class RegistrationPDFViewDownload(RegistrationPDFView):
 
     pdf_filename = 'registration.pdf'
 
     def get_pdf_filename(self):
-        super(RegistrationPDFViewDowload, self).get_pdf_filename()
+        super(RegistrationPDFViewDownload, self).get_pdf_filename()
         student = self.context['student']
         prefix = unicode(_('Registration'))
         filename = '_'.join([prefix, student.user.first_name, student.user.last_name])