Source code for s3vaultlib.template.templatefile

#!/usr/bin/env python

__author__ = "Giuseppe Chiesa"
__copyright__ = "Copyright 2017-2021, Giuseppe Chiesa"
__credits__ = ["Giuseppe Chiesa"]
__license__ = "BSD"
__maintainer__ = "Giuseppe Chiesa"
__email__ = "mail@giuseppechiesa.it"
__status__ = "PerpetualBeta"


[docs]class TemplateFileException(Exception): pass
[docs]class TemplateFile(object): def __init__(self, filename): self._filename = filename self._template_data = None @property def filename(self): return self._filename def _get_template_content(self): with open(self._filename, 'rb') as fh: self._template_data = fh.read().decode('utf-8') @property def template_data(self): if not self._template_data: self._get_template_content() return self._template_data def _get_raw_copy_filename(self): data = self.template_data.strip() if data[0:2] != '{{' or data[-2:] != '}}': raise ValueError() inner_data = data[2:-2] if '|' in inner_data: raise ValueError() return inner_data.strip()
[docs] def is_raw_copy(self, s3fs_objects): """ Detect if the template represent a raw copy of the file :param template_file: :param s3fs_objects: :return: """ try: filename = self._get_raw_copy_filename() except ValueError: return False if filename not in [obj.name for obj in s3fs_objects]: return False return True
[docs] def get_raw_copy_src(self): try: filename = self._get_raw_copy_filename() except ValueError: return None return filename