Beispiel #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))
Beispiel #2
0
 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
Beispiel #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.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
Beispiel #4
0
 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
Beispiel #5
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
Beispiel #6
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)
Beispiel #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
Beispiel #8
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
Beispiel #9
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)
Beispiel #10
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))
Beispiel #11
0
 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)
Beispiel #12
0
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
Beispiel #13
0
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
Beispiel #14
0
 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)
Beispiel #15
0
 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)
Beispiel #16
0
 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)
Beispiel #17
0
 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)
Beispiel #18
0
 def test_double_creation(self):
     """Test extension double creation."""
     IIIF(app=self.app)
     self.assertRaises(RuntimeError, IIIF, app=self.app)
Beispiel #19
0
    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')
Beispiel #20
0
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)
Beispiel #21
0
 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)
Beispiel #22
0
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)