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):
 
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)