Mercurial > odfcast > odfcast
comparison 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 |
comparison
equal
deleted
inserted
replaced
29:1dadc59c4b9a | 30:9d65de2ebe22 |
---|---|
47 | 47 |
48 fformat = request.form['format'] | 48 fformat = request.form['format'] |
49 if not self.is_format_supported(fformat): | 49 if not self.is_format_supported(fformat): |
50 return "Format %s not allowed" % fformat, 401 | 50 return "Format %s not allowed" % fformat, 401 |
51 | 51 |
52 datadict = self.get_datadict() | |
53 | |
52 mimetype = self.get_mimetype_for_format(fformat) | 54 mimetype = self.get_mimetype_for_format(fformat) |
53 | 55 |
54 infile = self.save_form_file(ffile) | 56 outfile = self.save_form_file(ffile) |
55 try: | 57 |
56 outfile = self.convert(infile, fformat) | 58 if datadict: |
57 except: | 59 tfile = tempfile.NamedTemporaryFile() |
58 log.exception("Conversion error") | 60 t = Template(outfile, tfile) |
59 return "Conversion error", 500 | 61 t.render(datadict) |
62 outfile.close() | |
63 outfile = tfile | |
64 | |
65 if format != "odt": | |
66 try: | |
67 outfile = self.convert(outfile, fformat) | |
68 except: | |
69 log.exception("Conversion error") | |
70 return "Conversion error", 500 | |
60 | 71 |
61 return Response(outfile, mimetype=mimetype) | 72 return Response(outfile, mimetype=mimetype) |
62 | 73 |
63 def get(self): | 74 def get(self): |
64 return render_template("convert.html") | 75 return render_template("convert.html") |
65 | 76 |
66 def save_form_file(self, infile): | 77 def save_form_file(self, infile): |
67 outfile = tempfile.NamedTemporaryFile() | 78 outfile = tempfile.TemporaryFile() |
68 infile.save(outfile.name) | 79 infile.save(outfile) |
80 infile.close() | |
69 return outfile | 81 return outfile |
70 | 82 |
71 def convert(self, infile, fformat): | 83 def convert(self, infile, fformat): |
72 outfile = tempfile.NamedTemporaryFile() | 84 outfile = tempfile.NamedTemporaryFile() |
73 | 85 |
77 return outfile | 89 return outfile |
78 | 90 |
79 def get_mimetype_for_format(self, fformat): | 91 def get_mimetype_for_format(self, fformat): |
80 return MIMETYPES.get(fformat, DEFAULT_MIMETYPE) | 92 return MIMETYPES.get(fformat, DEFAULT_MIMETYPE) |
81 | 93 |
82 | |
83 class TemplateConvertView(ConvertView): | |
84 | |
85 def post(self): | |
86 ffile = request.files['file'] | |
87 fformat = request.form['format'] | |
88 datadict = self.get_datadict() | |
89 | |
90 if not self.is_format_supported(fformat): | |
91 return "Format %s not allowed" % fformat, 401 | |
92 | |
93 tfile = self.save_form_file(ffile) | |
94 outfile = tempfile.NamedTemporaryFile() | |
95 t = Template(tfile, outfile.name) | |
96 t.render(datadict) | |
97 | |
98 if fformat != "odt": | |
99 outfile = self.convert(outfile, fformat) | |
100 | |
101 mimetype = self.get_mimetype_for_format(fformat) | |
102 return Response(outfile, mimetype=mimetype) | |
103 | |
104 def get_datadict(self): | 94 def get_datadict(self): |
105 vars = request.form['datadict'] | 95 vars = request.form['datadict'] |
96 if not vars: | |
97 return None | |
106 return json.loads(vars) | 98 return json.loads(vars) |
107 | |
108 def get(self): | |
109 return render_template("template_convert.html") | |
110 | 99 |
111 | 100 |
112 class MergeView(MethodView): | 101 class MergeView(MethodView): |
113 | 102 |
114 def get(self): | 103 def get(self): |