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 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 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 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_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.""" 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) 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
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
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))
def init_app(self, app): """Flask application initialization.""" self.init_config(app) self.metadata_extensions = MetadataExtensions( app.config['RDM_RECORDS_METADATA_NAMESPACES'], app.config['RDM_RECORDS_METADATA_EXTENSIONS']) self.init_services(app) self.init_resource(app) app.before_request(verify_token) app.extensions['invenio-rdm-records'] = self # Load flask IIIF IIIF(app)
from flask_sqlalchemy import SQLAlchemy from redis import Redis from sqlalchemy_utils.types.json import JSONType app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get( 'SQLALCHEMY_DATABASE_URI', 'sqlite:////tmp/test.db' ) db = SQLAlchemy(app) redis = Redis(host=os.environ.get('REDIS_HOST', 'localhost'), port=6379) celery = Celery('app', broker=os.environ.get( 'CELERY_BROKER_URL', 'redis://localhost:6379' )) # 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
import flask import gunicorn.app.base from flask_iiif import IIIF from flask_iiif.cache.simple import ImageSimpleCache from flask_restful import Api from iiif_prezi.factory import ManifestFactory from index import DatabaseRepository, FilesystemRepository SearchHit = namedtuple("SearchHit", ("match", "before", "after", "annotations")) app = flask.Flask('hocrviewer', static_folder='./vendor/mirador', static_url_path='/static') ext = IIIF(app=app) api = Api(app=app) ext.init_restful(api, prefix="/iiif/image/") repository = None logger = logging.getLogger(__name__) class ApiException(Exception): status_code = 500 def __init__(self, message, status_code=None, payload=None): Exception.__init__(self) self.message = message if status_code is not None: self.status_code = status_code self.payload = payload
def test_creation_old_flask(self): """Simulate old Flask (pre 0.9).""" del self.app.extensions IIIF(app=self.app) assert isinstance(self.app.extensions['iiif'], IIIF)
def test_creation(self): """Test extension creation.""" assert 'iiif' not in self.app.extensions IIIF(app=self.app) assert isinstance(self.app.extensions['iiif'], IIIF)
def test_creation_init(self): """Test extension creation init.""" assert 'iiif' not in self.app.extensions r = IIIF() r.init_app(app=self.app) assert isinstance(self.app.extensions['iiif'], IIIF)
def test_double_creation(self): """Test extension double creation.""" IIIF(app=self.app) self.assertRaises(RuntimeError, IIIF, app=self.app)
default: :func:`~invenio.modules.documents.utis.identifier_to_path` """ from flask_iiif import IIIF from flask_iiif.errors import MultimediaError from six import string_types from werkzeug.utils import import_string from .utils import api_file_permission_check __all__ = ('setup_app', ) iiif = IIIF() def setup_app(app): """Setup Flask-IIIF extension.""" if 'invenio.modules.documents' in app.config.get('PACKAGES_EXCLUDE'): raise MultimediaError( "Could not initialize the Flask-IIIF extension because " ":class:`~invenio.modules.documents.api:Document` is missing") iiif.init_app(app) iiif.init_restful(app.extensions['restful']) app.config.setdefault( 'IIIF_IMAGE_OPENER', 'invenio.modules.documents.utils:identifier_to_path')
from flask_restful import Api from flask_sqlalchemy import SQLAlchemy from redis import Redis from sqlalchemy_utils.types.json import JSONType app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get( 'SQLALCHEMY_DATABASE_URI', 'sqlite:////tmp/test.db') db = SQLAlchemy(app) redis = Redis(host=os.environ.get('REDIS_HOST', 'localhost'), port=6379) celery = Celery('app', broker=os.environ.get('CELERY_BROKER_URL', 'redis://localhost:6379')) # 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)
def test_default_config(self): """Test extension default configuration.""" IIIF(app=self.app) for k in dir(default_config): if k.startswith('IIIF_'): assert self.app.config.get(k) == getattr(default_config, k)
from modules.database import database app = Flask(__name__) app.config['UPLOAD_FOLDER'] = "webapp/data" app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 * 1024 api_url_prefix = "/api/1.0/" #load api functins app.register_blueprint(api_blueprint, url_prefix=api_url_prefix) #load functions serving the webapp app.register_blueprint(web_blueprint) ##IIIF API ext = IIIF(app=app) api = Api(app=app) ext.init_restful(api) #load functions serving the images app.register_blueprint(data_blueprint) #initialise database database.initialize() if __name__ == "__main__": port = 4000 host = "0.0.0.0" app.run(port=port, host=host, debug=False, threaded=True)