def testPngRendering(self): tiles = settings.MS_SHARED ["tiles"] resolutions = settings.MS_SHARED ["resolutions"] pages_expected = [] for t in tiles: for w in resolutions: tilepages = self.pages / (t*t) if self.pages % (t*t) > 0: tilepages += 1 for p in range(1, tilepages+1): pages_expected += [Page(self.uuid, t, t, w, p)] pages_real = [] for page, data in render_pages(self.uuid, self.f_pdfdoc, self.render_dirname): # check for png magic current_magic = data.read(len(self.png_magic)) self.assertTrue(current_magic == self.png_magic) if hasattr(data, "close"): data.close() pages_real += [page] self.assertEqual(len(pages_expected), len(pages_real))
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