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))
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
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
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)
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
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
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))
# 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)