Example #1
0
def fetch_resource(uri, rel):
    """
        Callback used by pisa to locally retrieve ressources
        giving the uri
        if the uri starts with /files : we're looking for a db file
        else we're looking for a static resource
    """
    f_regex_group = FILEPATH_REGX.match(uri)
    pf_regex_group = PUBLIC_FILES_REGX.match(uri)

    if f_regex_group is not None:
        # C'est un modèle File que l'on doit renvoyer
        filename = f_regex_group.group('fileid')
        # On récupère l'objet fichier
        from autonomie.models.files import File
        fileobj = File.get(filename)
        resource = get_db_file_resource(fileobj)

    elif pf_regex_group is not None:
        key = pf_regex_group.group('filekey')
        from autonomie.models.config import ConfigFiles
        fileobj = ConfigFiles.get(key)
        resource = get_db_file_resource(fileobj)

    else:
        # C'est un fichier statique
        request = get_current_request()
        introspector = request.registry.introspector
        if uri.startswith('/'):
            uri = uri[1:]
        mainuri, sep, relative_filepath = uri.partition('/')
        mainuri = mainuri + '/'
        resource = ''
        for staticpath in introspector.get_category('static views'):
            if mainuri == staticpath['introspectable']['name']:
                basepath = staticpath['introspectable']['spec']
                resource = join(basepath, relative_filepath).encode('utf-8')
                if ':' in resource:
                    package, filename = resource.split(':')
                    resource = pkg_resources.resource_filename(
                        package,
                        filename,
                    )
                break
    return resource
Example #2
0
def fetch_resource(uri, rel):
    """
        Callback used by pisa to locally retrieve ressources
        giving the uri
        if the uri starts with /files : we're looking for a db file
        else we're looking for a static resource
    """
    f_regex_group = FILEPATH_REGX.match(uri)
    pf_regex_group = PUBLIC_FILES_REGX.match(uri)

    if f_regex_group is not None:
        # C'est un modèle File que l'on doit renvoyer
        filename = f_regex_group.group('fileid')
        # On récupère l'objet fichier
        from autonomie.models.files import File
        fileobj = File.get(filename)
        resource = get_db_file_resource(fileobj)

    elif pf_regex_group is not None:
        key = pf_regex_group.group('filekey')
        from autonomie.models.config import ConfigFiles
        fileobj = ConfigFiles.get(key)
        resource = get_db_file_resource(fileobj)

    else:
        # C'est un fichier statique
        request = get_current_request()
        introspector = request.registry.introspector
        if uri.startswith('/'):
            uri = uri[1:]
        mainuri, sep, relative_filepath = uri.partition('/')
        mainuri = mainuri + '/'
        resource = ''
        for staticpath in introspector.get_category('static views'):
            if mainuri == staticpath['introspectable']['name']:
                basepath = staticpath['introspectable']['spec']
                resource = join(basepath, relative_filepath).encode('utf-8')
                if ':' in resource:
                    package, filename = resource.split(':')
                    resource = pkg_resources.resource_filename(
                        package,
                        filename,
                    )
                break
    return resource