def render(self): """ Returns generated html code. """ with codecs.open(self.template_file, encoding=self.encoding) as template_src: template = jinja2.Template(template_src.read()) slides = self.fetch_contents(self.source) context = self.get_template_vars(slides) html = template.render(context) if self.embed: images = re.findall(r'\s+background(?:-image)?:\surl\((.+?)\).+;', html, re.DOTALL | re.UNICODE) for img_url in images: img_url = img_url.replace('"', '').replace("'", '') if self.theme_dir: source = os.path.join(self.theme_dir, 'css') else: source = os.path.join(THEMES_DIR, self.theme, 'css') encoded_url = utils.encode_image_from_url(img_url, source) if encoded_url: html = html.replace(img_url, encoded_url, 1) self.log( "Embedded theme image %s from theme directory %s" % (img_url, source)) else: # Missing file in theme directory. Try user_css folders found = False for css_entry in context['user_css']: directory = os.path.dirname(css_entry['path_url']) if not directory: directory = "." encoded_url = utils.encode_image_from_url( img_url, directory) if encoded_url: found = True html = html.replace(img_url, encoded_url, 1) self.log( "Embedded theme image %s from directory %s" % (img_url, directory)) if not found: # Missing image file, etc... self.log(u"Failed to embed theme image %s" % img_url) return html
def process(self, content, source=None): classes = [] if not self.embed: return content, classes images = re.findall(r'<img\s.*?src="(.+?)"\s?.*?/?>', content, re.DOTALL | re.UNICODE) source_dir = os.path.dirname(source) for image_url in images: encoded_url = utils.encode_image_from_url(image_url, source_dir) if not encoded_url: self.logger(u"Failed to embed image \"%s\"" % image_url, 'warning') return content, classes content = content.replace(u"src=\"" + image_url, u"src=\"" + encoded_url, 1) self.logger(u"Embedded image %s" % image_url, 'notice') return content, classes
def render(self): """ Returns generated html code. """ with codecs.open(self.template_file, encoding=self.encoding) as template_src: template = jinja2.Template(template_src.read()) slides = self.fetch_contents(self.source) context = self.get_template_vars(slides) html = template.render(context) if self.embed: images = re.findall(r'\s+background(?:-image)?:\surl\((.+?)\).+;', html, re.DOTALL | re.UNICODE) for img_url in images: img_url = img_url.replace('"', '').replace("'", '') if self.theme_dir: source = os.path.join(self.theme_dir, 'css') else: source = os.path.join(THEMES_DIR, self.theme, 'css') encoded_url = utils.encode_image_from_url(img_url, source) if encoded_url: html = html.replace(img_url, encoded_url, 1) self.log("Embedded theme image %s from theme directory %s" % (img_url, source)) else: # Missing file in theme directory. Try user_css folders found = False for css_entry in context['user_css']: directory = os.path.dirname(css_entry['path_url']) if not directory: directory = "." encoded_url = utils.encode_image_from_url(img_url, directory) if encoded_url: found = True html = html.replace(img_url, encoded_url, 1) self.log("Embedded theme image %s from directory %s" % (img_url, directory)) if not found: # Missing image file, etc... self.log(u"Failed to embed theme image %s" % img_url) return html