Mercurial > odfcast > odfcast
diff odfcast/convert.py @ 30:9d65de2ebe22
Merge TemplateConvertView into ConvertView
Also improve temporary file handling.
author | Björn Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Thu, 16 Oct 2014 10:34:43 +0200 |
parents | 1dadc59c4b9a |
children | 83bca7dc9bfe |
line wrap: on
line diff
--- a/odfcast/convert.py Thu Oct 16 10:03:32 2014 +0200 +++ b/odfcast/convert.py Thu Oct 16 10:34:43 2014 +0200 @@ -49,14 +49,25 @@ if not self.is_format_supported(fformat): return "Format %s not allowed" % fformat, 401 + datadict = self.get_datadict() + mimetype = self.get_mimetype_for_format(fformat) - infile = self.save_form_file(ffile) - try: - outfile = self.convert(infile, fformat) - except: - log.exception("Conversion error") - return "Conversion error", 500 + outfile = self.save_form_file(ffile) + + if datadict: + tfile = tempfile.NamedTemporaryFile() + t = Template(outfile, tfile) + t.render(datadict) + outfile.close() + outfile = tfile + + if format != "odt": + try: + outfile = self.convert(outfile, fformat) + except: + log.exception("Conversion error") + return "Conversion error", 500 return Response(outfile, mimetype=mimetype) @@ -64,8 +75,9 @@ return render_template("convert.html") def save_form_file(self, infile): - outfile = tempfile.NamedTemporaryFile() - infile.save(outfile.name) + outfile = tempfile.TemporaryFile() + infile.save(outfile) + infile.close() return outfile def convert(self, infile, fformat): @@ -79,35 +91,12 @@ 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'] + if not vars: + return None return json.loads(vars) - def get(self): - return render_template("template_convert.html") - class MergeView(MethodView):