Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
versioned_template_loader.py86 linesDownload Raw Back to utils
1##########################################################################2#3# pgAdmin 4 - PostgreSQL Tools4#5# Copyright (C) 2013 - 2024, The pgAdmin Development Team6# This software is released under the PostgreSQL Licence7#8##########################################################################9from flask.templating import DispatchingJinjaLoader10from jinja2 import TemplateNotFound11 12 13class VersionedTemplateLoader(DispatchingJinjaLoader):14    def get_source(self, environment, template):15        specified_version_number, exists = parse_version(template)16        if not exists:17            return super().get_source(18                environment, template19            )20 21        template_dir, file_name = parse_template(template)22 23        for version_mapping in get_version_mapping(template):24            if version_mapping['number'] > specified_version_number:25                continue26 27            template_path = '/'.join([28                template_dir,29                version_mapping['name'],30                file_name31            ])32 33            try:34                return super().get_source(35                    environment, template_path36                )37            except TemplateNotFound:38                continue39        raise TemplateNotFound(template)40 41 42def parse_version(template):43    template_path_parts = template.split("#", 3)44    if len(template_path_parts) == 1:45        return "", False46 47    if len(template_path_parts) == 3:48        _, version, _ = template_path_parts49        return int(version), True50 51    if len(template_path_parts) == 4:52        _, _, version, _ = template_path_parts53        return int(version), True54 55    raise TemplateNotFound(template)56 57 58def parse_template(template):59    template_path_parts = template.split("#", 3)60    return template_path_parts[0].strip('\\').strip('/'), \61        template_path_parts[-1].strip('\\').strip('/')62 63 64def get_version_mapping(template):65    template_path_parts = template.split("#", 3)66 67    if len(template_path_parts) == 4:68        _, _, _, _ = template_path_parts69 70    return get_version_mapping_directories()71 72 73def get_version_mapping_directories():74    """75    This function will return all the version mapping directories76    :param server_type:77    :return:78    """79    return ({'name': "16_plus", 'number': 160000},80            {'name': "15_plus", 'number': 150000},81            {'name': "14_plus", 'number': 140000},82            {'name': "13_plus", 'number': 130000},83            {'name': "12_plus", 'number': 120000},84            {'name': "11_plus", 'number': 110000},85            {'name': "default", 'number': 0})86 
codekingpro/portable-devtools · Team Ai