def get_page(request, uuid, tiles_x, tiles_y, width, pagenr): s3url = S3url(settings.MS_CLIENT ["key_id"], settings.MS_CLIENT ["key_secret"]) if not s3url.verifyUrlString(request.get_full_path()): return HttpResponseBadRequest(_("Invalid expiring url")) mediaprovider = MediaProvider() try: f = mediaprovider.getPage(Page(uuid, tiles_x, tiles_y, width, pagenr)) except KeyError: return HttpResponseNotFound() data = f.read() if hasattr(f, 'read') else f return HttpResponse(data, mimetype='image/png')
def get_blob(request, uuid, filename, mime_part1="application", mime_part2= "pdf"): mimetype="/".join((mime_part1, mime_part2)) s3url = S3url(settings.MS_CLIENT ["key_id"], settings.MS_CLIENT ["key_secret"]) if not s3url.verifyUrlString(request.get_full_path()): return HttpResponseBadRequest(_("Invalid expiring url")) mediaprovider = MediaProvider() try: f = mediaprovider.getBlob(uuid) except KeyError: return HttpResponseNotFound() response = HttpResponse(f.read(), mimetype=mimetype) response['Content-Disposition'] = 'attachment;filename=%s' % (filename)
def get_pdf(request, uuid, filename, branding=None): mimetype = "application/pdf" s3url = S3url(settings.MS_CLIENT ["key_id"], settings.MS_CLIENT ["key_secret"]) if not s3url.verifyUrlString(request.get_full_path()): return HttpResponseBadRequest(_("Invalid expiring url")) mediaprovider = MediaProvider() f = mediaprovider.getBlob(uuid) #fixme: brand pdf with uuid barcode, and if branding != none with branding barcode also if f: response = HttpResponse(f.read(), mimetype=mimetype) response['Content-Disposition'] = 'attachment;filename=%s' % (filename) return response else: return HttpResponseNotFound()
def rerender_pages(identifier=None, **kwargs): import tempfile, shutil from ecs.mediaserver.mediaprovider import MediaProvider from ecs.mediaserver.renderer import render_pages logger = rerender_pages.get_logger(**kwargs) logger.debug("rerender_pages called with identifier %s" % identifier) if identifier is None: logger.warning("Warning, rerender_pages(identifier is None)") return False, str(None), "identifier is none" mediaprovider = MediaProvider() try: filelike = mediaprovider.getBlob(identifier) except KeyError as exceptobj: logger.error("rerender_pages could not getBlob(%s), exception was %r" % (identifier, exceptobj)) return False, str(identifier), repr(exceptobj) try: render_dirname = tempfile.mkdtemp() for page, data in render_pages(identifier, filelike, render_dirname): mediaprovider.setPage(page, data, use_render_diskcache=True) if hasattr(data, "close"): data.close() except IOError as exceptobj: logger.error("render_pages of blob %s returned an IOError: %r" % (identifier, exceptobj)) result = False, str(identifier), repr(exceptobj) else: result = True, str(identifier), "" finally: shutil.rmtree(render_dirname) return result