# HG changeset patch # User Björn Ricks # Date 1411738521 -7200 # Node ID 46f31348fe012e9fe9af1b00f1840ceb6b5fba16 # Parent 15807d87930ce2e3e1f3f6c619cdca7e83bd7fea Implement a TemplateConvertView to allow convert odt templates with variable substitution diff -r 15807d87930c -r 46f31348fe01 odfcast/convert.py --- a/odfcast/convert.py Fri Sep 26 15:34:46 2014 +0200 +++ b/odfcast/convert.py Fri Sep 26 15:35:21 2014 +0200 @@ -2,9 +2,11 @@ import tempfile -from flask import request, Response +from flask import request, Response, json from flask.views import MethodView +from py3o.template import Template + ALLOWED_FORMATS = ["pdf", "doc", "docx", "odt"] MIMETYPES = { @@ -58,3 +60,29 @@ def get_mimetype_for_format(self, fformat): return MIMETYPES.get(fformat, DEFAULT_MIMETYPE) + + +class TemplateConvertView(ConvertView): + + def post(self): + ffile = request.files['file'] + fformat = request.form['format'] + datadict = self.get_datadict() + + if not self.is_format_supported(fformat): + return "Format %s not allowed" % fformat, 401 + + tfile = self.save_form_file(ffile) + outfile = tempfile.NamedTemporaryFile() + t = Template(tfile, outfile.name) + t.render(datadict) + + if fformat != "odt": + outfile = self.convert(outfile, fformat) + + mimetype = self.get_mimetype_for_format(fformat) + return Response(outfile, mimetype=mimetype) + + def get_datadict(self): + vars = request.form['datadict'] + return json.loads(vars)