Mercurial > odfcast > odfcast
comparison odfcast/convert.py @ 62:16352bd395fa
Allow to ignore merge errors on files
Add a request param ignore_file_errors to allow skipping invalid pdf files
during merge.
author | Björn Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Wed, 12 Nov 2014 14:02:50 +0100 |
parents | d8fc52aceb9c |
children | 5d1e486140ae |
comparison
equal
deleted
inserted
replaced
61:d8fc52aceb9c | 62:16352bd395fa |
---|---|
196 log.debug("Merging PDF documents") | 196 log.debug("Merging PDF documents") |
197 | 197 |
198 merger = PdfFileMerger() | 198 merger = PdfFileMerger() |
199 ffiles = request.files.getlist('files') | 199 ffiles = request.files.getlist('files') |
200 | 200 |
201 for ffile in ffiles: | |
202 try: | |
203 merger.append(ffile) | |
204 except Exception, e: | |
205 log.exception("Error merging file %s" % ffile) | |
206 if self.is_ignore_file_errors(): | |
207 continue | |
208 else: | |
209 return MergeErrorResponse(details=str(e)) | |
210 | |
211 outfile = tempfile.NamedTemporaryFile() | |
212 | |
201 try: | 213 try: |
202 for ffile in ffiles: | |
203 merger.append(ffile) | |
204 | |
205 outfile = tempfile.NamedTemporaryFile() | |
206 | |
207 merger.write(outfile) | 214 merger.write(outfile) |
208 merger.close() | 215 merger.close() |
209 outfile.seek(0) | 216 outfile.seek(0) |
210 except PyPdfError, e: | 217 except PyPdfError, e: |
211 log.exception("Merge error") | 218 log.exception("Merge error") |
212 return MergeErrorResponse(details=str(e)) | 219 return MergeErrorResponse(details=str(e)) |
213 | 220 |
214 log.debug("PDF documents merged") | 221 log.debug("PDF documents merged") |
215 return Response(outfile, mimetype=PDF_MIMETYPE) | 222 return Response(outfile, mimetype=PDF_MIMETYPE) |
216 | 223 |
224 def is_ignore_file_errors(self): | |
225 return request.args.get("ignore_file_errors", False) or \ | |
226 request.form.get("ignore_file_errors", False) | |
227 | |
217 | 228 |
218 class TemplateView(MethodView): | 229 class TemplateView(MethodView): |
219 | 230 |
220 template_name = "" | 231 template_name = "" |
221 | 232 |