|  | 
|  | 1 | +import os | 
|  | 2 | +import shutil | 
|  | 3 | + | 
|  | 4 | +from mako.lookup import TemplateLookup | 
|  | 5 | + | 
|  | 6 | +from mfr.core import utils | 
|  | 7 | +from mfr.core import extension | 
|  | 8 | +from mfr.extensions import settings as ext_settings | 
|  | 9 | +from mfr.extensions.papaya import settings | 
|  | 10 | + | 
|  | 11 | + | 
|  | 12 | +class PapayaRenderer(extension.BaseRenderer): | 
|  | 13 | + | 
|  | 14 | +    data_dir = settings.DATA_DIR | 
|  | 15 | +    data_ttl = settings.DATA_TTL | 
|  | 16 | +    comp_ext = ext_settings.COMPRESSED_EXT | 
|  | 17 | + | 
|  | 18 | +    TEMPLATE = TemplateLookup( | 
|  | 19 | +        directories=[ | 
|  | 20 | +            os.path.join(os.path.dirname(__file__), 'templates') | 
|  | 21 | +        ]).get_template('viewer.mako') | 
|  | 22 | + | 
|  | 23 | +    def render(self): | 
|  | 24 | +        self.remove_old_files() | 
|  | 25 | +        file_name = os.path.basename(self.file_path) | 
|  | 26 | +        if self.metadata.ext in self.comp_ext.keys(): | 
|  | 27 | +            second_ext = '.{}'.format(self.metadata.name.split('.')[-1]) | 
|  | 28 | +            if second_ext in self.comp_ext[self.metadata.ext]: | 
|  | 29 | +                file_name = file_name + second_ext | 
|  | 30 | +        file_name = file_name + self.metadata.ext | 
|  | 31 | +        shutil.copyfile(self.file_path, self.data_dir + file_name) | 
|  | 32 | +        return self.TEMPLATE.render(base=self.assets_url, file_name=file_name) | 
|  | 33 | + | 
|  | 34 | +    def remove_old_files(self): | 
|  | 35 | + | 
|  | 36 | +        for data_file in os.listdir(self.data_dir): | 
|  | 37 | +            if utils.file_expired(self.data_dir + data_file, self.data_ttl): | 
|  | 38 | +                os.unlink(self.data_dir + data_file) | 
|  | 39 | + | 
|  | 40 | +    @property | 
|  | 41 | +    def file_required(self): | 
|  | 42 | +        return True | 
|  | 43 | + | 
|  | 44 | +    @property | 
|  | 45 | +    def cache_result(self): | 
|  | 46 | +        return True | 
0 commit comments