Exemple #1
0
class InvenioIIIF(object):
    """Invenio-IIIF extension."""
    def __init__(self, app=None):
        """Extension initialization."""
        if app:
            self.init_app(app)

    def init_app(self, app):
        """Flask application initialization."""
        self.init_config(app)
        self.iiif_ext = IIIF(app=app)
        # register decorator if configured
        decorator_handler = app.config["IIIF_API_DECORATOR_HANDLER"]
        if decorator_handler:
            decorator_handler_func = obj_or_import_string(decorator_handler)
            self.iiif_ext.api_decorator_handler(decorator_handler_func)
        # register image opener handler
        image_opener = obj_or_import_string(
            app.config["IIIF_IMAGE_OPENER_HANDLER"])
        self.iiif_ext.uuid_to_image_opener_handler(image_opener)
        app.extensions['invenio-iiif'] = self

    def init_config(self, app):
        """Initialize configuration."""
        for k in dir(config):
            if k.startswith('IIIF_'):
                app.config.setdefault(k, getattr(config, k))
Exemple #2
0
    def create_app(self):
        """Create the app."""
        from flask_iiif import IIIF
        from flask_restful import Api
        from flask_iiif.cache.simple import ImageSimpleCache

        app = Flask(__name__)
        app.config['DEBUG'] = True
        app.config['TESTING'] = True
        app.config['SERVER_NAME'] = "shield.worker.node.1"
        app.config['SITE_URL'] = "http://shield.worker.node.1"
        app.config['IIIF_CACHE_HANDLER'] = ImageSimpleCache()
        app.config['PRESERVE_CONTEXT_ON_EXCEPTION'] = False
        app.logger.disabled = True

        api = Api(app=app)

        iiif = IIIF(app=app)

        iiif.uuid_to_image_opener_handler(self.create_image)

        def api_decorator_test(*args, **kwargs):
            if 'decorator' in kwargs.get('uuid'):
                abort(403)

        iiif.api_decorator_handler(api_decorator_test)

        iiif.init_restful(api)
        return app
Exemple #3
0
    def create_app(self):
        """Create the app."""
        from flask_iiif import IIIF
        from flask_restful import Api
        from flask_iiif.cache.simple import ImageSimpleCache

        app = Flask(__name__)
        app.config["DEBUG"] = True
        app.config["TESTING"] = True
        app.config["SERVER_NAME"] = "shield.worker.node.1"
        app.config["SITE_URL"] = "http://shield.worker.node.1"
        app.config["IIIF_CACHE_HANDLER"] = ImageSimpleCache()
        app.logger.disabled = True

        api = Api(app=app)

        iiif = IIIF(app=app)

        iiif.uuid_to_image_opener_handler(self.create_image)

        def api_decorator_test(*args, **kwargs):
            if "decorator" in kwargs.get("uuid"):
                abort(403)

        iiif.api_decorator_handler(api_decorator_test)

        iiif.init_restful(api)
        return app
Exemple #4
0
 def init_app(self, app):
     """Flask application initialization."""
     super(InvenioIIIFAPI, self).init_app(app)
     ext = IIIF(app=app)
     api = Api(app=app)
     ext.init_restful(api, prefix=app.config['IIIF_API_PREFIX'])
     ext.uuid_to_image_opener_handler(image_opener)
     ext.api_decorator_handler(protect_api)
Exemple #5
0
 def init_app(self, app):
     """Flask application initialization."""
     super(InvenioIIIFAPI, self).init_app(app)
     ext = IIIF(app=app)
     api = Api(app=app)
     ext.init_restful(api, prefix=app.config['IIIF_API_PREFIX'])
     ext.uuid_to_image_opener_handler(image_opener)
     ext.api_decorator_handler(protect_api)
Exemple #6
0
 def init_app(self, app):
     """Flask application initialization."""
     api = Api(app=app)
     ext = IIIF()
     ext.init_app(app)
     ext.uuid_to_image_opener_handler(image_opener)
     ext.init_restful(api, prefix='/iiif/')
     return app
Exemple #7
0
 def init_app(self, app):
     """Flask application initialization."""
     api = Api(app=app)
     app.config['IIIF_CACHE_HANDLER'] = simple.ImageSimpleCache()
     ext = IIIF()
     ext.init_app(app)
     ext.uuid_to_image_opener_handler(image_opener)
     ext.init_restful(api, prefix='/iiif/')
     return app
Exemple #8
0
class InvenioIIIF(object):
    """Invenio-IIIF extension."""
    def __init__(self, app=None):
        """Extension initialization."""
        if app:
            self.init_app(app)

    def init_app(self, app):
        """Flask application initialization."""
        self.init_config(app)
        self.iiif_ext = IIIF(app=app)
        self.iiif_ext.api_decorator_handler(protect_api)
        self.iiif_ext.uuid_to_image_opener_handler(image_opener)
        app.extensions['invenio-iiif'] = self

    def init_config(self, app):
        """Initialize configuration."""
        for k in dir(config):
            if k.startswith('IIIF_'):
                app.config.setdefault(k, getattr(config, k))
Exemple #9
0
# Init the iiif extension
iiif = IIIF(app=app)
# Init the restful api
api = Api(app=app)
# Init restful api to flask-iiif
iiif.init_restful(api)


# Where iiif will find the images in our case `./images`
def uuid_to_source(uuid):
    image_path = os.path.join('./', 'images')
    return os.path.join(image_path, uuid)

# Init the opener function
iiif.uuid_to_image_opener_handler(uuid_to_source)

# Initialize the cache
app.config['IIIF_CACHE_HANDLER'] = redis


@celery.task()
def make_sip(recid, data):
    now = datetime.datetime.now().isoformat()
    with open('./{0}_{1}.zip'.format(recid, now), 'wb') as f:
        f.write(zlib.compress(json.dumps(data).encode('utf-8')))


class Record(db.Model):
    __tablename__ = 'record'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
Exemple #10
0
# Init the iiif extension
iiif = IIIF(app=app)
# Init the restful api
api = Api(app=app)
# Init restful api to flask-iiif
iiif.init_restful(api)


# Where iiif will find the images in our case `./images`
def uuid_to_source(uuid):
    image_path = os.path.join('./', 'images')
    return os.path.join(image_path, uuid)


# Init the opener function
iiif.uuid_to_image_opener_handler(uuid_to_source)

# Initialize the cache
app.config['IIIF_CACHE_HANDLER'] = redis


@celery.task()
def make_sip(recid, data):
    now = datetime.datetime.now().isoformat()
    with open('./{0}_{1}.zip'.format(recid, now), 'wb') as f:
        f.write(zlib.compress(json.dumps(data).encode('utf-8')))


class Record(db.Model):
    __tablename__ = 'record'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)