Skip to content

Commit

Permalink
Merge pull request #171 from OnroerendErfgoed/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
claeyswo committed Apr 13, 2023
2 parents 9f8546f + 207f294 commit e4183f5
Show file tree
Hide file tree
Showing 12 changed files with 1,680 additions and 28 deletions.
4 changes: 1 addition & 3 deletions .travis.yml
@@ -1,11 +1,9 @@
sudo: false
language: python
python:
- 3.6
- 3.7
- 3.8
install:
- pip install -r requirements.txt
- pip install -r requirements-dev.txt
- python setup.py develop
- pip install nose coverage nose-testconfig coveralls webtest
script:
Expand Down
10 changes: 8 additions & 2 deletions CHANGES.rst
@@ -1,10 +1,16 @@
1.2.0 (13-04-2023)
------------------

- Drop python < 3.8 support
- Adressenregister implementeren (#165)

1.1.0 (30-03-2023)
-------------------
------------------

- Overschakelen naar nieuwe AGIV services (#164)

1.0.0 (13-04-2022)
-------------------
------------------

- Upgrade naar Pyramid 2.0 (#144)

Expand Down
99 changes: 87 additions & 12 deletions crabpy_pyramid/__init__.py
Expand Up @@ -4,21 +4,25 @@
import os
from collections import Sequence

from crabpy.client import AdressenRegisterClient
from crabpy.client import crab_factory
from crabpy.gateway.adressenregister import Gateway
from crabpy.gateway.capakey import CapakeyRestGateway
from crabpy.gateway.crab import CrabGateway
from pyramid.config import Configurator
from pyramid.settings import asbool
from zope.interface import Interface

from crabpy_pyramid.renderers.capakey import (
json_list_renderer as capakey_json_list_renderer,
from crabpy_pyramid.renderers.adressenregister import \
json_item_renderer as adresreg_json_item_renderer
from crabpy_pyramid.renderers.adressenregister import \
json_list_renderer as adresreg_json_list_renderer
from crabpy_pyramid.renderers.capakey import \
json_item_renderer as capakey_json_item_renderer
)
from crabpy_pyramid.renderers.crab import (
json_list_renderer as crab_json_list_renderer,
json_item_renderer as crab_json_item_renderer
)
from crabpy_pyramid.renderers.capakey import \
json_list_renderer as capakey_json_list_renderer
from crabpy_pyramid.renderers.crab import json_item_renderer as crab_json_item_renderer
from crabpy_pyramid.renderers.crab import json_list_renderer as crab_json_list_renderer

log = logging.getLogger(__name__)
GENERATE_ETAG_ROUTE_NAMES = set()
Expand All @@ -32,30 +36,51 @@ class ICrab(Interface):
pass


class IAdressenregister(Interface):
pass

def _parse_settings(settings):
defaults = {
'capakey.include': False,
'crab.include': True,
'cache.file.root': '/tmp/dogpile_data'
'adressenregister.include': True,
'adressenregister.base_url': 'https://api.basisregisters.vlaanderen.be',
'adressenregister.api_key': None,
'cache.file.root': '/tmp/dogpile_data',
}
args = defaults.copy()
if 'adressenregister.api_key' not in settings:
log.warning(
"No adressenregister.api_key set in settings. "
"The api might stop working after reaching the limit of x requests per day."
)

# booelean settings
for short_key_name in ('capakey.include', 'crab.include'):
for short_key_name in ('capakey.include', 'crab.include', 'adressenregister.include'):
key_name = "crabpy.%s" % short_key_name
if key_name in settings:
args[short_key_name] = asbool(settings.get(
key_name, defaults.get(short_key_name)
))

# string setting
for short_key_name in ('proxy.http', 'proxy.https', 'cache.file.root'):
for short_key_name in (
'proxy.http',
'proxy.https',
'cache.file.root',
'adressenregister.base_url',
'adressenregister.api_key'
):
key_name = "crabpy.%s" % short_key_name
if key_name in settings:
args[short_key_name] = settings.get(key_name)

# cache configuration
for short_key_name in ('crab.cache_config', 'capakey.cache_config'):
for short_key_name in (
'crab.cache_config',
'capakey.cache_config',
'adressenregister.cache_config'
):
key_name = "crabpy.%s." % short_key_name
cache_config = {}
for skey in settings.keys():
Expand All @@ -65,7 +90,7 @@ def _parse_settings(settings):
args[short_key_name] = cache_config

# crab wsdl settings
for short_key_name in ('crab.wsdl', ):
for short_key_name in ('crab.wsdl',):
key_name = "crabpy.%s" % short_key_name
if key_name in settings:
args[short_key_name] = settings.get(key_name)
Expand Down Expand Up @@ -122,6 +147,24 @@ def _build_crab(registry, settings):
return registry.queryUtility(ICrab)


def _build_adressenregister(registry, settings):
adressenregister = registry.queryUtility(IAdressenregister)
if adressenregister is not None:
return adressenregister
if 'cache_config' in settings:
cache_config = settings['cache_config']
del settings['cache_config']
else:
cache_config = None
gateway = Gateway(
client=AdressenRegisterClient(settings["base_url"], settings["api_key"]),
cache_settings=cache_config
)

registry.registerUtility(gateway, IAdressenregister)
return registry.queryUtility(IAdressenregister)


def get_capakey(registry):
"""
Get the Capakey Gateway
Expand Down Expand Up @@ -151,6 +194,21 @@ def get_crab(registry):
return regis.queryUtility(ICrab)


def get_adressenregister(registry):
"""
Get the Adresssenregister Gateway
:rtype: :class:`crabpy.gateway.adressenregister.Gateway`
# argument might be a config or a request
"""
# argument might be a config or a request
regis = getattr(registry, 'registry', None)
if regis is None:
regis = registry

return regis.queryUtility(IAdressenregister)


def _get_proxy_settings(settings):
base_settings = {}
http = settings.get('proxy.http', None)
Expand Down Expand Up @@ -260,6 +318,23 @@ def includeme(config):
config.include('crabpy_pyramid.routes.crab')
config.scan('crabpy_pyramid.views.crab')

# adressenregister wordt afgekort tot adresreg
adresreg_settings = dict(
_filter_settings(settings, 'adressenregister.'),
**base_settings
)

if adresreg_settings['include']:
log.info('Adding adressen register Gateway.')
del adresreg_settings['include']
config.add_renderer('adresreg_listjson', adresreg_json_list_renderer)
config.add_renderer('adresreg_itemjson', adresreg_json_item_renderer)
_build_adressenregister(config.registry, adresreg_settings)
config.add_directive('get_adressenregister', get_adressenregister)
config.add_request_method(get_adressenregister, 'adressenregister_gateway')
config.include('crabpy_pyramid.routes.adressenregister')
config.scan('crabpy_pyramid.views.adressenregister')


def main(global_config, **settings):
"""
Expand Down

0 comments on commit e4183f5

Please sign in to comment.