diff --git a/CHANGES.rst b/CHANGES.rst index 395a9b2..962b8c7 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,8 @@ +2.0.0 (13-12-2023) +------------------ + +- Remove crab (#208) + 1.8.0 (12-12-2023) ------------------ diff --git a/crabpy_pyramid/__init__.py b/crabpy_pyramid/__init__.py index 25e2a38..5067c3e 100644 --- a/crabpy_pyramid/__init__.py +++ b/crabpy_pyramid/__init__.py @@ -1,26 +1,26 @@ import logging import os -from collections.abc import Sequence +from collections.abc 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.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.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 +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.capakey import ( + json_list_renderer as capakey_json_list_renderer, +) log = logging.getLogger(__name__) GENERATE_ETAG_ROUTE_NAMES = set() @@ -30,44 +30,43 @@ class ICapakey(Interface): pass -class ICrab(Interface): - pass - - class IAdressenregister(Interface): pass + def _parse_settings(settings): defaults = { - 'capakey.include': False, - 'crab.include': True, - 'adressenregister.include': True, - 'adressenregister.base_url': 'https://api.basisregisters.vlaanderen.be', - 'adressenregister.api_key': None, - 'cache.file.root': '/tmp/dogpile_data', + "capakey.include": False, + "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 'crabpy.adressenregister.api_key' not in settings: + if "crabpy.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', 'adressenregister.include'): + for short_key_name in ( + "capakey.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) - )) + 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', - 'adressenregister.base_url', - 'adressenregister.api_key' + "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: @@ -75,24 +74,17 @@ def _parse_settings(settings): # cache configuration for short_key_name in ( - 'crab.cache_config', - 'capakey.cache_config', - 'adressenregister.cache_config' + "capakey.cache_config", + "adressenregister.cache_config", ): key_name = "crabpy.%s." % short_key_name cache_config = {} for skey in settings.keys(): if skey.startswith(key_name): - cache_config[skey[len(key_name):]] = settings.get(skey) + cache_config[skey[len(key_name) :]] = settings.get(skey) if cache_config: args[short_key_name] = cache_config - # crab wsdl settings - 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) - log.debug(settings) log.debug(args) return args @@ -109,7 +101,7 @@ def _filter_settings(settings, prefix): ret = {} for skey in settings.keys(): if skey.startswith(prefix): - key = skey[len(prefix):] + key = skey[len(prefix) :] ret[key] = settings[skey] return ret @@ -118,9 +110,9 @@ def _build_capakey(registry, settings): capakey = registry.queryUtility(ICapakey) if capakey is not None: return capakey - if 'cache_config' in settings: - cache_config = settings['cache_config'] - del settings['cache_config'] + if "cache_config" in settings: + cache_config = settings["cache_config"] + del settings["cache_config"] else: cache_config = {} gateway = CapakeyRestGateway(cache_config=cache_config) @@ -129,34 +121,18 @@ def _build_capakey(registry, settings): return registry.queryUtility(ICapakey) -def _build_crab(registry, settings): - crab = registry.queryUtility(ICrab) - if crab is not None: - return crab - if 'cache_config' in settings: - cache_config = settings['cache_config'] - del settings['cache_config'] - else: - cache_config = {} - factory = crab_factory(**settings) - gateway = CrabGateway(factory, cache_config=cache_config) - - registry.registerUtility(gateway, ICrab) - 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'] + 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 + cache_settings=cache_config, ) registry.registerUtility(gateway, IAdressenregister) @@ -170,28 +146,13 @@ def get_capakey(registry): :rtype: :class:`crabpy.gateway.capakey.CapakeyRestGateway` """ # argument might be a config or a request - regis = getattr(registry, 'registry', None) + regis = getattr(registry, "registry", None) if regis is None: regis = registry return regis.queryUtility(ICapakey) -def get_crab(registry): - """ - Get the Crab Gateway - - :rtype: :class:`crabpy.gateway.crab.CrabGateway` - # 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(ICrab) - - def get_adressenregister(registry): """ Get the Adresssenregister Gateway @@ -200,7 +161,7 @@ def get_adressenregister(registry): # argument might be a config or a request """ # argument might be a config or a request - regis = getattr(registry, 'registry', None) + regis = getattr(registry, "registry", None) if regis is None: regis = registry @@ -209,16 +170,16 @@ def get_adressenregister(registry): def _get_proxy_settings(settings): base_settings = {} - http = settings.get('proxy.http', None) - https = settings.get('proxy.https', None) - if (http or https): + http = settings.get("proxy.http", None) + https = settings.get("proxy.https", None) + if http or https: base_settings["proxy"] = {} if "proxy.http" in settings: base_settings["proxy"]["http"] = settings["proxy.http"] - log.info('HTTP proxy: %s' % base_settings["proxy"]["http"]) + log.info("HTTP proxy: %s" % base_settings["proxy"]["http"]) if "proxy.https" in settings: base_settings["proxy"]["https"] = settings["proxy.https"] - log.info('HTTPS proxy: %s' % base_settings["proxy"]["https"]) + log.info("HTTPS proxy: %s" % base_settings["proxy"]["https"]) return base_settings @@ -236,12 +197,12 @@ def add_route(config, name, pattern, *args, **kwargs): def conditional_http_tween_factory(handler, registry): """ - Tween that adds ETag headers and tells Pyramid to enable + Tween that adds ETag headers and tells Pyramid to enable conditional responses where appropriate. """ - settings = registry.settings if hasattr(registry, 'settings') else {} - if 'generate_etag_for.list' in settings: - route_names = settings.get('generate_etag_for.list').split() + settings = registry.settings if hasattr(registry, "settings") else {} + if "generate_etag_for.list" in settings: + route_names = settings.get("generate_etag_for.list").split() GENERATE_ETAG_ROUTE_NAMES.update(route_names) def conditional_http_tween(request): @@ -261,8 +222,9 @@ def conditional_http_tween(request): # buffered response and can generate the ETag header ourself. if response.etag is not None: response.conditional_response = True - elif (isinstance(response.app_iter, Sequence) and - len(response.app_iter) == 1) and response.body is not None: + elif ( + isinstance(response.app_iter, Sequence) and len(response.app_iter) == 1 + ) and response.body is not None: response.conditional_response = True response.md5_etag() @@ -282,62 +244,50 @@ def includeme(config): base_settings = _get_proxy_settings(settings) # http caching tween - if not settings.get('etag_tween_disabled', False): - config.add_tween('crabpy_pyramid.conditional_http_tween_factory') + if not settings.get("etag_tween_disabled", False): + config.add_tween("crabpy_pyramid.conditional_http_tween_factory") # create cache - root = settings.get('cache.file.root', '/tmp/dogpile_data') + root = settings.get("cache.file.root", "/tmp/dogpile_data") if not os.path.exists(root): os.makedirs(root) - capakey_settings = dict(_filter_settings(settings, 'capakey.'), - **base_settings) - if 'include' in capakey_settings: - log.info("The 'capakey.include' setting is deprecated. Capakey will " - "always be included.") - log.info('Adding CAPAKEY Gateway.') - config.add_renderer('capakey_listjson', capakey_json_list_renderer) - config.add_renderer('capakey_itemjson', capakey_json_item_renderer) + capakey_settings = dict(_filter_settings(settings, "capakey."), **base_settings) + if "include" in capakey_settings: + log.info( + "The 'capakey.include' setting is deprecated. Capakey will " + "always be included." + ) + log.info("Adding CAPAKEY Gateway.") + config.add_renderer("capakey_listjson", capakey_json_list_renderer) + config.add_renderer("capakey_itemjson", capakey_json_item_renderer) _build_capakey(config.registry, capakey_settings) - config.add_request_method(get_capakey, 'capakey_gateway') - config.add_directive('get_capakey', get_capakey) - config.include('crabpy_pyramid.routes.capakey') - config.scan('crabpy_pyramid.views.capakey') - - crab_settings = dict(_filter_settings(settings, 'crab.'), **base_settings) - if crab_settings['include']: - log.info('Adding CRAB Gateway.') - del crab_settings['include'] - config.add_renderer('crab_listjson', crab_json_list_renderer) - config.add_renderer('crab_itemjson', crab_json_item_renderer) - _build_crab(config.registry, crab_settings) - config.add_directive('get_crab', get_crab) - config.add_request_method(get_crab, 'crab_gateway') - config.include('crabpy_pyramid.routes.crab') - config.scan('crabpy_pyramid.views.crab') + config.add_request_method(get_capakey, "capakey_gateway") + config.add_directive("get_capakey", get_capakey) + config.include("crabpy_pyramid.routes.capakey") + config.scan("crabpy_pyramid.views.capakey") # adressenregister wordt afgekort tot adresreg adresreg_settings = dict( - _filter_settings(settings, 'adressenregister.'), - **base_settings + _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) + 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') + 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") config.scan("crabpy_pyramid.views.exceptions") def main(global_config, **settings): """ - This function returns a Pyramid WSGI application. + This function returns a Pyramid WSGI application. """ config = Configurator(settings=settings) diff --git a/crabpy_pyramid/renderers/crab.py b/crabpy_pyramid/renderers/crab.py deleted file mode 100644 index dbf0247..0000000 --- a/crabpy_pyramid/renderers/crab.py +++ /dev/null @@ -1,545 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Adapters to help render :mod:`crabpy.gateway.crab` objects to json. - -.. versionadded:: 0.1.0 -""" -import gettext - -import pycountry -from crabpy.gateway import crab -from pyramid.renderers import JSON - -json_list_renderer = JSON() -json_item_renderer = JSON() - -nederlands = gettext.translation('iso3166-1', pycountry.LOCALES_DIR, languages=['nl']) -nederlands.install() - - -def list_gewesten_adapter(obj, request): - """ - Adapter for rendering a list of - :class:`crabpy.gateway.crab.Gewest` to json. - """ - return { - 'id': obj.id, - 'naam': obj.naam - } - - -def list_provincie_adapter(obj, request): - """ - Adapter for rendering a list of - :class:`crabpy.gateway.crab.Provincie` to json. - """ - return { - 'niscode': obj.niscode, - 'naam': obj.naam, - 'gewest': { - 'id': obj.gewest.id, - 'naam': obj.gewest.naam - } - } - - -def list_gemeente_adapter(obj, request): - """ - Adapter for rendering a list of - :class:`crabpy.gateway.crab.Gemeenten` to json. - """ - return { - 'id': obj.id, - 'niscode': obj.niscode, - 'naam': obj.naam - } - - -def list_deelgemeente_adapter(obj, request): - ''' - Adapter for rendering a list of - :class:`crabpy.gateway.crab.Deelgemeente` to json. - ''' - return { - 'id': obj.id, - 'naam': obj.naam - } - - -def list_straten_adapter(obj, request): - """ - Adapter for rendering a list of - :class:`crabpy.gateway.crab.Straat` to json. - """ - naam = obj.label - for name, language in obj.namen: - if language == 'nl' and name: - naam = name - break - return { - 'id': obj.id, - 'label': obj.label, - 'naam': naam, - 'status': { - 'id': obj.status.id, - 'naam': obj.status.naam, - 'definitie': obj.status.definitie - }, - } - - -def list_huisnummers_adapter(obj, request): - """ - Adapter for rendering a list of - :class:`crabpy.gateway.crab.Huisnummer` to json. - """ - return { - 'id': obj.id, - 'status': { - 'id': obj.status.id, - 'naam': obj.status.naam, - 'definitie': obj.status.definitie - }, - 'label': obj.huisnummer - } - - -def list_percelen_adapter(obj, request): - """ - Adapter for rendering a list of - :class:`crabpy.gateway.crab.Perceel` to json. - """ - return { - 'id': obj.id - } - - -def list_gebouwen_adapter(obj, request): - """ - Adapter for rendering a list of - :class:`crabpy.gateway.crab.Gebouw` to json. - """ - return { - 'id': obj.id, - 'aard': { - 'id': obj.aard.id, - 'naam': obj.aard.naam, - 'definitie': obj.aard.definitie - }, - 'status': { - 'id': obj.status.id, - 'naam': obj.status.naam, - 'definitie': obj.status.definitie - } - } - - -def list_subadres_adapter(obj, request): - """ - Adapter for rendering a list of - :class:`crabpy.gateway.crab.Subadres` to json. - """ - return { - 'id': obj.id, - 'subadres': obj.subadres, - 'status': { - 'id': obj.status.id, - 'naam': obj.status.naam, - 'definitie': obj.status.definitie - } - } - - -def list_postkantons_adapter(obj, request): - """ - Adapter for rendering a list of - :class:`crabpy.gateway.crab.Postkanton` to json. - """ - return { - 'id': obj.id - } - - -def list_adresposities_adapter(obj, request): - """ - Adapter for rendering a list of - :class:`crabpy.gateway.crab.Adrespositie` to json. - """ - return { - 'id': obj.id, - 'herkomst': { - 'id': obj.herkomst.id, - 'naam': obj.herkomst.naam, - 'definitie': obj.herkomst.definitie - } - } - - -def list_landen_adapter(obj, request): - """ - Adapter for rendering a list of landen to json. - """ - return { - 'id': obj.alpha_2, - 'naam': _(obj.name) - } - - -json_list_renderer.add_adapter(crab.Gewest, list_gewesten_adapter) -json_list_renderer.add_adapter(crab.Provincie, list_provincie_adapter) -json_list_renderer.add_adapter(crab.Gemeente, list_gemeente_adapter) -json_list_renderer.add_adapter(crab.Deelgemeente, list_deelgemeente_adapter) -json_list_renderer.add_adapter(crab.Straat, list_straten_adapter) -json_list_renderer.add_adapter(crab.Huisnummer, list_huisnummers_adapter) -json_list_renderer.add_adapter(crab.Perceel, list_percelen_adapter) -json_list_renderer.add_adapter(crab.Gebouw, list_gebouwen_adapter) -json_list_renderer.add_adapter(crab.Subadres, list_subadres_adapter) -json_list_renderer.add_adapter(crab.Postkanton, list_postkantons_adapter) -json_list_renderer.add_adapter(crab.Adrespositie, list_adresposities_adapter) -json_list_renderer.add_adapter(pycountry.db.Data, list_landen_adapter) - - -def item_gewest_adapter(obj, request): - """ - Adapter for rendering an object of - :class:`crabpy.gateway.crab.Gewest` to json. - """ - return { - 'id': obj.id, - 'namen': obj._namen, - 'centroid': obj.centroid, - 'bounding_box': obj.bounding_box - } - - -def item_provincie_adapter(obj, request): - """ - Adapter for rendering a object of - :class:`crabpy.gateway.crab.Provincie` to json. - """ - return { - 'niscode': obj.niscode, - 'naam': obj.naam, - 'gewest': { - 'id': obj.gewest.id, - 'naam': obj.gewest.naam - } - } - - -def item_gemeente_adapter(obj, request): - """ - Adapter for rendering an object of - :class:`crabpy.gateway.crab.Gemeente` to json. - """ - return { - 'id': obj.id, - 'niscode': obj.niscode, - 'naam': obj.naam, - 'centroid': obj.centroid, - 'bounding_box': obj.bounding_box, - 'metadata': { - 'begin_tijd': obj.metadata.begin_tijd, - 'begin_datum': obj.metadata.begin_datum, - 'begin_bewerking': { - 'id': obj.metadata.begin_bewerking.id, - 'naam': obj.metadata.begin_bewerking.naam, - 'definitie': obj.metadata.begin_bewerking.definitie - }, - 'begin_organisatie': { - 'id': obj.metadata.begin_organisatie.id, - 'naam': obj.metadata.begin_organisatie.naam, - 'definitie': obj.metadata.begin_organisatie.definitie - } - } - } - - -def item_deelgemeente_adapter(obj, request): - """ - Adapter for rendering a object of - :class:`crabpy.gateway.crab.Deelgemeente` to json. - """ - return { - 'id': obj.id, - 'naam': obj.naam, - 'gemeente': { - 'id': obj.gemeente.id, - 'naam': obj.gemeente.naam - } - } - - -def item_straat_adapter(obj, request): - """ - Adapter for rendering an object of - :class:`crabpy.gateway.crab.Straat` to json. - """ - return { - 'id': obj.id, - 'label': obj.label, - 'namen': obj.namen, - 'status': { - 'id': obj.status.id, - 'naam': obj.status.naam, - 'definitie': obj.status.definitie - }, - 'taal': { - 'id': obj.taal.id, - 'naam': obj.taal.naam, - 'definitie': obj.taal.definitie - }, - 'metadata': { - 'begin_tijd': obj.metadata.begin_tijd, - 'begin_datum': obj.metadata.begin_datum, - 'begin_bewerking': { - 'id': obj.metadata.begin_bewerking.id, - 'naam': obj.metadata.begin_bewerking.naam, - 'definitie': obj.metadata.begin_bewerking.definitie - }, - 'begin_organisatie': { - 'id': obj.metadata.begin_organisatie.id, - 'naam': obj.metadata.begin_organisatie.naam, - 'definitie': obj.metadata.begin_organisatie.definitie - } - }, - 'bounding_box': obj.bounding_box - } - - -def item_huisnummer_adapter(obj, request): - """ - Adapter for rendering an object of - :class:`crabpy.gateway.crab.Huisnummer` to json. - """ - return { - 'id': obj.id, - 'huisnummer': obj.huisnummer, - 'postadres': obj.postadres, - 'status': { - 'id': obj.status.id, - 'naam': obj.status.naam, - 'definitie': obj.status.definitie - }, - 'metadata': { - 'begin_tijd': obj.metadata.begin_tijd, - 'begin_datum': obj.metadata.begin_datum, - 'begin_bewerking': { - 'id': obj.metadata.begin_bewerking.id, - 'naam': obj.metadata.begin_bewerking.naam, - 'definitie': obj.metadata.begin_bewerking.definitie - }, - 'begin_organisatie': { - 'id': obj.metadata.begin_organisatie.id, - 'naam': obj.metadata.begin_organisatie.naam, - 'definitie': obj.metadata.begin_organisatie.definitie - } - }, - 'bounding_box': obj.bounding_box - } - - -def item_perceel_crab_adapter(obj, request): - """ - Adapter for rendering an object of - :class:`crabpy.gateway.crab.Perceel` to json. - """ - return { - 'id': obj.id, - 'centroid': obj.centroid, - 'postadressen': obj.postadressen, - 'metadata': { - 'begin_tijd': obj.metadata.begin_tijd, - 'begin_datum': obj.metadata.begin_datum, - 'begin_bewerking': { - 'id': obj.metadata.begin_bewerking.id, - 'naam': obj.metadata.begin_bewerking.naam, - 'definitie': obj.metadata.begin_bewerking.definitie - }, - 'begin_organisatie': { - 'id': obj.metadata.begin_organisatie.id, - 'naam': obj.metadata.begin_organisatie.naam, - 'definitie': obj.metadata.begin_organisatie.definitie - } - } - } - - -def item_gebouw_adapter(obj, request): - """ - Adapter for rendering an object of - :class:`crabpy.gateway.crab.Gebouw` to json. - """ - return { - 'id': obj.id, - 'aard': { - 'id': obj.aard.id, - 'naam': obj.aard.naam, - 'definitie': obj.aard.definitie - }, - 'status': { - 'id': obj.status.id, - 'naam': obj.status.naam, - 'definitie': obj.status.definitie - }, - 'geometriemethode': { - 'id': obj.methode.id, - 'naam': obj.methode.naam, - 'definitie': obj.methode.definitie - }, - 'geometrie': obj.geometrie, - 'metadata': { - 'begin_tijd': obj.metadata.begin_tijd, - 'begin_datum': obj.metadata.begin_datum, - 'begin_bewerking': { - 'id': obj.metadata.begin_bewerking.id, - 'naam': obj.metadata.begin_bewerking.naam, - 'definitie': obj.metadata.begin_bewerking.definitie - }, - 'begin_organisatie': { - 'id': obj.metadata.begin_organisatie.id, - 'naam': obj.metadata.begin_organisatie.naam, - 'definitie': obj.metadata.begin_organisatie.definitie - } - } - } - - -def item_wegobject_adapter(obj, request): - """ - Adapter for rendering a list of - :class:`crabpy.gateway.Wegobject` to json. - """ - return { - 'id': obj.id, - 'aard': { - 'id': obj.aard.id, - 'naam': obj.aard.naam, - 'definitie': obj.aard.definitie - }, - 'centroid': obj.centroid, - 'bounding_box': obj.bounding_box, - 'metadata': { - 'begin_tijd': obj.metadata.begin_tijd, - 'begin_datum': obj.metadata.begin_datum, - 'begin_bewerking': { - 'id': obj.metadata.begin_bewerking.id, - 'naam': obj.metadata.begin_bewerking.naam, - 'definitie': obj.metadata.begin_bewerking.definitie - }, - 'begin_organisatie': { - 'id': obj.metadata.begin_organisatie.id, - 'naam': obj.metadata.begin_organisatie.naam, - 'definitie': obj.metadata.begin_organisatie.definitie - } - } - } - - -def item_subadres_adapter(obj, request): - """ - Adapter for rendering an item of - :class:`crabpy.gateway.Subadres` to json. - """ - return { - 'id': obj.id, - 'subadres': obj.subadres, - 'postadres': obj.postadres, - 'status': { - 'id': obj.status.id, - 'naam': obj.status.naam, - 'definitie': obj.status.definitie - }, - 'aard': { - 'id': obj.aard.id, - 'naam': obj.aard.naam, - 'definitie': obj.aard.definitie - }, - 'metadata': { - 'begin_tijd': obj.metadata.begin_tijd, - 'begin_datum': obj.metadata.begin_datum, - 'begin_bewerking': { - 'id': obj.metadata.begin_bewerking.id, - 'naam': obj.metadata.begin_bewerking.naam, - 'definitie': obj.metadata.begin_bewerking.definitie - }, - 'begin_organisatie': { - 'id': obj.metadata.begin_organisatie.id, - 'naam': obj.metadata.begin_organisatie.naam, - 'definitie': obj.metadata.begin_organisatie.definitie - } - } - } - - -def item_adrespositie_adapter(obj, request): - """ - Adapter for rendering an item of - :class:`crabpy.gateway.Adrespositie` to json. - """ - return { - 'id': obj.id, - 'herkomst': { - 'id': obj.herkomst.id, - 'naam': obj.herkomst.naam, - 'definitie': obj.herkomst.definitie - }, - 'geometrie': obj.geometrie, - 'aard': { - 'id': obj.aard.id, - 'naam': obj.aard.naam, - 'definitie': obj.aard.definitie - }, - 'metadata': { - 'begin_tijd': obj.metadata.begin_tijd, - 'begin_datum': obj.metadata.begin_datum, - 'begin_bewerking': { - 'id': obj.metadata.begin_bewerking.id, - 'naam': obj.metadata.begin_bewerking.naam, - 'definitie': obj.metadata.begin_bewerking.definitie - }, - 'begin_organisatie': { - 'id': obj.metadata.begin_organisatie.id, - 'naam': obj.metadata.begin_organisatie.naam, - 'definitie': obj.metadata.begin_organisatie.definitie - } - } - } - - -def item_land_adapter(obj, request): - """ - Adapter for rendering an item of - :class: `pycountry.db.Data` to json. - """ - return { - 'id': obj.alpha_2, - 'alpha2': obj.alpha_2, - 'alpha3': obj.alpha_3, - 'naam': _(obj.name) - } - - -def item_postkanton_adapter(obj, request): - """ - Adapter for rendering an item of - :class: `pycountry.db.Data` to json. - """ - return { - 'postcode': obj.id, - } - - -json_item_renderer.add_adapter(crab.Gewest, item_gewest_adapter) -json_item_renderer.add_adapter(crab.Provincie, item_provincie_adapter) -json_item_renderer.add_adapter(crab.Gemeente, item_gemeente_adapter) -json_item_renderer.add_adapter(crab.Deelgemeente, item_deelgemeente_adapter) -json_item_renderer.add_adapter(crab.Straat, item_straat_adapter) -json_item_renderer.add_adapter(crab.Huisnummer, item_huisnummer_adapter) -json_item_renderer.add_adapter(crab.Perceel, item_perceel_crab_adapter) -json_item_renderer.add_adapter(crab.Gebouw, item_gebouw_adapter) -json_item_renderer.add_adapter(crab.Wegobject, item_wegobject_adapter) -json_item_renderer.add_adapter(crab.Subadres, item_subadres_adapter) -json_item_renderer.add_adapter(crab.Adrespositie, item_adrespositie_adapter) -json_item_renderer.add_adapter(pycountry.db.Data, item_land_adapter) -json_item_renderer.add_adapter(crab.Postkanton, item_postkanton_adapter) diff --git a/crabpy_pyramid/routes/crab.py b/crabpy_pyramid/routes/crab.py deleted file mode 100644 index 22e2e60..0000000 --- a/crabpy_pyramid/routes/crab.py +++ /dev/null @@ -1,102 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Routes for the CRAB views. - -.. versionadded:: 0.1.0 -""" -import crabpy_pyramid - - -def includeme(config): - crabpy_pyramid.add_route(config, - 'list_gewesten', - '/crab/gewesten') - crabpy_pyramid.add_route(config, - 'get_gewest_by_id', - '/crab/gewesten/{gewest_id}') - crabpy_pyramid.add_route(config, - 'list_provincies', - '/crab/gewesten/{gewest_id}/provincies') - crabpy_pyramid.add_route(config, - 'get_provincie', - '/crab/provincies/{provincie_id}') - crabpy_pyramid.add_route(config, - 'list_gemeenten_by_provincie', - '/crab/provincies/{provincie_id}/gemeenten') - crabpy_pyramid.add_route(config, - 'list_gemeenten_crab', - '/crab/gewesten/{gewest_id}/gemeenten') - crabpy_pyramid.add_route(config, - 'get_gemeente_crab', - '/crab/gemeenten/{gemeente_id}') - crabpy_pyramid.add_route(config, - 'list_deelgemeenten', - '/crab/gewesten/{gewest_id}/deelgemeenten') - crabpy_pyramid.add_route(config, - 'list_deelgemeenten_by_gemeente', - '/crab/gemeenten/{gemeente_id}/deelgemeenten') - crabpy_pyramid.add_route(config, - 'get_deelgemeente_by_id', - '/crab/deelgemeenten/{deelgemeente_id}') - crabpy_pyramid.add_route(config, - 'list_straten', - '/crab/gemeenten/{gemeente_id}/straten') - crabpy_pyramid.add_route(config, - 'get_straat_by_id', - '/crab/straten/{straat_id}') - crabpy_pyramid.add_route(config, - 'get_wegobject', - '/crab/wegobjecten/{wegobject_id}') - crabpy_pyramid.add_route(config, - 'list_huisnummers', - '/crab/straten/{straat_id}/huisnummers') - crabpy_pyramid.add_route( - config, - 'get_huisnummer_by_straat_and_label', - '/crab/straten/{straat_id}/huisnummers/{huisnummer_label}') - crabpy_pyramid.add_route(config, - 'get_huisnummer_by_id', - '/crab/huisnummers/{huisnummer_id}') - crabpy_pyramid.add_route(config, - 'list_percelen', - '/crab/huisnummers/{huisnummer_id}/percelen') - crabpy_pyramid.add_route(config, - 'get_perceel_by_id', - '/crab/percelen/{perceel_id1}/{perceel_id2}') - crabpy_pyramid.add_route( - config, - 'list_huisnummers_by_perceel', - '/crab/percelen/{perceel_id1}/{perceel_id2}/huisnummers') - crabpy_pyramid.add_route(config, - 'list_gebouwen', - '/crab/huisnummers/{huisnummer_id}/gebouwen') - crabpy_pyramid.add_route(config, - 'get_gebouw_by_id', - '/crab/gebouwen/{gebouw_id}') - crabpy_pyramid.add_route(config, - 'list_subadressen', - '/crab/huisnummers/{huisnummer_id}/subadressen') - crabpy_pyramid.add_route(config, - 'get_subadres_by_id', - '/crab/subadressen/{subadres_id}') - crabpy_pyramid.add_route(config, - 'list_postkantons_by_gemeente', - '/crab/gemeenten/{gemeente_id}/postkantons') - crabpy_pyramid.add_route(config, - 'list_adresposities_by_huisnummer', - '/crab/huisnummers/{huisnummer_id}/adresposities') - crabpy_pyramid.add_route(config, - 'list_adresposities_by_subadres', - '/crab/subadressen/{subadres_id}/adresposities') - crabpy_pyramid.add_route(config, - 'get_adrespositie_by_id', - '/crab/adresposities/{adrespositie_id}') - crabpy_pyramid.add_route(config, - 'list_landen', - '/crab/landen') - crabpy_pyramid.add_route(config, - 'get_land_by_id', - '/crab/landen/{land_id}') - crabpy_pyramid.add_route(config, - 'get_postkanton_by_huisnummer', - '/crab/huisnummers/{huisnummer_id}/postkanton') diff --git a/crabpy_pyramid/tests/test_crab.py b/crabpy_pyramid/tests/test_crab.py deleted file mode 100644 index c024753..0000000 --- a/crabpy_pyramid/tests/test_crab.py +++ /dev/null @@ -1,94 +0,0 @@ -# -*- coding: utf-8 -*- -''' -Testing of the crab specific aspects. -.. versionadded:: 0.1.0 -''' - -from pyramid import testing -from crabpy.gateway.crab import CrabGateway -from crabpy.client import crab_factory - -from crabpy_pyramid import ( - get_crab, - _build_crab, - ICrab, - _parse_settings, - _filter_settings -) - -import warnings - -try: - import unittest2 as unittest -except ImportError: - import unittest # noqa - - -class TestRegistry(object): - - def __init__(self, settings=None): - - if settings is None: - self.settings = {} - else: - self.settings = settings - - self.crab = None - - def queryUtility(self, iface): - return self.crab - - def registerUtility(self, crab, iface): - self.crab = crab - - -class TestGetAndBuild(unittest.TestCase): - - def test_get_crab(self): - r = TestRegistry() - G = CrabGateway(crab_factory()) - r.registerUtility(G, ICrab) - G2 = get_crab(r) - self.assertIsInstance(G, CrabGateway) - self.assertIsInstance(G2, CrabGateway) - self.assertEqual(G, G2) - - def test_build_crab_already_exists(self): - r = TestRegistry() - G = CrabGateway(crab_factory()) - r.registerUtility(G, ICrab) - G2 = _build_crab(r, {}) - self.assertIsInstance(G, CrabGateway) - self.assertIsInstance(G2, CrabGateway) - self.assertEqual(G, G2) - - def test_build_crab_default_settings(self): - r = TestRegistry() - G = CrabGateway(crab_factory()) - r.registerUtility(G, ICrab) - G2 = _build_crab(r, {}) - self.assertIsInstance(G, CrabGateway) - self.assertIsInstance(G2, CrabGateway) - self.assertEqual(G, G2) - - def test_build_crab_custom_settings(self): - settings = { - 'crabpy.cache.file.root': './dogpile_data/', - 'crabpy.crab.wsdl': 'http://crab.agiv.be/wscrab/WsCrab.svc?wsdl', - 'crabpy.crab.permanent.backend': 'dogpile.cache.dbm', - 'crabpy.crab.permanent.expiration_time': 604800, - 'crabpy.crab.permanent.arguments.filename': 'dogpile_data/crab_permanent.dbm', - 'crabpy.crab.long.backend': 'dogpile.cache.dbm', - 'crabpy.crab.long.expiration_time': 86400, - 'crabpy.crab.long.arguments.filename': 'dogpile_data/crab_long.dbm', - 'crabpy.crab.short.backend': 'dogpile.cache.dbm', - 'crabpy.crab.short.expiration_time': 3600, - 'crabpy.crab.short.arguments.filename': 'dogpile_data/crab_short.dbm' - } - r = TestRegistry(settings) - crab_settings = _filter_settings(_parse_settings(settings), 'crab.') - self.assertIn('wsdl', crab_settings) - if 'include' in crab_settings: - del crab_settings['include'] - G = _build_crab(r, crab_settings) - self.assertIsInstance(G, CrabGateway) diff --git a/crabpy_pyramid/tests/test_functional.py b/crabpy_pyramid/tests/test_functional.py index 901d635..4d90d2a 100644 --- a/crabpy_pyramid/tests/test_functional.py +++ b/crabpy_pyramid/tests/test_functional.py @@ -61,22 +61,6 @@ def run_integration_tests(section): "crabpy.capakey.cache_config.short.arguments.filename": os.path.join( os.path.dirname(__file__), "dogpile_data", "capakey_short.dbm" ), - "crabpy.crab.include": True, - "crabpy.crab.cache_config.permanent.backend": "dogpile.cache.dbm", - "crabpy.crab.cache_config.permanent.expiration_time": 604800, - "crabpy.crab.cache_config.permanent.arguments.filename": os.path.join( - os.path.dirname(__file__), "dogpile_data", "crab_permanent.dbm" - ), - "crabpy.crab.cache_config.long.backend": "dogpile.cache.dbm", - "crabpy.crab.cache_config.long.expiration_time": 86400, - "crabpy.crab.cache_config.long.arguments.filename": os.path.join( - os.path.dirname(__file__), "dogpile_data", "crab_long.dbm" - ), - "crabpy.crab.cache_config.short.backend": "dogpile.cache.dbm", - "crabpy.crab.cache_config.short.expiration_time": 3600, - "crabpy.crab.cache_config.short.arguments.filename": os.path.join( - os.path.dirname(__file__), "dogpile_data", "crab_short.dbm" - ), "crabpy.adressenregister.include": True, "crabpy.adressenregister.base_url": "https://api.basisregisters.vlaanderen.be", "crabpy.adressenregister.api_key": "", @@ -177,241 +161,6 @@ def test_get_perceel_by_unexisting_percid(self): self.assertEqual("404 Not Found", res.status) -@unittest.skipUnless( - run_integration_tests("crab"), "No CRAB Integration tests required" -) -class CrabFunctionalTests(FunctionalTests): - def test_list_gewesten(self): - res = self.testapp.get("/crab/gewesten") - self.assertEqual("200 OK", res.status) - - def test_get_gewest_by_id(self): - res = self.testapp.get("/crab/gewesten/2") - self.assertEqual("200 OK", res.status) - - def test_get_gewest_by_unexisting_id(self): - res = self.testapp.get("/crab/gewesten/0", status=404) - self.assertEqual("404 Not Found", res.status) - - def test_list_provincies(self): - res = self.testapp.get("/crab/gewesten/2/provincies") - self.assertEqual("200 OK", res.status) - - def test_get_provincie_by_id(self): - res = self.testapp.get("/crab/provincies/10000") - self.assertEqual("200 OK", res.status) - - def test_get_provincie_by_unexisting_id(self): - res = self.testapp.get("/crab/provincies/00000", status=404) - self.assertEqual("404 Not Found", res.status) - - def test_list_gemeenten_by_provincie(self): - res = self.testapp.get("/crab/provincies/10000/gemeenten") - self.assertEqual("200 OK", res.status) - - def test_list_gemeenten_crab(self): - res = self.testapp.get("/crab/gewesten/2/gemeenten") - self.assertEqual("200 OK", res.status) - - def test_get_gemeente_crab_niscode(self): - res = self.testapp.get("/crab/gemeenten/11001") - self.assertEqual("200 OK", res.status) - - def test_get_gemeente_crab_unexisting_niscode(self): - res = self.testapp.get("/crab/gemeenten/00000", status=404) - self.assertEqual("404 Not Found", res.status) - - def test_get_gemeente_crab_id(self): - res = self.testapp.get("/crab/gemeenten/1") - self.assertEqual("200 OK", res.status) - - def test_get_gemeente_crab_unexisting_id(self): - res = self.testapp.get("/crab/gemeenten/0", status=404) - self.assertEqual("404 Not Found", res.status) - - def test_list_deelgemeenten(self): - res = self.testapp.get("/crab/gewesten/2/deelgemeenten") - self.assertEqual("200 OK", res.status) - - def test_list_deelgemeenten_wrong_gewest(self): - res = self.testapp.get("/crab/gewesten/1/deelgemeenten", status=404) - self.assertEqual("404 Not Found", res.status) - - def test_list_deelgemeenten_by_gemeente(self): - res = self.testapp.get("/crab/gemeenten/11001/deelgemeenten") - self.assertEqual("200 OK", res.status) - - def test_list_deelgemeenten_by_unexisting_gemeente(self): - res = self.testapp.get("/crab/gemeenten/99999/deelgemeenten", status=404) - self.assertEqual("404 Not Found", res.status) - res = self.testapp.get("/crab/gemeenten/9999/deelgemeenten", status=404) - self.assertEqual("404 Not Found", res.status) - - def test_get_deelgemeente_by_id(self): - res = self.testapp.get("/crab/deelgemeenten/45062A") - self.assertEqual("200 OK", res.status) - - def test_list_straten(self): - res = self.testapp.get("/crab/gemeenten/11001/straten") - self.assertIn("naam", res.json[0]) - self.assertEqual("200 OK", res.status) - - # def test_get_straat_by_id(self): - # res = self.testapp.get("/crab/straten/1") - # self.assertEqual("200 OK", res.status) - - def test_get_straat_by_unexisting_id(self): - res = self.testapp.get("/crab/straten/0", status=404) - self.assertEqual("404 Not Found", res.status) - - def test_list_huisnummers(self): - res = self.testapp.get("/crab/straten/1/huisnummers") - self.assertEqual("200 OK", res.status) - - def test_sort_huisnummers(self): - res = self.testapp.get("/crab/straten/1/huisnummers?sort=2") - self.assertEqual("200 OK", res.status) - nummers = [int(item["label"]) for item in res.json] - ascending = sorted(nummers) - self.assertEqual(nummers, ascending) - - def test_get_huisnummer_by_straat_and_label(self): - res = self.testapp.get("/crab/straten/1/huisnummers/3") - self.assertEqual("200 OK", res.status) - - def test_get_huisnummer_by_unexisting_straat_and_label(self): - res = self.testapp.get("/crab/straten/1/huisnummers/0", status=404) - self.assertEqual("404 Not Found", res.status) - - def test_get_huisnummer_by_id(self): - res = self.testapp.get("/crab/huisnummers/1") - self.assertEqual("200 OK", res.status) - - def test_get_huisnummer_by_unexisting_id(self): - res = self.testapp.get("/crab/huisnummers/0", status=404) - self.assertEqual("404 Not Found", res.status) - - def test_list_percelen(self): - res = self.testapp.get("/crab/huisnummers/1/percelen") - self.assertEqual("200 OK", res.status) - - def test_get_perceel_by_id(self): - res = self.testapp.get("/crab/percelen/31433D0011/00T016") - self.assertEqual("200 OK", res.status) - - def test_get_perceel_by_unexisting_id(self): - res = self.testapp.get("/crab/percelen/31433D0011/000000", status=404) - self.assertEqual("404 Not Found", res.status) - - def test_list_huisnummers_by_perceel(self): - res = self.testapp.get("/crab/percelen/31433D0011/00T016/huisnummers") - self.assertEqual("200 OK", res.status) - - def test_list_huisnummers_by_unexisting_perceel(self): - res = self.testapp.get( - "/crab/percelen/31433D0011/000000/huisnummers", status=404 - ) - self.assertEqual("404 Not Found", res.status) - - def test_list_gebouwen(self): - res = self.testapp.get("/crab/huisnummers/1/gebouwen") - self.assertEqual("200 OK", res.status) - - def test_get_gebouw_by_id(self): - res = self.testapp.get("/crab/gebouwen/1538575") - self.assertEqual("200 OK", res.status) - - def test_get_gebouw_by_unexisting_id(self): - res = self.testapp.get("/crab/gebouwen/99999999", status=404) - self.assertEqual("404 Not Found", res.status) - - def test_get_wegobject(self): - res = self.testapp.get("/crab/wegobjecten/53694755") - self.assertEqual("200 OK", res.status) - - def test_get_unexisting_wegobject(self): - res = self.testapp.get("/crab/wegobjecten/00000000", status=404) - self.assertEqual("404 Not Found", res.status) - - def test_list_subadressen(self): - res = self.testapp.get("/crab/huisnummers/129462/subadressen") - self.assertEqual("200 OK", res.status) - - # def test_get_subadressen_by_id(self): - # res = self.testapp.get("/crab/subadressen/1120934") - # self.assertEqual("200 OK", res.status) - - def test_get_subadressen_by_unexisting_id(self): - res = self.testapp.get("/crab/subadressen/0000000", status=404) - self.assertEqual("404 Not Found", res.status) - - def test_list_postkantons_by_gemeente(self): - res = self.testapp.get("/crab/gemeenten/90/postkantons") - self.assertEqual("200 OK", res.status) - - def test_list_adresposities_by_huisnummer(self): - res = self.testapp.get("/crab/huisnummers/145/adresposities") - self.assertEqual("200 OK", res.status) - - def test_list_adresposities_by_subadres(self): - res = self.testapp.get("/crab/subadressen/145/adresposities") - self.assertEqual("200 OK", res.status) - - def test_get_adrespositie_by_id(self): - res = self.testapp.get("/crab/adresposities/137") - self.assertEqual("200 OK", res.status) - - def test_get_adrespositie_by_unexisting_id(self): - res = self.testapp.get("/crab/adresposities/0", status=404) - self.assertEqual("404 Not Found", res.status) - - def test_list_landen(self): - res = self.testapp.get("/crab/landen") - self.assertEqual("200 OK", res.status) - - def test_get_land_by_id(self): - res = self.testapp.get("/crab/landen/BE") - self.assertEqual("200 OK", res.status) - - def test_get_land_by_unexisting_id(self): - res = self.testapp.get("/crab/landen/MORDOR", status=404) - self.assertEqual("404 Not Found", res.status) - - def test_get_postkanton_by_huisnummer(self): - res = self.testapp.get("/crab/huisnummers/5/postkanton") - self.assertEqual("200 OK", res.status) - - def test_get_postkanton_by_huisnummer_unexisting(self): - res = self.testapp.get("/crab/huisnummers/99999999/postkanton", status=404) - self.assertEqual("404 Not Found", res.status) - - -@unittest.skipUnless( - run_integration_tests("crab"), "No CRAB Integration tests required" -) -class HttpCachingFunctionalTests(FunctionalTests): - def test_list_gewesten(self): - res = self.testapp.get("/crab/gewesten") - self.assertEqual("200 OK", res.status) - self.assertIn("ETag", res.headers) - - def test_http_304_res(self): - res = self.testapp.get("/crab/gewesten") - self.assertEqual("200 OK", res.status) - etag = res.headers["Etag"] - res2 = self.testapp.get("/crab/gewesten", headers={"If-None-Match": etag}) - self.assertEqual("304 Not Modified", res2.status) - - def test_list_gewesten_not_cached(self): - crabpy_pyramid.GENERATE_ETAG_ROUTE_NAMES.remove("list_gewesten") - try: - res = self.testapp.get("/crab/gewesten") - self.assertEqual("200 OK", res.status) - self.assertNotIn("ETag", res.headers) - finally: - crabpy_pyramid.GENERATE_ETAG_ROUTE_NAMES.add("list_gewesten") - - class AdressenRegisterFunctionalTests(FunctionalTests): def test_list_gewesten(self): res = self.testapp.get("/adressenregister/gewesten") @@ -486,7 +235,11 @@ def test_list_gemeenten_by_provincie(self): self.assertEqual("200 OK", res.status) self.assertEqual(len(res.json), 69) self.assertDictEqual( - {'naam': 'Aartselaar', 'niscode': '11001', 'provincie': {'niscode': '10000'}}, + { + "naam": "Aartselaar", + "niscode": "11001", + "provincie": {"niscode": "10000"}, + }, res.json[0], ) @@ -684,11 +437,12 @@ def test_error_other_then_404_400(self): json=adres, status=413, ) - res = self.testapp.get("/adressenregister/adressen/900746", expect_errors=True) + res = self.testapp.get( + "/adressenregister/adressen/900746", expect_errors=True + ) self.assertEqual(500, res.status_code) self.assertIn( - "Er ging iets fout in de vraag naar adressenregister API.", - res.text + "Er ging iets fout in de vraag naar adressenregister API.", res.text ) def test_get_adres_by_straat_and_huisnummer_and_busnummer_404(self): diff --git a/crabpy_pyramid/tests/tests.py b/crabpy_pyramid/tests/tests.py index 753065f..cd2798b 100644 --- a/crabpy_pyramid/tests/tests.py +++ b/crabpy_pyramid/tests/tests.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- -''' +""" Testing of the initialization. .. versionadded:: 0.1.0 -''' +""" from pyramid import testing from crabpy.gateway.capakey import CapakeyRestGateway @@ -13,9 +13,8 @@ from crabpy_pyramid import ( includeme, ICapakey, - ICrab, _filter_settings, - _get_proxy_settings + _get_proxy_settings, ) import warnings @@ -27,31 +26,20 @@ class TestSettings(unittest.TestCase): - def setUp(self): self.config = testing.setUp( - settings = { - 'crabpy.capakey.include': True, - 'crabpy.cache.file.root': './dogpile_data/', - 'crabpy.capakey.cache_config.permanent.backend': 'dogpile.cache.dbm', - 'crabpy.capakey.cache_config.permanent.expiration_time': 604800, - 'crabpy.capakey.cache_config.permanent.arguments.filename': 'dogpile_data/capakey_permanent.dbm', - 'crabpy.capakey.cache_config.long.backend': 'dogpile.cache.dbm', - 'crabpy.capakey.cache_config.long.expiration_time': 86400, - 'crabpy.capakey.cache_config.long.arguments.filename': 'dogpile_data/capakey_long.dbm', - 'crabpy.capakey.cache_config.short.backend': 'dogpile.cache.dbm', - 'crabpy.capakey.cache_config.short.expiration_time': 3600, - 'crabpy.capakey.cache_config.short.arguments.filename': 'dogpile_data/capakey_short.dbm', - 'crabpy.crab.include': True, - 'crabpy.crab.cache_config.permanent.backend': 'dogpile.cache.dbm', - 'crabpy.crab.cache_config.permanent.expiration_time': 604800, - 'crabpy.crab.cache_config.permanent.arguments.filename': 'dogpile_data/crab_permanent.dbm', - 'crabpy.crab.cache_config.long.backend': 'dogpile.cache.dbm', - 'crabpy.crab.cache_config.long.expiration_time': 86400, - 'crabpy.crab.cache_config.long.arguments.filename': 'dogpile_data/crab_long.dbm', - 'crabpy.crab.cache_config.short.backend': 'dogpile.cache.dbm', - 'crabpy.crab.cache_config.short.expiration_time': 3600, - 'crabpy.crab.cache_config.short.arguments.filename': 'dogpile_data/crab_short.dbm' + settings={ + "crabpy.capakey.include": True, + "crabpy.cache.file.root": "./dogpile_data/", + "crabpy.capakey.cache_config.permanent.backend": "dogpile.cache.dbm", + "crabpy.capakey.cache_config.permanent.expiration_time": 604800, + "crabpy.capakey.cache_config.permanent.arguments.filename": "dogpile_data/capakey_permanent.dbm", + "crabpy.capakey.cache_config.long.backend": "dogpile.cache.dbm", + "crabpy.capakey.cache_config.long.expiration_time": 86400, + "crabpy.capakey.cache_config.long.arguments.filename": "dogpile_data/capakey_long.dbm", + "crabpy.capakey.cache_config.short.backend": "dogpile.cache.dbm", + "crabpy.capakey.cache_config.short.expiration_time": 3600, + "crabpy.capakey.cache_config.short.arguments.filename": "dogpile_data/capakey_short.dbm", } ) @@ -61,55 +49,51 @@ def tearDown(self): def test_filter_settings(self): settings = _filter_settings( { - 'cache.file.root' : '/tmp', - 'crab.include': True, - 'capakey.include': False, + "cache.file.root": "/tmp", + "capakey.include": False, }, - 'capakey.' + "capakey.", ) self.assertEquals(1, len(settings)) - self.assertFalse(settings['include']) - self.assertNotIn('cache.file.root', settings) + self.assertFalse(settings["include"]) + self.assertNotIn("cache.file.root", settings) def test_filter_settings_with_proxy(self): settings = { - 'proxy.http' : 'http://proxy.example.com:3128', - 'proxy.https' : 'https://httpsproxy.example.com:3128', - 'crab.include': True, - 'crab.cache_config.permanent.backend': 'dogpile.cache.dbm', + "proxy.http": "http://proxy.example.com:3128", + "proxy.https": "https://httpsproxy.example.com:3128", + "crab.cache_config.permanent.backend": "dogpile.cache.dbm", } base_settings = _get_proxy_settings(settings) - crab_settings = dict(_filter_settings(settings, 'crab.'), **base_settings) - self.assertIn('proxy', crab_settings) - self.assertIn('http', crab_settings["proxy"]) - self.assertIn('https', crab_settings["proxy"]) + crab_settings = dict(_filter_settings(settings, "crab."), **base_settings) + self.assertIn("proxy", crab_settings) + self.assertIn("http", crab_settings["proxy"]) + self.assertIn("https", crab_settings["proxy"]) def test_empty_proxy_settings(self): settings = { - 'proxy.http' : '', - 'proxy.https' : '', + "proxy.http": "", + "proxy.https": "", } base_settings = _get_proxy_settings(settings) - self.assertNotIn('proxy', base_settings) + self.assertNotIn("proxy", base_settings) def test_includeme_existing_root(self): includeme(self.config) capakey = self.config.registry.queryUtility(ICapakey) self.assertIsInstance(capakey, CapakeyRestGateway) - crab = self.config.registry.queryUtility(ICrab) - self.assertIsInstance(crab, CrabGateway) def test_includeme_nonexisting_root(self): - root = './testdir/' - self.config.registry.settings['crabpy.cache.file.root'] = root + root = "./testdir/" + self.config.registry.settings["crabpy.cache.file.root"] = root includeme(self.config) capakey = self.config.registry.queryUtility(ICapakey) self.assertIsInstance(capakey, CapakeyRestGateway) - crab = self.config.registry.queryUtility(ICrab) - self.assertIsInstance(crab, CrabGateway) os.rmdir(root) def test_directive_was_added(self): includeme(self.config) r = self.config.registry.settings - self.assertEqual('dogpile.cache.dbm', r['crabpy.capakey.cache_config.permanent.backend']) + self.assertEqual( + "dogpile.cache.dbm", r["crabpy.capakey.cache_config.permanent.backend"] + ) diff --git a/crabpy_pyramid/views/crab.py b/crabpy_pyramid/views/crab.py deleted file mode 100644 index 1670527..0000000 --- a/crabpy_pyramid/views/crab.py +++ /dev/null @@ -1,429 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Views for CRAB services - -.. versionadded:: 0.1.0 -""" -import logging - -import pycountry -from crabpy.gateway.exception import GatewayResourceNotFoundException -from pyramid.httpexceptions import HTTPNotFound -from pyramid.view import view_config - -from crabpy_pyramid.utils import range_return -from crabpy_pyramid.utils import set_http_caching - -log = logging.getLogger(__name__) - - -@view_config( - route_name='list_gewesten', - renderer='crab_listjson', accept='application/json' -) -def list_gewesten(request): - request = set_http_caching(request, 'crab', 'permanent') - Gateway = request.crab_gateway() - sort = request.params.get('sort', 1) - gewesten = Gateway.list_gewesten(sort) - return range_return(request, gewesten) - - -@view_config( - route_name='get_gewest_by_id', - renderer='crab_itemjson', accept='application/json' -) -def get_gewest_by_id(request): - request = set_http_caching(request, 'crab', 'permanent') - Gateway = request.crab_gateway() - gewest_id = int(request.matchdict.get('gewest_id')) - try: - return Gateway.get_gewest_by_id(gewest_id) - except GatewayResourceNotFoundException: - return HTTPNotFound() - - -@view_config( - route_name='list_provincies', - renderer='crab_listjson', accept='application/json' -) -def list_provincies(request): - request = set_http_caching(request, 'crab', 'permanent') - Gateway = request.crab_gateway() - gewest_id = int(request.matchdict.get('gewest_id')) - provincies = Gateway.list_provincies(gewest_id) - return range_return(request, provincies) - - -@view_config( - route_name='get_provincie', - renderer='crab_itemjson', accept='application/json' -) -def get_provincie(request): - request = set_http_caching(request, 'crab', 'permanent') - Gateway = request.crab_gateway() - provincie_id = int(request.matchdict.get('provincie_id')) - try: - return Gateway.get_provincie_by_id(provincie_id) - except GatewayResourceNotFoundException: - return HTTPNotFound() - - -@view_config( - route_name='list_gemeenten_by_provincie', - renderer='crab_listjson', accept='application/json' -) -def list_gemeenten_by_provincie(request): - request = set_http_caching(request, 'crab', 'long') - Gateway = request.crab_gateway() - provincie_id = int(request.matchdict.get('provincie_id')) - gemeenten = Gateway.list_gemeenten_by_provincie(provincie_id) - return range_return(request, gemeenten) - - -@view_config( - route_name='list_gemeenten_crab', - renderer='crab_listjson', accept='application/json' -) -def list_gemeenten_crab(request): - request = set_http_caching(request, 'crab', 'permanent') - Gateway = request.crab_gateway() - sort = request.params.get('sort', 'niscode') - sort_map = {'id': 1, 'naam': 2, 'niscode': 6} - sort = sort_map.get(sort, 6) - gewest_id = request.matchdict.get('gewest_id') - gemeenten = Gateway.list_gemeenten(gewest_id, sort) - return range_return(request, gemeenten) - - -@view_config( - route_name='get_gemeente_crab', - renderer='crab_itemjson', accept='application/json' -) -def get_gemeente_crab(request): - request = set_http_caching(request, 'crab', 'long') - Gateway = request.crab_gateway() - gemeente_id = request.matchdict.get('gemeente_id') - if len(gemeente_id) == 5: - try: - return Gateway.get_gemeente_by_niscode(gemeente_id) - except GatewayResourceNotFoundException: - return HTTPNotFound() - else: - try: - return Gateway.get_gemeente_by_id(gemeente_id) - except GatewayResourceNotFoundException: - return HTTPNotFound() - - -@view_config( - route_name='list_deelgemeenten', - renderer='crab_listjson', accept='application/json' -) -def list_deelgemeenten(request): - Gateway = request.crab_gateway() - gewest_id = int(request.matchdict.get('gewest_id')) - if gewest_id != 2: - return HTTPNotFound() - deelgemeenten = Gateway.list_deelgemeenten(gewest_id) - return range_return(request, deelgemeenten) - - -@view_config( - route_name='list_deelgemeenten_by_gemeente', - renderer='crab_listjson', accept='application/json' -) -def list_deelgemeenten_by_gemeente(request): - request = set_http_caching(request, 'crab', 'permanent') - Gateway = request.crab_gateway() - gemeente_id = request.matchdict.get('gemeente_id') - if len(gemeente_id) == 5: - try: - gemeente = Gateway.get_gemeente_by_niscode(gemeente_id) - except GatewayResourceNotFoundException: - return HTTPNotFound() - else: - try: - gemeente = Gateway.get_gemeente_by_id(gemeente_id) - except GatewayResourceNotFoundException: - return HTTPNotFound() - deelgemeenten = Gateway.list_deelgemeenten_by_gemeente(gemeente) - return range_return(request, deelgemeenten) - - -@view_config( - route_name='get_deelgemeente_by_id', - renderer='crab_itemjson', accept='application/json' -) -def get_deelgemeente_by_id(request): - request = set_http_caching(request, 'crab', 'permanent') - Gateway = request.crab_gateway() - deelgemeente_id = request.matchdict.get('deelgemeente_id') - try: - return Gateway.get_deelgemeente_by_id(deelgemeente_id) - except GatewayResourceNotFoundException: - return HTTPNotFound() - - -@view_config( - route_name='list_straten', - renderer='crab_listjson', accept='application/json' -) -def list_straten(request): - request = set_http_caching(request, 'crab', 'long') - Gateway = request.crab_gateway() - gemeente_id = request.matchdict.get('gemeente_id') - if len(gemeente_id) == 5: - gemeente_id = Gateway.get_gemeente_by_niscode(gemeente_id) - straten = Gateway.list_straten(gemeente_id) - return range_return(request, straten) - - -@view_config( - route_name='get_straat_by_id', - renderer='crab_itemjson', accept='application/json' -) -def get_straat_by_id(request): - request = set_http_caching(request, 'crab', 'long') - Gateway = request.crab_gateway() - straat_id = request.matchdict.get('straat_id') - try: - return Gateway.get_straat_by_id(straat_id) - except GatewayResourceNotFoundException: - return HTTPNotFound() - - -@view_config( - route_name='list_huisnummers', - renderer='crab_listjson', accept='application/json' -) -def list_huisnummers(request): - request = set_http_caching(request, 'crab', 'short') - Gateway = request.crab_gateway() - straat_id = request.matchdict.get('straat_id') - sort = request.params.get('sort', 1) - huisnummers = Gateway.list_huisnummers_by_straat(straat_id, sort) - return range_return(request, huisnummers) - - -@view_config( - route_name='get_huisnummer_by_straat_and_label', - renderer='crab_itemjson', accept='application/json' -) -def get_huisnummer_by_straat_and_label(request): - request = set_http_caching(request, 'crab', 'short') - Gateway = request.crab_gateway() - straat_id = request.matchdict.get('straat_id') - huisnummer = request.matchdict.get('huisnummer_label') - try: - return Gateway.get_huisnummer_by_nummer_and_straat(huisnummer, straat_id) - except GatewayResourceNotFoundException: - return HTTPNotFound() - - -@view_config( - route_name='get_huisnummer_by_id', - renderer='crab_itemjson', accept='application/json' -) -def get_huisnummer_by_id(request): - request = set_http_caching(request, 'crab', 'short') - Gateway = request.crab_gateway() - huisnummer_id = request.matchdict.get('huisnummer_id') - try: - return Gateway.get_huisnummer_by_id(huisnummer_id) - except GatewayResourceNotFoundException: - return HTTPNotFound() - - -@view_config( - route_name='list_percelen', - renderer='crab_listjson', accept='application/json' -) -def list_percelen(request): - request = set_http_caching(request, 'crab', 'short') - Gateway = request.crab_gateway() - huisnummer_id = request.matchdict.get('huisnummer_id') - percelen = Gateway.list_percelen_by_huisnummer(huisnummer_id) - return range_return(request, percelen) - - -@view_config( - route_name='get_perceel_by_id', - renderer='crab_itemjson', accept='application/json' -) -def get_perceel_by_id(request): - request = set_http_caching(request, 'crab', 'short') - Gateway = request.crab_gateway() - perceel_id = request.matchdict.get('perceel_id1') + '/' + request.matchdict.get('perceel_id2') - try: - return Gateway.get_perceel_by_id(perceel_id) - except GatewayResourceNotFoundException: - return HTTPNotFound() - - -@view_config( - route_name='list_huisnummers_by_perceel', - renderer='crab_listjson', accept='application/json' -) -def list_huisnummers_by_perceel(request): - request = set_http_caching(request, 'crab', 'short') - Gateway = request.crab_gateway() - perceel_id = request.matchdict.get('perceel_id1') + '/' + request.matchdict.get('perceel_id2') - sort = request.params.get('sort', 1) - try: - perceel = Gateway.get_perceel_by_id(perceel_id) - return Gateway.list_huisnummers_by_perceel(perceel, sort) - except GatewayResourceNotFoundException: - return HTTPNotFound() - - -@view_config( - route_name='list_gebouwen', - renderer='crab_listjson', accept='application/json' -) -def list_gebouwen(request): - request = set_http_caching(request, 'crab', 'short') - Gateway = request.crab_gateway() - huisnummer_id = request.matchdict.get('huisnummer_id') - gebouwen = Gateway.list_gebouwen_by_huisnummer(huisnummer_id) - return range_return(request, gebouwen) - - -@view_config( - route_name='get_gebouw_by_id', - renderer='crab_itemjson', accept='application/json' -) -def get_gebouw_by_id(request): - request = set_http_caching(request, 'crab', 'short') - Gateway = request.crab_gateway() - gebouw_id = request.matchdict.get('gebouw_id') - try: - return Gateway.get_gebouw_by_id(gebouw_id) - except GatewayResourceNotFoundException: - return HTTPNotFound() - - -@view_config( - route_name='get_wegobject', - renderer='crab_itemjson', accept='application/json' -) -def get_wegobject(request): - request = set_http_caching(request, 'crab', 'short') - Gateway = request.crab_gateway() - wegobject_id = request.matchdict.get('wegobject_id') - try: - return Gateway.get_wegobject_by_id(wegobject_id) - except GatewayResourceNotFoundException: - return HTTPNotFound() - - -@view_config( - route_name='list_subadressen', - renderer='crab_listjson', accept='application/json' -) -def list_subadressen(request): - request = set_http_caching(request, 'crab', 'short') - Gateway = request.crab_gateway() - huisnummer_id = request.matchdict.get('huisnummer_id') - subadressen = Gateway.list_subadressen_by_huisnummer(huisnummer_id) - return range_return(request, subadressen) - - -@view_config( - route_name='get_subadres_by_id', - renderer='crab_itemjson', accept='application/json' -) -def get_subadres_by_id(request): - request = set_http_caching(request, 'crab', 'short') - Gateway = request.crab_gateway() - subadres_id = request.matchdict.get('subadres_id') - try: - return Gateway.get_subadres_by_id(subadres_id) - except GatewayResourceNotFoundException: - return HTTPNotFound() - - -@view_config( - route_name='list_postkantons_by_gemeente', - renderer='crab_listjson', accept='application/json' -) -def list_postkantons_by_gemeente(request): - request = set_http_caching(request, 'crab', 'long') - Gateway = request.crab_gateway() - gemeente_id = request.matchdict.get('gemeente_id') - postkantons = Gateway.list_postkantons_by_gemeente(gemeente_id) - return range_return(request, postkantons) - - -@view_config( - route_name='list_adresposities_by_huisnummer', - renderer='crab_listjson', accept='application/json' -) -def list_adresposities_by_huisnummer(request): - request = set_http_caching(request, 'crab', 'short') - Gateway = request.crab_gateway() - huisnummer_id = request.matchdict.get('huisnummer_id') - adresposities = Gateway.list_adresposities_by_huisnummer(huisnummer_id) - return range_return(request, adresposities) - - -@view_config( - route_name='list_adresposities_by_subadres', - renderer='crab_listjson', accept='application/json' -) -def list_adresposities_by_subadres(request): - request = set_http_caching(request, 'crab', 'short') - Gateway = request.crab_gateway() - subadres_id = request.matchdict.get('subadres_id') - adresposities = Gateway.list_adresposities_by_subadres(subadres_id) - return range_return(request, adresposities) - - -@view_config( - route_name='get_adrespositie_by_id', - renderer='crab_itemjson', accept='application/json' -) -def get_adrespositie_by_id(request): - request = set_http_caching(request, 'crab', 'short') - Gateway = request.crab_gateway() - adrespositie_id = request.matchdict.get('adrespositie_id') - try: - return Gateway.get_adrespositie_by_id(adrespositie_id) - except GatewayResourceNotFoundException: - return HTTPNotFound() - - -@view_config( - route_name='list_landen', - renderer='crab_listjson', accept='application/json' -) -def list_landen(request): - request = set_http_caching(request, 'crab', 'permanent') - return list(pycountry.countries) - - -@view_config( - route_name='get_land_by_id', - renderer='crab_itemjson', accept='application/json' -) -def get_land_by_id(request): - request = set_http_caching(request, 'crab', 'permanent') - land_id = request.matchdict.get('land_id') - land = pycountry.countries.get(alpha_2=land_id) - if land is None: - return HTTPNotFound() - return land - - -@view_config( - route_name='get_postkanton_by_huisnummer', - renderer='crab_itemjson', accept='application/json' -) -def get_postkanton_by_huisnummer(request): - request = set_http_caching(request, 'crab', 'short') - Gateway = request.crab_gateway() - huisnummer_id = request.matchdict.get('huisnummer_id') - try: - return Gateway.get_postkanton_by_huisnummer(huisnummer_id) - except GatewayResourceNotFoundException: - return HTTPNotFound() diff --git a/setup.py b/setup.py index 6401e28..f347754 100644 --- a/setup.py +++ b/setup.py @@ -21,7 +21,7 @@ testing_extras = tests_requires + [] setup(name='crabpy_pyramid', - version='1.8.0', + version='2.0.0', description='Bindings for the CRABpy webservices and the Pyramid framework.', long_description=README + '\n\n' + CHANGES, classifiers=[