Passed
Pull Request — develop (#812)
by
unknown
01:18
created

atramhasis.skos.create_registry()   A

Complexity

Conditions 2

Size

Total Lines 24
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 17
nop 1
dl 0
loc 24
rs 9.55
c 0
b 0
f 0
1
import logging
2
from datetime import date
3
4
import requests
5
from cachecontrol import CacheControl
6
from cachecontrol.heuristics import ExpiresAfter
7
from skosprovider.registry import Registry
8
from skosprovider.uri import UriPatternGenerator
9
from skosprovider_getty.providers import AATProvider
10
from skosprovider_getty.providers import TGNProvider
11
from skosprovider_sqlalchemy.providers import SQLAlchemyProvider
12
from sqlalchemy.orm import Session
13
14
from atramhasis import utils
15
from atramhasis.data.datamanagers import ProviderDataManager
16
17
log = logging.getLogger(__name__)
18
LICENSES = [
19
    'https://creativecommons.org/licenses/by/4.0/',
20
    'http://data.vlaanderen.be/doc/licentie/modellicentie-gratis-hergebruik/v1.0'
21
]
22
23
24
def register_providers_from_db(registry: Registry, session: Session) -> None:
25
    """
26
    Retrieve all providers stored in the database and add them to the registry.
27
28
    :param registry: The registry to which the providers will be added.
29
    :param session: A database session.
30
    """
31
    manager = ProviderDataManager(session)
32
    for db_provider in manager.get_all_providers():
33
        provider = utils.db_provider_to_skosprovider(db_provider)
34
        registry.register_provider(provider)
35
36
37
def create_registry(request):
38
    try:
39
        registry = Registry(instance_scope='threaded_thread')
40
41
        getty_session = CacheControl(requests.Session(), heuristic=ExpiresAfter(weeks=1))
42
43
        aat = AATProvider(
44
            {'id': 'AAT', 'subject': ['external']},
45
            session=getty_session
46
        )
47
48
        tgn = TGNProvider(
49
            {'id': 'TGN', 'subject': ['external']},
50
            session=getty_session
51
        )
52
53
        registry.register_provider(aat)
54
        registry.register_provider(tgn)
55
        register_providers_from_db(registry, request.db)
56
57
        return registry
58
    except AttributeError:
59
        log.exception("Attribute error during creation of Registry.")
60
        raise
61