Mercurial > odfcast
changeset 4:46f31348fe01
Implement a TemplateConvertView to allow convert odt templates with variable
substitution
author | Björn Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Fri, 26 Sep 2014 15:35:21 +0200 |
parents | 15807d87930c |
children | f804af69b783 |
files | odfcast/convert.py |
diffstat | 1 files changed, 29 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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)