diff --git a/docs/MANUAL.md b/docs/MANUAL.md index e91771b..859af91 100644 --- a/docs/MANUAL.md +++ b/docs/MANUAL.md @@ -94,6 +94,10 @@ Toma los siguientes parámetros: - **apikey**: La apikey de un usuario del portal de destino con los permisos para crear el dataset bajo la organización pasada como parámetro y los grupos nuevos en caso de que el dataset tenga un super theme que no estuviera presente anteriormente en el catálogo de destino. + + **Advertencia**: La función `push_dataset_to_ckan()` sólo garantiza consistencia con los estándares de CKAN. Para + mantener una consistencia más estricta dentro del catálogo a federar, es necesario validar los datos antes de pasarlos + a la función. ## Uso diff --git a/pydatajson/ckan_utils.py b/pydatajson/ckan_utils.py index 3f7ea0d..196815c 100644 --- a/pydatajson/ckan_utils.py +++ b/pydatajson/ckan_utils.py @@ -29,7 +29,7 @@ def map_dataset_to_package(dataset, catalog_id): append_attribute_to_extra(package, dataset, 'accrualPeriodicity') distributions = dataset['distribution'] - package['resources'] = map_distributions_to_resources(distributions, package['id']) + package['resources'] = map_distributions_to_resources(distributions, catalog_id) super_themes = dataset['superTheme'] package['groups'] = [{'name': re.sub(r'[^a-z-_]+', '', super_theme.lower())} for super_theme in super_themes] @@ -77,12 +77,12 @@ def convert_iso_string_to_utc(date_string): return utc_date_time.isoformat() -def map_distributions_to_resources(distributions, package_id): +def map_distributions_to_resources(distributions, catalog_id): resources = [] for distribution in distributions: resource = dict() # Obligatorios - resource['id'] = package_id+'_'+distribution['identifier'] + resource['id'] = catalog_id + '_' + distribution['identifier'] resource['name'] = distribution['title'] resource['url'] = distribution['downloadURL'] resource['created'] = convert_iso_string_to_utc(distribution['issued']) diff --git a/pydatajson/federation.py b/pydatajson/federation.py index 94e0f64..ba28363 100644 --- a/pydatajson/federation.py +++ b/pydatajson/federation.py @@ -23,8 +23,6 @@ def push_dataset_to_ckan(catalog, catalog_id, owner_org, dataset_origin_identifi Returns: str: El id del dataset en el catálogo de destino. """ - if not catalog.is_valid_catalog(): - raise ValueError('The catalog is invalid') dataset = catalog.get_dataset(dataset_origin_identifier) ckan_portal = RemoteCKAN(portal_url, apikey=apikey) diff --git a/tests/cassetes/ckan_integration/tearDown.yaml b/tests/cassetes/ckan_integration/tearDown.yaml index c16885f..131984e 100644 --- a/tests/cassetes/ckan_integration/tearDown.yaml +++ b/tests/cassetes/ckan_integration/tearDown.yaml @@ -12,13 +12,13 @@ interactions: uri: http://181.209.63.239/api/action/package_list response: body: {string: !!python/unicode '{"help": "http://181.209.63.239/api/3/action/help_show?name=package_list", - "success": true, "result": ["dataset-de-prueba", "sistemadecontratacioneselectrnicas"]}'} + "success": true, "result": ["dataset-de-prueba", "fruta", "sistemadecontratacioneselectrnicas"]}'} headers: cache-control: [no-cache] connection: [keep-alive] - content-length: ['162'] + content-length: ['171'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:50 GMT'] + date: ['Thu, 08 Feb 2018 18:34:02 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -41,7 +41,7 @@ interactions: connection: [keep-alive] content-length: ['108'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:50 GMT'] + date: ['Thu, 08 Feb 2018 18:34:02 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -58,13 +58,13 @@ interactions: uri: http://181.209.63.239/api/action/package_list response: body: {string: !!python/unicode '{"help": "http://181.209.63.239/api/3/action/help_show?name=package_list", - "success": true, "result": ["dataset-de-prueba", "sistemadecontratacioneselectrnicas"]}'} + "success": true, "result": ["dataset-de-prueba", "fruta", "sistemadecontratacioneselectrnicas"]}'} headers: cache-control: [no-cache] connection: [keep-alive] - content-length: ['162'] + content-length: ['171'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:51 GMT'] + date: ['Thu, 08 Feb 2018 18:34:03 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -87,7 +87,7 @@ interactions: connection: [keep-alive] content-length: ['108'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:51 GMT'] + date: ['Thu, 08 Feb 2018 18:34:03 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -104,13 +104,13 @@ interactions: uri: http://181.209.63.239/api/action/package_list response: body: {string: !!python/unicode '{"help": "http://181.209.63.239/api/3/action/help_show?name=package_list", - "success": true, "result": ["dataset-de-prueba", "sistemadecontratacioneselectrnicas"]}'} + "success": true, "result": ["dataset-de-prueba", "fruta", "sistemadecontratacioneselectrnicas"]}'} headers: cache-control: [no-cache] connection: [keep-alive] - content-length: ['162'] + content-length: ['171'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:52 GMT'] + date: ['Thu, 08 Feb 2018 18:34:04 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -133,30 +133,7 @@ interactions: connection: [keep-alive] content-length: ['108'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:52 GMT'] - pragma: [no-cache] - server: [nginx/1.11.9] - status: {code: 200, message: OK} -- request: - body: !!python/unicode '{}' - headers: - Accept: ['*/*'] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['2'] - Content-Type: [application/json] - User-Agent: ['ckanapi/4.0 (+https://github.com/ckan/ckanapi)'] - method: POST - uri: http://181.209.63.239/api/action/package_list - response: - body: {string: !!python/unicode '{"help": "http://181.209.63.239/api/3/action/help_show?name=package_list", - "success": true, "result": ["dataset-de-prueba"]}'} - headers: - cache-control: [no-cache] - connection: [keep-alive] - content-length: ['124'] - content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:52 GMT'] + date: ['Thu, 08 Feb 2018 18:34:04 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -174,13 +151,13 @@ interactions: response: body: {string: !!python/unicode '{"help": "http://181.209.63.239/api/3/action/help_show?name=package_list", "success": true, "result": ["basededatoslegislativosinfoleg", "dataset-de-prueba", - "sistemadecontratacioneselectrnicas"]}'} + "fruta", "sistemadecontratacioneselectrnicas"]}'} headers: cache-control: [no-cache] connection: [keep-alive] - content-length: ['196'] + content-length: ['205'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:55 GMT'] + date: ['Thu, 08 Feb 2018 18:34:06 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -203,7 +180,7 @@ interactions: connection: [keep-alive] content-length: ['108'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:56 GMT'] + date: ['Thu, 08 Feb 2018 18:34:07 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -226,7 +203,7 @@ interactions: connection: [keep-alive] content-length: ['108'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:56 GMT'] + date: ['Thu, 08 Feb 2018 18:34:07 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} diff --git a/tests/cassetes/ckan_integration/test_dataset_is_created_correctly.yaml b/tests/cassetes/ckan_integration/test_dataset_is_created_correctly.yaml index 1fd5bbc..86040ad 100644 --- a/tests/cassetes/ckan_integration/test_dataset_is_created_correctly.yaml +++ b/tests/cassetes/ckan_integration/test_dataset_is_created_correctly.yaml @@ -18,7 +18,7 @@ interactions: connection: [keep-alive] content-length: ['127'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:49 GMT'] + date: ['Thu, 08 Feb 2018 18:34:01 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -110,7 +110,7 @@ interactions: connection: [keep-alive] content-length: ['5727'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:49 GMT'] + date: ['Thu, 08 Feb 2018 18:34:01 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -158,13 +158,13 @@ interactions: {\"type\": \"string\", \"description\": \"Clase de la convocatoria.\", \"title\": \"clase_convocatoria\"}, {\"type\": \"string\", \"description\": \"Objeto/objetivo de la convocatoria\", \"title\": \"objeto_convocatoria\"}]", "created": "2016-04-14T22:48:05.433640", - "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777_1.1", + "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "datosargentina_1.1", "name": "Convocatorias abiertas durante el a\u00f1o 2015"}]}' headers: Accept: ['*/*'] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - Content-Length: ['4033'] + Content-Length: ['3996'] Content-Type: [application/json] User-Agent: ['ckanapi/4.0 (+https://github.com/ckan/ckanapi)'] method: POST @@ -178,7 +178,7 @@ interactions: connection: [keep-alive] content-length: ['195'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:49 GMT'] + date: ['Thu, 08 Feb 2018 18:34:01 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 404, message: Not Found} @@ -226,13 +226,13 @@ interactions: {\"type\": \"string\", \"description\": \"Clase de la convocatoria.\", \"title\": \"clase_convocatoria\"}, {\"type\": \"string\", \"description\": \"Objeto/objetivo de la convocatoria\", \"title\": \"objeto_convocatoria\"}]", "created": "2016-04-14T22:48:05.433640", - "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777_1.1", + "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "datosargentina_1.1", "name": "Convocatorias abiertas durante el a\u00f1o 2015"}]}' headers: Accept: ['*/*'] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - Content-Length: ['4033'] + Content-Length: ['3996'] Content-Type: [application/json] User-Agent: ['ckanapi/4.0 (+https://github.com/ckan/ckanapi)'] method: POST @@ -244,7 +244,7 @@ interactions: Administrativa. Oficina Nacional de Contrataciones. Direcci\u00f3n de Compras Electr\u00f3nicas.", "relationships_as_object": [], "private": false, "maintainer_email": "onc-compraselectronicas@modernizacion.gob.ar", "num_tags": 4, "id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777", - "metadata_created": "2018-02-07T15:48:49.919946", "metadata_modified": "2018-02-07T15:48:49.943976", + "metadata_created": "2018-02-08T18:34:01.823992", "metadata_modified": "2018-02-08T18:34:01.844425", "author": "Ministerio de Modernizaci\u00f3n. Secretar\u00eda de Modernizaci\u00f3n Administrativa. Oficina Nacional de Contrataciones", "author_email": "onc@modernizacion.gob.ar", "state": "active", "version": null, "creator_user_id": "824dc36b-38b0-448d-bcb2-dda225089ba2", @@ -272,15 +272,15 @@ interactions: \"clase_convocatoria\"}, {\"type\": \"string\", \"description\": \"Objeto/objetivo de la convocatoria\", \"title\": \"objeto_convocatoria\"}]", "package_id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777", "webstore_last_updated": - null, "datastore_active": false, "id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777_1.1", - "size": "5120", "state": "active", "accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a", + null, "datastore_active": false, "id": "datosargentina_1.1", "size": "5120", + "state": "active", "accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a", "hash": "", "description": "Listado de las convocatorias abiertas durante el a\u00f1o 2015 en el sistema de contrataciones electr\u00f3nicas", "format": "CSV", "last_modified": "2016-04-19T22:48:05.433640", "url_type": null, "mimetype": "text/csv", "cache_url": null, "name": "Convocatorias abiertas durante el a\u00f1o 2015", "created": "2016-04-14T22:48:05.433640", "url": "http://186.33.211.253/dataset/99db6631-d1c9-470b-a73e-c62daa32c420/resource/4b7447cb-31ff-4352-96c3-589d212e1cc9/download/convocatorias-abiertas-anio-2015.csv", "webstore_url": null, "mimetype_inner": null, "position": 0, "revision_id": - "5e629b7f-cd66-4178-b0e4-c2bb996494b4", "resource_type": null}], "num_resources": + "b9d77885-f722-452d-9f9a-fe4d23308ccd", "resource_type": null}], "num_resources": 1, "tags": [{"vocabulary_id": null, "state": "active", "display_name": "bienes", "id": "7cacc193-5776-46b3-8f31-ccc52042248f", "name": "bienes"}, {"vocabulary_id": null, "state": "active", "display_name": "compras", "id": "27e042d0-87b8-416e-9745-8b504dc182e0", @@ -289,7 +289,7 @@ interactions: {"vocabulary_id": null, "state": "active", "display_name": "convocatorias", "id": "a7cf30d4-d35a-433a-914f-47727d61b6f7", "name": "convocatorias"}], "groups": [{"display_name": "econ", "description": "", "image_display_url": "", "title": - "", "id": "bde6ea2b-8d4c-487a-a971-3ba906bebab3", "name": "econ"}], "license_id": + "", "id": "ddf819de-dfd5-474d-9335-9a2d74c28f64", "name": "econ"}], "license_id": "notspecified", "relationships_as_subject": [], "organization": {"description": "", "created": "2018-02-07T15:37:27.733652", "title": "oficina-de-muestra", "name": "oficina-de-muestra", "is_organization": true, "state": "active", @@ -304,13 +304,13 @@ interactions: "[\"spa\"]"}, {"key": "modified", "value": "2016-04-19T19:48:05.433640-03:00"}, {"key": "spatial", "value": "ARG"}, {"key": "super_theme", "value": "[\"econ\"]"}, {"key": "temporal", "value": "2015-01-01/2015-12-31"}], "title": "Sistema - de contrataciones electr\u00f3nicas", "revision_id": "5e629b7f-cd66-4178-b0e4-c2bb996494b4"}}'} + de contrataciones electr\u00f3nicas", "revision_id": "b9d77885-f722-452d-9f9a-fe4d23308ccd"}}'} headers: cache-control: [no-cache] connection: [keep-alive] - content-length: ['5865'] + content-length: ['5828'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:50 GMT'] + date: ['Thu, 08 Feb 2018 18:34:02 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} diff --git a/tests/cassetes/ckan_integration/test_dataset_is_updated_correctly.yaml b/tests/cassetes/ckan_integration/test_dataset_is_updated_correctly.yaml index 993d88b..3c1f201 100644 --- a/tests/cassetes/ckan_integration/test_dataset_is_updated_correctly.yaml +++ b/tests/cassetes/ckan_integration/test_dataset_is_updated_correctly.yaml @@ -18,7 +18,7 @@ interactions: connection: [keep-alive] content-length: ['127'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:50 GMT'] + date: ['Thu, 08 Feb 2018 18:34:02 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -110,7 +110,7 @@ interactions: connection: [keep-alive] content-length: ['5727'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:50 GMT'] + date: ['Thu, 08 Feb 2018 18:34:02 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -158,13 +158,13 @@ interactions: {\"type\": \"string\", \"description\": \"Clase de la convocatoria.\", \"title\": \"clase_convocatoria\"}, {\"type\": \"string\", \"description\": \"Objeto/objetivo de la convocatoria\", \"title\": \"objeto_convocatoria\"}]", "created": "2016-04-14T22:48:05.433640", - "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777_1.1", + "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "datosargentina_1.1", "name": "Convocatorias abiertas durante el a\u00f1o 2015"}]}' headers: Accept: ['*/*'] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - Content-Length: ['4033'] + Content-Length: ['3996'] Content-Type: [application/json] User-Agent: ['ckanapi/4.0 (+https://github.com/ckan/ckanapi)'] method: POST @@ -178,7 +178,7 @@ interactions: connection: [keep-alive] content-length: ['195'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:50 GMT'] + date: ['Thu, 08 Feb 2018 18:34:02 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 404, message: Not Found} @@ -226,13 +226,13 @@ interactions: {\"type\": \"string\", \"description\": \"Clase de la convocatoria.\", \"title\": \"clase_convocatoria\"}, {\"type\": \"string\", \"description\": \"Objeto/objetivo de la convocatoria\", \"title\": \"objeto_convocatoria\"}]", "created": "2016-04-14T22:48:05.433640", - "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777_1.1", + "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "datosargentina_1.1", "name": "Convocatorias abiertas durante el a\u00f1o 2015"}]}' headers: Accept: ['*/*'] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - Content-Length: ['4033'] + Content-Length: ['3996'] Content-Type: [application/json] User-Agent: ['ckanapi/4.0 (+https://github.com/ckan/ckanapi)'] method: POST @@ -244,7 +244,7 @@ interactions: Administrativa. Oficina Nacional de Contrataciones. Direcci\u00f3n de Compras Electr\u00f3nicas.", "relationships_as_object": [], "private": false, "maintainer_email": "onc-compraselectronicas@modernizacion.gob.ar", "num_tags": 4, "id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777", - "metadata_created": "2018-02-07T15:48:50.714711", "metadata_modified": "2018-02-07T15:48:50.735207", + "metadata_created": "2018-02-08T18:34:02.702307", "metadata_modified": "2018-02-08T18:34:02.725005", "author": "Ministerio de Modernizaci\u00f3n. Secretar\u00eda de Modernizaci\u00f3n Administrativa. Oficina Nacional de Contrataciones", "author_email": "onc@modernizacion.gob.ar", "state": "active", "version": null, "creator_user_id": "824dc36b-38b0-448d-bcb2-dda225089ba2", @@ -272,15 +272,15 @@ interactions: \"clase_convocatoria\"}, {\"type\": \"string\", \"description\": \"Objeto/objetivo de la convocatoria\", \"title\": \"objeto_convocatoria\"}]", "package_id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777", "webstore_last_updated": - null, "datastore_active": false, "id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777_1.1", - "size": "5120", "state": "active", "accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a", + null, "datastore_active": false, "id": "datosargentina_1.1", "size": "5120", + "state": "active", "accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a", "hash": "", "description": "Listado de las convocatorias abiertas durante el a\u00f1o 2015 en el sistema de contrataciones electr\u00f3nicas", "format": "CSV", "last_modified": "2016-04-19T22:48:05.433640", "url_type": null, "mimetype": "text/csv", "cache_url": null, "name": "Convocatorias abiertas durante el a\u00f1o 2015", "created": "2016-04-14T22:48:05.433640", "url": "http://186.33.211.253/dataset/99db6631-d1c9-470b-a73e-c62daa32c420/resource/4b7447cb-31ff-4352-96c3-589d212e1cc9/download/convocatorias-abiertas-anio-2015.csv", "webstore_url": null, "mimetype_inner": null, "position": 0, "revision_id": - "21a2185b-b8ea-4db8-a39d-685cceea8347", "resource_type": null}], "num_resources": + "7a63b2b4-012a-4744-9050-904ce132b60a", "resource_type": null}], "num_resources": 1, "tags": [{"vocabulary_id": null, "state": "active", "display_name": "bienes", "id": "7cacc193-5776-46b3-8f31-ccc52042248f", "name": "bienes"}, {"vocabulary_id": null, "state": "active", "display_name": "compras", "id": "27e042d0-87b8-416e-9745-8b504dc182e0", @@ -289,7 +289,7 @@ interactions: {"vocabulary_id": null, "state": "active", "display_name": "convocatorias", "id": "a7cf30d4-d35a-433a-914f-47727d61b6f7", "name": "convocatorias"}], "groups": [{"display_name": "econ", "description": "", "image_display_url": "", "title": - "", "id": "bde6ea2b-8d4c-487a-a971-3ba906bebab3", "name": "econ"}], "license_id": + "", "id": "ddf819de-dfd5-474d-9335-9a2d74c28f64", "name": "econ"}], "license_id": "notspecified", "relationships_as_subject": [], "organization": {"description": "", "created": "2018-02-07T15:37:27.733652", "title": "oficina-de-muestra", "name": "oficina-de-muestra", "is_organization": true, "state": "active", @@ -304,13 +304,13 @@ interactions: "[\"spa\"]"}, {"key": "modified", "value": "2016-04-19T19:48:05.433640-03:00"}, {"key": "spatial", "value": "ARG"}, {"key": "super_theme", "value": "[\"econ\"]"}, {"key": "temporal", "value": "2015-01-01/2015-12-31"}], "title": "Sistema - de contrataciones electr\u00f3nicas", "revision_id": "21a2185b-b8ea-4db8-a39d-685cceea8347"}}'} + de contrataciones electr\u00f3nicas", "revision_id": "7a63b2b4-012a-4744-9050-904ce132b60a"}}'} headers: cache-control: [no-cache] connection: [keep-alive] - content-length: ['5865'] + content-length: ['5828'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:51 GMT'] + date: ['Thu, 08 Feb 2018 18:34:02 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -333,7 +333,7 @@ interactions: connection: [keep-alive] content-length: ['127'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:51 GMT'] + date: ['Thu, 08 Feb 2018 18:34:03 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -425,7 +425,7 @@ interactions: connection: [keep-alive] content-length: ['5727'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:51 GMT'] + date: ['Thu, 08 Feb 2018 18:34:03 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -472,13 +472,13 @@ interactions: {\"type\": \"string\", \"description\": \"Clase de la convocatoria.\", \"title\": \"clase_convocatoria\"}, {\"type\": \"string\", \"description\": \"Objeto/objetivo de la convocatoria\", \"title\": \"objeto_convocatoria\"}]", "created": "2016-04-14T22:48:05.433640", - "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777_1.1", + "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "datosargentina_1.1", "name": "Convocatorias abiertas durante el a\u00f1o 2015"}]}' headers: Accept: ['*/*'] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - Content-Length: ['3964'] + Content-Length: ['3927'] Content-Type: [application/json] User-Agent: ['ckanapi/4.0 (+https://github.com/ckan/ckanapi)'] method: POST @@ -490,11 +490,12 @@ interactions: Administrativa. Oficina Nacional de Contrataciones. Direcci\u00f3n de Compras Electr\u00f3nicas.", "relationships_as_object": [], "private": false, "maintainer_email": "onc-compraselectronicas@modernizacion.gob.ar", "num_tags": 4, "id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777", - "metadata_created": "2018-02-07T15:48:50.714711", "metadata_modified": "2018-02-07T15:48:51.130814", - "author": "Ministerio de Modernizaci\u00f3n. Secretar\u00eda de Modernizaci\u00f3n - Administrativa. Oficina Nacional de Contrataciones", "author_email": "onc@modernizacion.gob.ar", - "state": "active", "version": null, "creator_user_id": "824dc36b-38b0-448d-bcb2-dda225089ba2", - "type": "dataset", "resources": [{"cache_last_updated": null, "attributesDescription": + "metadata_created": "2018-02-08T18:34:02.702307", "owner_org": "5d50512b-c887-4ee8-b776-8499530eab39", + "metadata_modified": "2018-02-08T18:34:03.100638", "author": "Ministerio de + Modernizaci\u00f3n. Secretar\u00eda de Modernizaci\u00f3n Administrativa. + Oficina Nacional de Contrataciones", "author_email": "onc@modernizacion.gob.ar", + "state": "active", "version": null, "license_id": "notspecified", "type": + "dataset", "resources": [{"cache_last_updated": null, "attributesDescription": "[{\"id\": \"proc12\", \"type\": \"integer\", \"description\": \"Identificador \\u00fanico del procedimiento de contrataci\\u00f3n\", \"title\": \"procedimiento_id\"}, {\"type\": \"integer\", \"description\": \"Identificador \\u00fanico del organismo @@ -518,44 +519,42 @@ interactions: \"clase_convocatoria\"}, {\"type\": \"string\", \"description\": \"Objeto/objetivo de la convocatoria\", \"title\": \"objeto_convocatoria\"}]", "package_id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777", "webstore_last_updated": - null, "datastore_active": false, "id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777_1.1", - "size": "5120", "state": "active", "accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a", - "hash": "", "description": "Listado de las convocatorias abiertas durante - el a\u00f1o 2015 en el sistema de contrataciones electr\u00f3nicas", "format": - "CSV", "last_modified": "2016-04-19T22:48:05.433640", "url_type": null, "mimetype": - "text/csv", "cache_url": null, "name": "Convocatorias abiertas durante el - a\u00f1o 2015", "created": "2016-04-14T22:48:05.433640", "url": "http://186.33.211.253/dataset/99db6631-d1c9-470b-a73e-c62daa32c420/resource/4b7447cb-31ff-4352-96c3-589d212e1cc9/download/convocatorias-abiertas-anio-2015.csv", - "webstore_url": null, "mimetype_inner": null, "position": 0, "revision_id": - "21a2185b-b8ea-4db8-a39d-685cceea8347", "resource_type": null}], "num_resources": - 1, "tags": [{"vocabulary_id": null, "state": "active", "display_name": "bienes", - "id": "7cacc193-5776-46b3-8f31-ccc52042248f", "name": "bienes"}, {"vocabulary_id": - null, "state": "active", "display_name": "compras", "id": "27e042d0-87b8-416e-9745-8b504dc182e0", - "name": "compras"}, {"vocabulary_id": null, "state": "active", "display_name": - "contrataciones", "id": "ea24713a-553f-4ce8-aaa7-65bd66de53c7", "name": "contrataciones"}, - {"vocabulary_id": null, "state": "active", "display_name": "convocatorias", - "id": "a7cf30d4-d35a-433a-914f-47727d61b6f7", "name": "convocatorias"}], "groups": - [{"display_name": "econ", "description": "", "image_display_url": "", "title": - "", "id": "bde6ea2b-8d4c-487a-a971-3ba906bebab3", "name": "econ"}], "license_id": - "notspecified", "relationships_as_subject": [], "organization": {"description": - "", "created": "2018-02-07T15:37:27.733652", "title": "oficina-de-muestra", - "name": "oficina-de-muestra", "is_organization": true, "state": "active", - "image_url": "", "revision_id": "ea6c44f9-b41b-4a4c-b362-2738b4ba9d30", "type": - "organization", "id": "5d50512b-c887-4ee8-b776-8499530eab39", "approval_status": - "approved"}, "name": "sistemadecontratacioneselectrnicas", "isopen": false, - "url": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra", - "notes": "updated description", "owner_org": "5d50512b-c887-4ee8-b776-8499530eab39", - "extras": [{"key": "accrualPeriodicity", "value": "R/P1Y"}, {"key": "issued", - "value": "2016-04-14T19:48:05.433640-03:00"}, {"key": "language", "value": - "[\"spa\"]"}, {"key": "modified", "value": "2016-04-19T19:48:05.433640-03:00"}, - {"key": "spatial", "value": "ARG"}, {"key": "super_theme", "value": "[\"econ\"]"}, - {"key": "temporal", "value": "2015-01-01/2015-12-31"}], "title": "Sistema - de contrataciones electr\u00f3nicas", "revision_id": "6e48aac3-b268-42bf-ae2c-f307a04729b3"}}'} + null, "datastore_active": false, "id": "datosargentina_1.1", "size": "5120", + "state": "active", "mimetype": "text/csv", "hash": "", "description": "Listado + de las convocatorias abiertas durante el a\u00f1o 2015 en el sistema de contrataciones + electr\u00f3nicas", "format": "CSV", "mimetype_inner": null, "url_type": null, + "accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a", + "cache_url": null, "name": "Convocatorias abiertas durante el a\u00f1o 2015", + "created": "2016-04-14T22:48:05.433640", "url": "http://186.33.211.253/dataset/99db6631-d1c9-470b-a73e-c62daa32c420/resource/4b7447cb-31ff-4352-96c3-589d212e1cc9/download/convocatorias-abiertas-anio-2015.csv", + "webstore_url": null, "last_modified": "2016-04-19T22:48:05.433640", "position": + 0, "revision_id": "7a63b2b4-012a-4744-9050-904ce132b60a", "resource_type": + null}], "num_resources": 1, "tags": [{"vocabulary_id": null, "state": "active", + "display_name": "bienes", "id": "7cacc193-5776-46b3-8f31-ccc52042248f", "name": + "bienes"}, {"vocabulary_id": null, "state": "active", "display_name": "compras", + "id": "27e042d0-87b8-416e-9745-8b504dc182e0", "name": "compras"}, {"vocabulary_id": + null, "state": "active", "display_name": "contrataciones", "id": "ea24713a-553f-4ce8-aaa7-65bd66de53c7", + "name": "contrataciones"}, {"vocabulary_id": null, "state": "active", "display_name": + "convocatorias", "id": "a7cf30d4-d35a-433a-914f-47727d61b6f7", "name": "convocatorias"}], + "groups": [{"display_name": "econ", "description": "", "title": "", "image_display_url": + "", "id": "ddf819de-dfd5-474d-9335-9a2d74c28f64", "name": "econ"}], "creator_user_id": + "824dc36b-38b0-448d-bcb2-dda225089ba2", "relationships_as_subject": [], "name": + "sistemadecontratacioneselectrnicas", "isopen": false, "url": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra", + "notes": "updated description", "title": "Sistema de contrataciones electr\u00f3nicas", + "extras": [{"value": "R/P1Y", "key": "accrualPeriodicity"}, {"value": "2016-04-14T19:48:05.433640-03:00", + "key": "issued"}, {"value": "[\"spa\"]", "key": "language"}, {"value": "2016-04-19T19:48:05.433640-03:00", + "key": "modified"}, {"value": "ARG", "key": "spatial"}, {"value": "[\"econ\"]", + "key": "super_theme"}, {"value": "2015-01-01/2015-12-31", "key": "temporal"}], + "organization": {"description": "", "title": "oficina-de-muestra", "created": + "2018-02-07T15:37:27.733652", "approval_status": "approved", "is_organization": + true, "state": "active", "image_url": "", "revision_id": "ea6c44f9-b41b-4a4c-b362-2738b4ba9d30", + "type": "organization", "id": "5d50512b-c887-4ee8-b776-8499530eab39", "name": + "oficina-de-muestra"}, "revision_id": "7906578f-2a76-4bcb-be39-d9b893da1b3e"}}'} headers: cache-control: [no-cache] connection: [keep-alive] - content-length: ['5796'] + content-length: ['5759'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:51 GMT'] + date: ['Thu, 08 Feb 2018 18:34:03 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -577,11 +576,12 @@ interactions: Administrativa. Oficina Nacional de Contrataciones. Direcci\u00f3n de Compras Electr\u00f3nicas.", "relationships_as_object": [], "private": false, "maintainer_email": "onc-compraselectronicas@modernizacion.gob.ar", "num_tags": 4, "id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777", - "metadata_created": "2018-02-07T15:48:50.714711", "metadata_modified": "2018-02-07T15:48:51.130814", - "author": "Ministerio de Modernizaci\u00f3n. Secretar\u00eda de Modernizaci\u00f3n - Administrativa. Oficina Nacional de Contrataciones", "author_email": "onc@modernizacion.gob.ar", - "state": "active", "version": null, "creator_user_id": "824dc36b-38b0-448d-bcb2-dda225089ba2", - "type": "dataset", "resources": [{"cache_last_updated": null, "attributesDescription": + "metadata_created": "2018-02-08T18:34:02.702307", "owner_org": "5d50512b-c887-4ee8-b776-8499530eab39", + "metadata_modified": "2018-02-08T18:34:03.100638", "author": "Ministerio de + Modernizaci\u00f3n. Secretar\u00eda de Modernizaci\u00f3n Administrativa. + Oficina Nacional de Contrataciones", "author_email": "onc@modernizacion.gob.ar", + "state": "active", "version": null, "license_id": "notspecified", "type": + "dataset", "resources": [{"cache_last_updated": null, "attributesDescription": "[{\"id\": \"proc12\", \"type\": \"integer\", \"description\": \"Identificador \\u00fanico del procedimiento de contrataci\\u00f3n\", \"title\": \"procedimiento_id\"}, {\"type\": \"integer\", \"description\": \"Identificador \\u00fanico del organismo @@ -605,44 +605,42 @@ interactions: \"clase_convocatoria\"}, {\"type\": \"string\", \"description\": \"Objeto/objetivo de la convocatoria\", \"title\": \"objeto_convocatoria\"}]", "package_id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777", "webstore_last_updated": - null, "datastore_active": false, "id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777_1.1", - "size": "5120", "state": "active", "accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a", - "hash": "", "description": "Listado de las convocatorias abiertas durante - el a\u00f1o 2015 en el sistema de contrataciones electr\u00f3nicas", "format": - "CSV", "last_modified": "2016-04-19T22:48:05.433640", "url_type": null, "mimetype": - "text/csv", "cache_url": null, "name": "Convocatorias abiertas durante el - a\u00f1o 2015", "created": "2016-04-14T22:48:05.433640", "url": "http://186.33.211.253/dataset/99db6631-d1c9-470b-a73e-c62daa32c420/resource/4b7447cb-31ff-4352-96c3-589d212e1cc9/download/convocatorias-abiertas-anio-2015.csv", - "webstore_url": null, "mimetype_inner": null, "position": 0, "revision_id": - "21a2185b-b8ea-4db8-a39d-685cceea8347", "resource_type": null}], "num_resources": - 1, "tags": [{"vocabulary_id": null, "state": "active", "display_name": "bienes", - "id": "7cacc193-5776-46b3-8f31-ccc52042248f", "name": "bienes"}, {"vocabulary_id": - null, "state": "active", "display_name": "compras", "id": "27e042d0-87b8-416e-9745-8b504dc182e0", - "name": "compras"}, {"vocabulary_id": null, "state": "active", "display_name": - "contrataciones", "id": "ea24713a-553f-4ce8-aaa7-65bd66de53c7", "name": "contrataciones"}, - {"vocabulary_id": null, "state": "active", "display_name": "convocatorias", - "id": "a7cf30d4-d35a-433a-914f-47727d61b6f7", "name": "convocatorias"}], "groups": - [{"display_name": "econ", "description": "", "image_display_url": "", "title": - "", "id": "bde6ea2b-8d4c-487a-a971-3ba906bebab3", "name": "econ"}], "license_id": - "notspecified", "relationships_as_subject": [], "organization": {"description": - "", "created": "2018-02-07T15:37:27.733652", "title": "oficina-de-muestra", - "name": "oficina-de-muestra", "is_organization": true, "state": "active", - "image_url": "", "revision_id": "ea6c44f9-b41b-4a4c-b362-2738b4ba9d30", "type": - "organization", "id": "5d50512b-c887-4ee8-b776-8499530eab39", "approval_status": - "approved"}, "name": "sistemadecontratacioneselectrnicas", "isopen": false, - "url": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra", - "notes": "updated description", "owner_org": "5d50512b-c887-4ee8-b776-8499530eab39", - "extras": [{"key": "accrualPeriodicity", "value": "R/P1Y"}, {"key": "issued", - "value": "2016-04-14T19:48:05.433640-03:00"}, {"key": "language", "value": - "[\"spa\"]"}, {"key": "modified", "value": "2016-04-19T19:48:05.433640-03:00"}, - {"key": "spatial", "value": "ARG"}, {"key": "super_theme", "value": "[\"econ\"]"}, - {"key": "temporal", "value": "2015-01-01/2015-12-31"}], "title": "Sistema - de contrataciones electr\u00f3nicas", "revision_id": "6e48aac3-b268-42bf-ae2c-f307a04729b3"}}'} + null, "datastore_active": false, "id": "datosargentina_1.1", "size": "5120", + "state": "active", "mimetype": "text/csv", "hash": "", "description": "Listado + de las convocatorias abiertas durante el a\u00f1o 2015 en el sistema de contrataciones + electr\u00f3nicas", "format": "CSV", "mimetype_inner": null, "url_type": null, + "accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a", + "cache_url": null, "name": "Convocatorias abiertas durante el a\u00f1o 2015", + "created": "2016-04-14T22:48:05.433640", "url": "http://186.33.211.253/dataset/99db6631-d1c9-470b-a73e-c62daa32c420/resource/4b7447cb-31ff-4352-96c3-589d212e1cc9/download/convocatorias-abiertas-anio-2015.csv", + "webstore_url": null, "last_modified": "2016-04-19T22:48:05.433640", "position": + 0, "revision_id": "7a63b2b4-012a-4744-9050-904ce132b60a", "resource_type": + null}], "num_resources": 1, "tags": [{"vocabulary_id": null, "state": "active", + "display_name": "bienes", "id": "7cacc193-5776-46b3-8f31-ccc52042248f", "name": + "bienes"}, {"vocabulary_id": null, "state": "active", "display_name": "compras", + "id": "27e042d0-87b8-416e-9745-8b504dc182e0", "name": "compras"}, {"vocabulary_id": + null, "state": "active", "display_name": "contrataciones", "id": "ea24713a-553f-4ce8-aaa7-65bd66de53c7", + "name": "contrataciones"}, {"vocabulary_id": null, "state": "active", "display_name": + "convocatorias", "id": "a7cf30d4-d35a-433a-914f-47727d61b6f7", "name": "convocatorias"}], + "groups": [{"display_name": "econ", "description": "", "title": "", "image_display_url": + "", "id": "ddf819de-dfd5-474d-9335-9a2d74c28f64", "name": "econ"}], "creator_user_id": + "824dc36b-38b0-448d-bcb2-dda225089ba2", "relationships_as_subject": [], "name": + "sistemadecontratacioneselectrnicas", "isopen": false, "url": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra", + "notes": "updated description", "title": "Sistema de contrataciones electr\u00f3nicas", + "extras": [{"value": "R/P1Y", "key": "accrualPeriodicity"}, {"value": "2016-04-14T19:48:05.433640-03:00", + "key": "issued"}, {"value": "[\"spa\"]", "key": "language"}, {"value": "2016-04-19T19:48:05.433640-03:00", + "key": "modified"}, {"value": "ARG", "key": "spatial"}, {"value": "[\"econ\"]", + "key": "super_theme"}, {"value": "2015-01-01/2015-12-31", "key": "temporal"}], + "organization": {"description": "", "title": "oficina-de-muestra", "created": + "2018-02-07T15:37:27.733652", "approval_status": "approved", "is_organization": + true, "state": "active", "image_url": "", "revision_id": "ea6c44f9-b41b-4a4c-b362-2738b4ba9d30", + "type": "organization", "id": "5d50512b-c887-4ee8-b776-8499530eab39", "name": + "oficina-de-muestra"}, "revision_id": "7906578f-2a76-4bcb-be39-d9b893da1b3e"}}'} headers: cache-control: [no-cache] connection: [keep-alive] - content-length: ['5794'] + content-length: ['5757'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:51 GMT'] + date: ['Thu, 08 Feb 2018 18:34:03 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} diff --git a/tests/cassetes/ckan_integration/test_groups_are_created.yaml b/tests/cassetes/ckan_integration/test_groups_are_created.yaml index 15b8191..56db79a 100644 --- a/tests/cassetes/ckan_integration/test_groups_are_created.yaml +++ b/tests/cassetes/ckan_integration/test_groups_are_created.yaml @@ -18,7 +18,7 @@ interactions: connection: [keep-alive] content-length: ['107'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:51 GMT'] + date: ['Thu, 08 Feb 2018 18:34:03 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -41,7 +41,7 @@ interactions: connection: [keep-alive] content-length: ['119'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:51 GMT'] + date: ['Thu, 08 Feb 2018 18:34:03 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -61,20 +61,20 @@ interactions: "success": true, "result": {"users": [{"email_hash": "d41d8cd98f00b204e9800998ecf8427e", "about": null, "capacity": "admin", "name": "admin", "created": "2018-02-07T08:31:35.813305", "openid": null, "sysadmin": true, "activity_streams_email_notifications": - false, "state": "active", "number_of_edits": 54, "display_name": "admin", + false, "state": "active", "number_of_edits": 233, "display_name": "admin", "fullname": null, "id": "824dc36b-38b0-448d-bcb2-dda225089ba2", "number_created_packages": - 1}], "display_name": "econ", "description": "", "image_display_url": "", "package_count": - 0, "created": "2018-02-07T15:48:51.815716", "name": "econ", "is_organization": + 2}], "display_name": "econ", "description": "", "image_display_url": "", "package_count": + 0, "created": "2018-02-08T18:34:03.794351", "name": "econ", "is_organization": false, "state": "active", "extras": [], "image_url": "", "groups": [], "type": - "group", "title": "", "revision_id": "0f568690-7507-4ef2-85df-2c6a82ef6ee8", - "num_followers": 0, "id": "68d64483-9323-47da-80a7-bc874747179f", "tags": + "group", "title": "", "revision_id": "44ecaaf9-ed46-4c73-9794-ba3a327ffcba", + "num_followers": 0, "id": "d9680d0a-7cca-4df9-b130-12bd51c62f38", "tags": [], "approval_status": "approved"}}'} headers: cache-control: [no-cache] connection: [keep-alive] - content-length: ['931'] + content-length: ['932'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:51 GMT'] + date: ['Thu, 08 Feb 2018 18:34:03 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -166,7 +166,7 @@ interactions: connection: [keep-alive] content-length: ['5727'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:51 GMT'] + date: ['Thu, 08 Feb 2018 18:34:03 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -214,13 +214,13 @@ interactions: {\"type\": \"string\", \"description\": \"Clase de la convocatoria.\", \"title\": \"clase_convocatoria\"}, {\"type\": \"string\", \"description\": \"Objeto/objetivo de la convocatoria\", \"title\": \"objeto_convocatoria\"}]", "created": "2016-04-14T22:48:05.433640", - "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777_1.1", + "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "datosargentina_1.1", "name": "Convocatorias abiertas durante el a\u00f1o 2015"}]}' headers: Accept: ['*/*'] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - Content-Length: ['4033'] + Content-Length: ['3996'] Content-Type: [application/json] User-Agent: ['ckanapi/4.0 (+https://github.com/ckan/ckanapi)'] method: POST @@ -234,7 +234,7 @@ interactions: connection: [keep-alive] content-length: ['195'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:51 GMT'] + date: ['Thu, 08 Feb 2018 18:34:03 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 404, message: Not Found} @@ -282,13 +282,13 @@ interactions: {\"type\": \"string\", \"description\": \"Clase de la convocatoria.\", \"title\": \"clase_convocatoria\"}, {\"type\": \"string\", \"description\": \"Objeto/objetivo de la convocatoria\", \"title\": \"objeto_convocatoria\"}]", "created": "2016-04-14T22:48:05.433640", - "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777_1.1", + "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "datosargentina_1.1", "name": "Convocatorias abiertas durante el a\u00f1o 2015"}]}' headers: Accept: ['*/*'] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - Content-Length: ['4033'] + Content-Length: ['3996'] Content-Type: [application/json] User-Agent: ['ckanapi/4.0 (+https://github.com/ckan/ckanapi)'] method: POST @@ -300,7 +300,7 @@ interactions: Administrativa. Oficina Nacional de Contrataciones. Direcci\u00f3n de Compras Electr\u00f3nicas.", "relationships_as_object": [], "private": false, "maintainer_email": "onc-compraselectronicas@modernizacion.gob.ar", "num_tags": 4, "id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777", - "metadata_created": "2018-02-07T15:48:52.018918", "metadata_modified": "2018-02-07T15:48:52.041288", + "metadata_created": "2018-02-08T18:34:04.001509", "metadata_modified": "2018-02-08T18:34:04.023628", "author": "Ministerio de Modernizaci\u00f3n. Secretar\u00eda de Modernizaci\u00f3n Administrativa. Oficina Nacional de Contrataciones", "author_email": "onc@modernizacion.gob.ar", "state": "active", "version": null, "creator_user_id": "824dc36b-38b0-448d-bcb2-dda225089ba2", @@ -328,15 +328,15 @@ interactions: \"clase_convocatoria\"}, {\"type\": \"string\", \"description\": \"Objeto/objetivo de la convocatoria\", \"title\": \"objeto_convocatoria\"}]", "package_id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777", "webstore_last_updated": - null, "datastore_active": false, "id": "datosargentina_99db6631-d1c9-470b-a73e-c62daa32c777_1.1", - "size": "5120", "state": "active", "accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a", + null, "datastore_active": false, "id": "datosargentina_1.1", "size": "5120", + "state": "active", "accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a", "hash": "", "description": "Listado de las convocatorias abiertas durante el a\u00f1o 2015 en el sistema de contrataciones electr\u00f3nicas", "format": "CSV", "last_modified": "2016-04-19T22:48:05.433640", "url_type": null, "mimetype": "text/csv", "cache_url": null, "name": "Convocatorias abiertas durante el a\u00f1o 2015", "created": "2016-04-14T22:48:05.433640", "url": "http://186.33.211.253/dataset/99db6631-d1c9-470b-a73e-c62daa32c420/resource/4b7447cb-31ff-4352-96c3-589d212e1cc9/download/convocatorias-abiertas-anio-2015.csv", "webstore_url": null, "mimetype_inner": null, "position": 0, "revision_id": - "3fc24bf6-c3dc-4801-8e2c-5233775911fb", "resource_type": null}], "num_resources": + "ee9ead06-1a76-43a7-aa58-320c8b01fe6d", "resource_type": null}], "num_resources": 1, "tags": [{"vocabulary_id": null, "state": "active", "display_name": "bienes", "id": "7cacc193-5776-46b3-8f31-ccc52042248f", "name": "bienes"}, {"vocabulary_id": null, "state": "active", "display_name": "compras", "id": "27e042d0-87b8-416e-9745-8b504dc182e0", @@ -345,7 +345,7 @@ interactions: {"vocabulary_id": null, "state": "active", "display_name": "convocatorias", "id": "a7cf30d4-d35a-433a-914f-47727d61b6f7", "name": "convocatorias"}], "groups": [{"display_name": "econ", "description": "", "image_display_url": "", "title": - "", "id": "68d64483-9323-47da-80a7-bc874747179f", "name": "econ"}], "license_id": + "", "id": "d9680d0a-7cca-4df9-b130-12bd51c62f38", "name": "econ"}], "license_id": "notspecified", "relationships_as_subject": [], "organization": {"description": "", "created": "2018-02-07T15:37:27.733652", "title": "oficina-de-muestra", "name": "oficina-de-muestra", "is_organization": true, "state": "active", @@ -360,13 +360,13 @@ interactions: "[\"spa\"]"}, {"key": "modified", "value": "2016-04-19T19:48:05.433640-03:00"}, {"key": "spatial", "value": "ARG"}, {"key": "super_theme", "value": "[\"econ\"]"}, {"key": "temporal", "value": "2015-01-01/2015-12-31"}], "title": "Sistema - de contrataciones electr\u00f3nicas", "revision_id": "3fc24bf6-c3dc-4801-8e2c-5233775911fb"}}'} + de contrataciones electr\u00f3nicas", "revision_id": "ee9ead06-1a76-43a7-aa58-320c8b01fe6d"}}'} headers: cache-control: [no-cache] connection: [keep-alive] - content-length: ['5865'] + content-length: ['5828'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:52 GMT'] + date: ['Thu, 08 Feb 2018 18:34:04 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -389,7 +389,7 @@ interactions: connection: [keep-alive] content-length: ['127'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:52 GMT'] + date: ['Thu, 08 Feb 2018 18:34:04 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} diff --git a/tests/cassetes/ckan_integration/test_resources_swapped_correctly.yaml b/tests/cassetes/ckan_integration/test_resources_swapped_correctly.yaml index 671efd5..55e9f91 100644 --- a/tests/cassetes/ckan_integration/test_resources_swapped_correctly.yaml +++ b/tests/cassetes/ckan_integration/test_resources_swapped_correctly.yaml @@ -18,7 +18,7 @@ interactions: connection: [keep-alive] content-length: ['127'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:52 GMT'] + date: ['Thu, 08 Feb 2018 18:34:04 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -110,7 +110,7 @@ interactions: connection: [keep-alive] content-length: ['5727'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:52 GMT'] + date: ['Thu, 08 Feb 2018 18:34:04 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -158,13 +158,13 @@ interactions: {\"type\": \"string\", \"description\": \"Clase de la convocatoria.\", \"title\": \"clase_convocatoria\"}, {\"type\": \"string\", \"description\": \"Objeto/objetivo de la convocatoria\", \"title\": \"objeto_convocatoria\"}]", "created": "2016-04-14T22:48:05.433640", - "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777_1.1", + "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "same-catalog-id_1.1", "name": "Convocatorias abiertas durante el a\u00f1o 2015"}]}' headers: Accept: ['*/*'] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - Content-Length: ['4035'] + Content-Length: ['3998'] Content-Type: [application/json] User-Agent: ['ckanapi/4.0 (+https://github.com/ckan/ckanapi)'] method: POST @@ -178,7 +178,7 @@ interactions: connection: [keep-alive] content-length: ['195'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:52 GMT'] + date: ['Thu, 08 Feb 2018 18:34:04 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 404, message: Not Found} @@ -226,13 +226,13 @@ interactions: {\"type\": \"string\", \"description\": \"Clase de la convocatoria.\", \"title\": \"clase_convocatoria\"}, {\"type\": \"string\", \"description\": \"Objeto/objetivo de la convocatoria\", \"title\": \"objeto_convocatoria\"}]", "created": "2016-04-14T22:48:05.433640", - "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777_1.1", + "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "same-catalog-id_1.1", "name": "Convocatorias abiertas durante el a\u00f1o 2015"}]}' headers: Accept: ['*/*'] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - Content-Length: ['4035'] + Content-Length: ['3998'] Content-Type: [application/json] User-Agent: ['ckanapi/4.0 (+https://github.com/ckan/ckanapi)'] method: POST @@ -244,7 +244,7 @@ interactions: Administrativa. Oficina Nacional de Contrataciones. Direcci\u00f3n de Compras Electr\u00f3nicas.", "relationships_as_object": [], "private": false, "maintainer_email": "onc-compraselectronicas@modernizacion.gob.ar", "num_tags": 4, "id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777", - "metadata_created": "2018-02-07T15:48:52.823168", "metadata_modified": "2018-02-07T15:48:52.844775", + "metadata_created": "2018-02-08T18:34:04.754153", "metadata_modified": "2018-02-08T18:34:04.775535", "author": "Ministerio de Modernizaci\u00f3n. Secretar\u00eda de Modernizaci\u00f3n Administrativa. Oficina Nacional de Contrataciones", "author_email": "onc@modernizacion.gob.ar", "state": "active", "version": null, "creator_user_id": "824dc36b-38b0-448d-bcb2-dda225089ba2", @@ -272,15 +272,15 @@ interactions: \"clase_convocatoria\"}, {\"type\": \"string\", \"description\": \"Objeto/objetivo de la convocatoria\", \"title\": \"objeto_convocatoria\"}]", "package_id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777", "webstore_last_updated": - null, "datastore_active": false, "id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777_1.1", - "size": "5120", "state": "active", "accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a", + null, "datastore_active": false, "id": "same-catalog-id_1.1", "size": "5120", + "state": "active", "accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a", "hash": "", "description": "Listado de las convocatorias abiertas durante el a\u00f1o 2015 en el sistema de contrataciones electr\u00f3nicas", "format": "CSV", "last_modified": "2016-04-19T22:48:05.433640", "url_type": null, "mimetype": "text/csv", "cache_url": null, "name": "Convocatorias abiertas durante el a\u00f1o 2015", "created": "2016-04-14T22:48:05.433640", "url": "http://186.33.211.253/dataset/99db6631-d1c9-470b-a73e-c62daa32c420/resource/4b7447cb-31ff-4352-96c3-589d212e1cc9/download/convocatorias-abiertas-anio-2015.csv", "webstore_url": null, "mimetype_inner": null, "position": 0, "revision_id": - "1aa25125-adf7-4453-9eff-03e90f071c9f", "resource_type": null}], "num_resources": + "5ccbddba-de69-4dd5-8f60-69bbb17920ee", "resource_type": null}], "num_resources": 1, "tags": [{"vocabulary_id": null, "state": "active", "display_name": "bienes", "id": "7cacc193-5776-46b3-8f31-ccc52042248f", "name": "bienes"}, {"vocabulary_id": null, "state": "active", "display_name": "compras", "id": "27e042d0-87b8-416e-9745-8b504dc182e0", @@ -289,7 +289,7 @@ interactions: {"vocabulary_id": null, "state": "active", "display_name": "convocatorias", "id": "a7cf30d4-d35a-433a-914f-47727d61b6f7", "name": "convocatorias"}], "groups": [{"display_name": "econ", "description": "", "image_display_url": "", "title": - "", "id": "68d64483-9323-47da-80a7-bc874747179f", "name": "econ"}], "license_id": + "", "id": "d9680d0a-7cca-4df9-b130-12bd51c62f38", "name": "econ"}], "license_id": "notspecified", "relationships_as_subject": [], "organization": {"description": "", "created": "2018-02-07T15:37:27.733652", "title": "oficina-de-muestra", "name": "oficina-de-muestra", "is_organization": true, "state": "active", @@ -304,13 +304,13 @@ interactions: "[\"spa\"]"}, {"key": "modified", "value": "2016-04-19T19:48:05.433640-03:00"}, {"key": "spatial", "value": "ARG"}, {"key": "super_theme", "value": "[\"econ\"]"}, {"key": "temporal", "value": "2015-01-01/2015-12-31"}], "title": "Sistema - de contrataciones electr\u00f3nicas", "revision_id": "1aa25125-adf7-4453-9eff-03e90f071c9f"}}'} + de contrataciones electr\u00f3nicas", "revision_id": "5ccbddba-de69-4dd5-8f60-69bbb17920ee"}}'} headers: cache-control: [no-cache] connection: [keep-alive] - content-length: ['5868'] + content-length: ['5831'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:53 GMT'] + date: ['Thu, 08 Feb 2018 18:34:05 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -333,7 +333,7 @@ interactions: connection: [keep-alive] content-length: ['127'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:53 GMT'] + date: ['Thu, 08 Feb 2018 18:34:05 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -425,7 +425,7 @@ interactions: connection: [keep-alive] content-length: ['5727'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:53 GMT'] + date: ['Thu, 08 Feb 2018 18:34:05 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -485,9 +485,8 @@ interactions: \"title\": \"modificada_por\"}, {\"type\": \"integer\", \"description\": \"Identificar \\u00fanico de la norma que modifica.\", \"title\": \"modifica_a\"}]", "created": "2016-09-29T11:17:50.274309", "last_modified": "2016-12-19T12:38:58.700747", - "size": null, "id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23_1", - "name": "Base Infoleg de Normativa Nacional"}, {"mimetype": null, "accessURL": - "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/d9fbf1d5-679e-4833-bcdc-3a8f58523d18", + "size": null, "id": "same-catalog-id_1", "name": "Base Infoleg de Normativa + Nacional"}, {"mimetype": null, "accessURL": "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/d9fbf1d5-679e-4833-bcdc-3a8f58523d18", "description": "Base complementaria Infoleg con normas nacionales modificadas: leyes, decisiones administrativas, decretos, resoluciones, disposiciones, acordadas y todo acto administrativo publicado en la primera secci\u00f3n del Bolet\u00edn @@ -509,9 +508,9 @@ interactions: \"title\": \"titulo_resumido\"}, {\"type\": \"string\", \"description\": \"Sumario del t\\u00edtulo en una o dos palabras. (Ej: \\\"sistema integrado de jubilaciones\\\")\", \"title\": \"titulo_sumario\"}]", "created": "2016-10-14T16:02:49.841535", "last_modified": - "2016-12-19T14:48:05.348064", "size": null, "id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23_2", - "name": "Base Complementaria Infoleg de Normas Modificadas"}, {"mimetype": null, - "accessURL": "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/f9170086-6538-44f1-8c7e-3e193c1fea7f", + "2016-12-19T14:48:05.348064", "size": null, "id": "same-catalog-id_2", "name": + "Base Complementaria Infoleg de Normas Modificadas"}, {"mimetype": null, "accessURL": + "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/f9170086-6538-44f1-8c7e-3e193c1fea7f", "description": "Base complementaria Infoleg con normas nacionales modificatorias: leyes, decisiones administrativas, decretos, resoluciones, disposiciones, acordadas y todo acto administrativo publicado en la primera secci\u00f3n del Bolet\u00edn @@ -533,13 +532,13 @@ interactions: \"title\": \"titulo_resumido\"}, {\"type\": \"string\", \"description\": \"Sumario del t\\u00edtulo en una o dos palabras. (Ej: \\\"sistema integrado de jubilaciones\\\")\", \"title\": \"titulo_sumario\"}]", "created": "2016-10-18T17:26:58.415087", "last_modified": - "2016-12-19T14:47:21.330355", "size": null, "id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23_3", - "name": "Base Complementaria Infoleg de Normas Modificatorias"}]}' + "2016-12-19T14:47:21.330355", "size": null, "id": "same-catalog-id_3", "name": + "Base Complementaria Infoleg de Normas Modificatorias"}]}' headers: Accept: ['*/*'] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - Content-Length: ['9168'] + Content-Length: ['9057'] Content-Type: [application/json] User-Agent: ['ckanapi/4.0 (+https://github.com/ckan/ckanapi)'] method: POST @@ -553,7 +552,7 @@ interactions: connection: [keep-alive] content-length: ['195'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:53 GMT'] + date: ['Thu, 08 Feb 2018 18:34:05 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 404, message: Not Found} @@ -613,9 +612,8 @@ interactions: \"title\": \"modificada_por\"}, {\"type\": \"integer\", \"description\": \"Identificar \\u00fanico de la norma que modifica.\", \"title\": \"modifica_a\"}]", "created": "2016-09-29T11:17:50.274309", "last_modified": "2016-12-19T12:38:58.700747", - "size": null, "id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23_1", - "name": "Base Infoleg de Normativa Nacional"}, {"mimetype": null, "accessURL": - "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/d9fbf1d5-679e-4833-bcdc-3a8f58523d18", + "size": null, "id": "same-catalog-id_1", "name": "Base Infoleg de Normativa + Nacional"}, {"mimetype": null, "accessURL": "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/d9fbf1d5-679e-4833-bcdc-3a8f58523d18", "description": "Base complementaria Infoleg con normas nacionales modificadas: leyes, decisiones administrativas, decretos, resoluciones, disposiciones, acordadas y todo acto administrativo publicado en la primera secci\u00f3n del Bolet\u00edn @@ -637,9 +635,9 @@ interactions: \"title\": \"titulo_resumido\"}, {\"type\": \"string\", \"description\": \"Sumario del t\\u00edtulo en una o dos palabras. (Ej: \\\"sistema integrado de jubilaciones\\\")\", \"title\": \"titulo_sumario\"}]", "created": "2016-10-14T16:02:49.841535", "last_modified": - "2016-12-19T14:48:05.348064", "size": null, "id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23_2", - "name": "Base Complementaria Infoleg de Normas Modificadas"}, {"mimetype": null, - "accessURL": "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/f9170086-6538-44f1-8c7e-3e193c1fea7f", + "2016-12-19T14:48:05.348064", "size": null, "id": "same-catalog-id_2", "name": + "Base Complementaria Infoleg de Normas Modificadas"}, {"mimetype": null, "accessURL": + "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/f9170086-6538-44f1-8c7e-3e193c1fea7f", "description": "Base complementaria Infoleg con normas nacionales modificatorias: leyes, decisiones administrativas, decretos, resoluciones, disposiciones, acordadas y todo acto administrativo publicado en la primera secci\u00f3n del Bolet\u00edn @@ -661,13 +659,13 @@ interactions: \"title\": \"titulo_resumido\"}, {\"type\": \"string\", \"description\": \"Sumario del t\\u00edtulo en una o dos palabras. (Ej: \\\"sistema integrado de jubilaciones\\\")\", \"title\": \"titulo_sumario\"}]", "created": "2016-10-18T17:26:58.415087", "last_modified": - "2016-12-19T14:47:21.330355", "size": null, "id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23_3", - "name": "Base Complementaria Infoleg de Normas Modificatorias"}]}' + "2016-12-19T14:47:21.330355", "size": null, "id": "same-catalog-id_3", "name": + "Base Complementaria Infoleg de Normas Modificatorias"}]}' headers: Accept: ['*/*'] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - Content-Length: ['9168'] + Content-Length: ['9057'] Content-Type: [application/json] User-Agent: ['ckanapi/4.0 (+https://github.com/ckan/ckanapi)'] method: POST @@ -680,7 +678,7 @@ interactions: del Sistema Argentino de Informaci\u00f3n Jur\u00eddica", "relationships_as_object": [], "private": false, "maintainer_email": "datosabiertos@saij.gob.ar", "num_tags": 9, "id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23", "metadata_created": - "2018-02-07T15:48:53.420868", "metadata_modified": "2018-02-07T15:48:53.456973", + "2018-02-08T18:34:05.284899", "metadata_modified": "2018-02-08T18:34:05.316366", "author": "Ministerio de Justicia y Derechos Humanos. Secretar\u00eda de Planificaci\u00f3n Estrat\u00e9gica. Direcci\u00f3n Nacional del Sistema Argentino de Informaci\u00f3n Jur\u00eddica", "author_email": "datosabiertos@saij.gob.ar", "state": "active", @@ -716,7 +714,7 @@ interactions: que la modifica.\", \"title\": \"modificada_por\"}, {\"type\": \"integer\", \"description\": \"Identificar \\u00fanico de la norma que modifica.\", \"title\": \"modifica_a\"}]", "package_id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23", - "webstore_last_updated": null, "datastore_active": false, "id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23_1", + "webstore_last_updated": null, "datastore_active": false, "id": "same-catalog-id_1", "size": null, "state": "active", "accessURL": "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/8db246a2-48dd-4f2f-b08e-ab6293747882", "hash": "", "description": "Base de documentos digitales normativos nacionales: leyes, decisiones administrativas, decretos, resoluciones, disposiciones, @@ -725,7 +723,7 @@ interactions: "url_type": null, "mimetype": null, "cache_url": null, "name": "Base Infoleg de Normativa Nacional", "created": "2016-09-29T11:17:50.274309", "url": "http://datos.jus.gob.ar/dataset/d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23/resource/8db246a2-48dd-4f2f-b08e-ab6293747882/download/baseinfolegnormativanacional.csv", "webstore_url": null, "mimetype_inner": null, "position": 0, "revision_id": - "c909ff98-1b1e-4bf1-a270-2be1a97c91c5", "resource_type": null}, {"cache_last_updated": + "b4dbd4f6-8d45-4192-9139-56084ea02b77", "resource_type": null}, {"cache_last_updated": null, "attributesDescription": "[{\"type\": \"integer\", \"description\": \"Identificador \\u00fanico de la norma modificada dentro de la base de datos.\", \"title\": \"id_norma_modificada\"}, {\"type\": \"integer\", \"description\": @@ -743,8 +741,8 @@ interactions: \"string\", \"description\": \"Sumario del t\\u00edtulo en una o dos palabras. (Ej: \\\"sistema integrado de jubilaciones\\\")\", \"title\": \"titulo_sumario\"}]", "package_id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23", "webstore_last_updated": - null, "datastore_active": false, "id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23_2", - "size": null, "state": "active", "accessURL": "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/d9fbf1d5-679e-4833-bcdc-3a8f58523d18", + null, "datastore_active": false, "id": "same-catalog-id_2", "size": null, + "state": "active", "accessURL": "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/d9fbf1d5-679e-4833-bcdc-3a8f58523d18", "hash": "", "description": "Base complementaria Infoleg con normas nacionales modificadas: leyes, decisiones administrativas, decretos, resoluciones, disposiciones, acordadas y todo acto administrativo publicado en la primera secci\u00f3n @@ -754,7 +752,7 @@ interactions: Infoleg de Normas Modificadas", "created": "2016-10-14T16:02:49.841535", "url": "http://datos.jus.gob.ar/dataset/d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23/resource/d9fbf1d5-679e-4833-bcdc-3a8f58523d18/download/basecomplementariainfolegnormasmodificadas.csv", "webstore_url": null, "mimetype_inner": null, "position": 1, "revision_id": - "c909ff98-1b1e-4bf1-a270-2be1a97c91c5", "resource_type": null}, {"cache_last_updated": + "b4dbd4f6-8d45-4192-9139-56084ea02b77", "resource_type": null}, {"cache_last_updated": null, "attributesDescription": "[{\"type\": \"integer\", \"description\": \"Identificador \\u00fanico de la norma modificatoria dentro de la base de datos.\", \"title\": \"id_norma_modificatoria\"}, {\"type\": \"integer\", @@ -772,7 +770,7 @@ interactions: \"titulo_resumido\"}, {\"type\": \"string\", \"description\": \"Sumario del t\\u00edtulo en una o dos palabras. (Ej: \\\"sistema integrado de jubilaciones\\\")\", \"title\": \"titulo_sumario\"}]", "package_id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23", - "webstore_last_updated": null, "datastore_active": false, "id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23_3", + "webstore_last_updated": null, "datastore_active": false, "id": "same-catalog-id_3", "size": null, "state": "active", "accessURL": "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/f9170086-6538-44f1-8c7e-3e193c1fea7f", "hash": "", "description": "Base complementaria Infoleg con normas nacionales modificatorias: leyes, decisiones administrativas, decretos, resoluciones, @@ -783,7 +781,7 @@ interactions: null, "name": "Base Complementaria Infoleg de Normas Modificatorias", "created": "2016-10-18T17:26:58.415087", "url": "http://datos.jus.gob.ar/dataset/d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23/resource/f9170086-6538-44f1-8c7e-3e193c1fea7f/download/basecomplementariainfolegnormasmodificatorias.csv", "webstore_url": null, "mimetype_inner": null, "position": 2, "revision_id": - "c909ff98-1b1e-4bf1-a270-2be1a97c91c5", "resource_type": null}], "num_resources": + "b4dbd4f6-8d45-4192-9139-56084ea02b77", "resource_type": null}], "num_resources": 3, "tags": [{"vocabulary_id": null, "state": "active", "display_name": "acordadas", "id": "a843f06d-1215-4b68-9946-958cbd67cc39", "name": "acordadas"}, {"vocabulary_id": null, "state": "active", "display_name": "administrativas", "id": "33f302e5-4b3c-4ee8-9d9a-1066c83e7af7", @@ -800,7 +798,7 @@ interactions: "9b182d6f-c93a-4c52-8f7c-d9584fd1c581", "name": "leyes"}, {"vocabulary_id": null, "state": "active", "display_name": "resoluciones", "id": "8b591b18-3fa2-42d7-a7f9-4178a380ce33", "name": "resoluciones"}], "groups": [{"display_name": "just", "description": - "", "image_display_url": "", "title": "", "id": "548bc2a4-9f80-4bbc-874b-32a4dc207558", + "", "image_display_url": "", "title": "", "id": "3696757d-30f7-42ee-9b9c-93036a7ec2ce", "name": "just"}], "license_id": "odc-odbl", "relationships_as_subject": [], "organization": {"description": "", "created": "2018-02-07T15:37:27.733652", "title": "oficina-de-muestra", "name": "oficina-de-muestra", "is_organization": @@ -816,13 +814,13 @@ interactions: "value": "R/P1M"}, {"key": "issued", "value": "2016-09-05T18:25:21.249967"}, {"key": "modified", "value": "2016-12-19T18:19:32.496552"}, {"key": "super_theme", "value": "[\"JUST\"]"}], "license_url": "http://www.opendefinition.org/licenses/odc-odbl", - "title": "Base de datos legislativos Infoleg", "revision_id": "c909ff98-1b1e-4bf1-a270-2be1a97c91c5"}}'} + "title": "Base de datos legislativos Infoleg", "revision_id": "b4dbd4f6-8d45-4192-9139-56084ea02b77"}}'} headers: cache-control: [no-cache] connection: [keep-alive] - content-length: ['12457'] + content-length: ['12346'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:54 GMT'] + date: ['Thu, 08 Feb 2018 18:34:05 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -845,7 +843,7 @@ interactions: connection: [keep-alive] content-length: ['127'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:54 GMT'] + date: ['Thu, 08 Feb 2018 18:34:06 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -937,7 +935,7 @@ interactions: connection: [keep-alive] content-length: ['5727'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:54 GMT'] + date: ['Thu, 08 Feb 2018 18:34:06 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -994,9 +992,8 @@ interactions: \"title\": \"modificada_por\"}, {\"type\": \"integer\", \"description\": \"Identificar \\u00fanico de la norma que modifica.\", \"title\": \"modifica_a\"}]", "created": "2016-09-29T11:17:50.274309", "last_modified": "2016-12-19T12:38:58.700747", - "size": null, "id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777_1", - "name": "Base Infoleg de Normativa Nacional"}, {"mimetype": null, "accessURL": - "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/d9fbf1d5-679e-4833-bcdc-3a8f58523d18", + "size": null, "id": "same-catalog-id_1", "name": "Base Infoleg de Normativa + Nacional"}, {"mimetype": null, "accessURL": "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/d9fbf1d5-679e-4833-bcdc-3a8f58523d18", "description": "Base complementaria Infoleg con normas nacionales modificadas: leyes, decisiones administrativas, decretos, resoluciones, disposiciones, acordadas y todo acto administrativo publicado en la primera secci\u00f3n del Bolet\u00edn @@ -1018,9 +1015,9 @@ interactions: \"title\": \"titulo_resumido\"}, {\"type\": \"string\", \"description\": \"Sumario del t\\u00edtulo en una o dos palabras. (Ej: \\\"sistema integrado de jubilaciones\\\")\", \"title\": \"titulo_sumario\"}]", "created": "2016-10-14T16:02:49.841535", "last_modified": - "2016-12-19T14:48:05.348064", "size": null, "id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777_2", - "name": "Base Complementaria Infoleg de Normas Modificadas"}, {"mimetype": null, - "accessURL": "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/f9170086-6538-44f1-8c7e-3e193c1fea7f", + "2016-12-19T14:48:05.348064", "size": null, "id": "same-catalog-id_2", "name": + "Base Complementaria Infoleg de Normas Modificadas"}, {"mimetype": null, "accessURL": + "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/f9170086-6538-44f1-8c7e-3e193c1fea7f", "description": "Base complementaria Infoleg con normas nacionales modificatorias: leyes, decisiones administrativas, decretos, resoluciones, disposiciones, acordadas y todo acto administrativo publicado en la primera secci\u00f3n del Bolet\u00edn @@ -1042,13 +1039,13 @@ interactions: \"title\": \"titulo_resumido\"}, {\"type\": \"string\", \"description\": \"Sumario del t\\u00edtulo en una o dos palabras. (Ej: \\\"sistema integrado de jubilaciones\\\")\", \"title\": \"titulo_sumario\"}]", "created": "2016-10-18T17:26:58.415087", "last_modified": - "2016-12-19T14:47:21.330355", "size": null, "id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777_3", - "name": "Base Complementaria Infoleg de Normas Modificatorias"}]}' + "2016-12-19T14:47:21.330355", "size": null, "id": "same-catalog-id_3", "name": + "Base Complementaria Infoleg de Normas Modificatorias"}]}' headers: Accept: ['*/*'] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - Content-Length: ['8996'] + Content-Length: ['8885'] Content-Type: [application/json] User-Agent: ['ckanapi/4.0 (+https://github.com/ckan/ckanapi)'] method: POST @@ -1060,7 +1057,7 @@ interactions: Administrativa. Oficina Nacional de Contrataciones. Direcci\u00f3n de Compras Electr\u00f3nicas.", "relationships_as_object": [], "private": false, "maintainer_email": "onc-compraselectronicas@modernizacion.gob.ar", "num_tags": 4, "id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777", - "metadata_created": "2018-02-07T15:48:52.823168", "metadata_modified": "2018-02-07T15:48:54.218187", + "metadata_created": "2018-02-08T18:34:04.754153", "metadata_modified": "2018-02-08T18:34:06.088581", "author": "Ministerio de Modernizaci\u00f3n. Secretar\u00eda de Modernizaci\u00f3n Administrativa. Oficina Nacional de Contrataciones", "author_email": "onc@modernizacion.gob.ar", "state": "active", "version": null, "creator_user_id": "824dc36b-38b0-448d-bcb2-dda225089ba2", @@ -1095,7 +1092,7 @@ interactions: que la modifica.\", \"title\": \"modificada_por\"}, {\"type\": \"integer\", \"description\": \"Identificar \\u00fanico de la norma que modifica.\", \"title\": \"modifica_a\"}]", "package_id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777", - "webstore_last_updated": null, "datastore_active": false, "id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777_1", + "webstore_last_updated": null, "datastore_active": false, "id": "same-catalog-id_1", "size": null, "state": "active", "accessURL": "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/8db246a2-48dd-4f2f-b08e-ab6293747882", "hash": "", "description": "Base de documentos digitales normativos nacionales: leyes, decisiones administrativas, decretos, resoluciones, disposiciones, @@ -1104,7 +1101,7 @@ interactions: "url_type": null, "mimetype": null, "cache_url": null, "name": "Base Infoleg de Normativa Nacional", "created": "2016-09-29T11:17:50.274309", "url": "http://datos.jus.gob.ar/dataset/d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23/resource/8db246a2-48dd-4f2f-b08e-ab6293747882/download/baseinfolegnormativanacional.csv", "webstore_url": null, "mimetype_inner": null, "position": 0, "revision_id": - "a5bf1ad0-a066-41dd-9734-658b39515701", "resource_type": null}, {"cache_last_updated": + "649ba4b6-4748-4e24-aa85-12a0e157fd2a", "resource_type": null}, {"cache_last_updated": null, "attributesDescription": "[{\"type\": \"integer\", \"description\": \"Identificador \\u00fanico de la norma modificada dentro de la base de datos.\", \"title\": \"id_norma_modificada\"}, {\"type\": \"integer\", \"description\": @@ -1122,8 +1119,8 @@ interactions: \"string\", \"description\": \"Sumario del t\\u00edtulo en una o dos palabras. (Ej: \\\"sistema integrado de jubilaciones\\\")\", \"title\": \"titulo_sumario\"}]", "package_id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777", "webstore_last_updated": - null, "datastore_active": false, "id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777_2", - "size": null, "state": "active", "accessURL": "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/d9fbf1d5-679e-4833-bcdc-3a8f58523d18", + null, "datastore_active": false, "id": "same-catalog-id_2", "size": null, + "state": "active", "accessURL": "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/d9fbf1d5-679e-4833-bcdc-3a8f58523d18", "hash": "", "description": "Base complementaria Infoleg con normas nacionales modificadas: leyes, decisiones administrativas, decretos, resoluciones, disposiciones, acordadas y todo acto administrativo publicado en la primera secci\u00f3n @@ -1133,7 +1130,7 @@ interactions: Infoleg de Normas Modificadas", "created": "2016-10-14T16:02:49.841535", "url": "http://datos.jus.gob.ar/dataset/d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23/resource/d9fbf1d5-679e-4833-bcdc-3a8f58523d18/download/basecomplementariainfolegnormasmodificadas.csv", "webstore_url": null, "mimetype_inner": null, "position": 1, "revision_id": - "a5bf1ad0-a066-41dd-9734-658b39515701", "resource_type": null}, {"cache_last_updated": + "649ba4b6-4748-4e24-aa85-12a0e157fd2a", "resource_type": null}, {"cache_last_updated": null, "attributesDescription": "[{\"type\": \"integer\", \"description\": \"Identificador \\u00fanico de la norma modificatoria dentro de la base de datos.\", \"title\": \"id_norma_modificatoria\"}, {\"type\": \"integer\", @@ -1151,7 +1148,7 @@ interactions: \"titulo_resumido\"}, {\"type\": \"string\", \"description\": \"Sumario del t\\u00edtulo en una o dos palabras. (Ej: \\\"sistema integrado de jubilaciones\\\")\", \"title\": \"titulo_sumario\"}]", "package_id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777", - "webstore_last_updated": null, "datastore_active": false, "id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777_3", + "webstore_last_updated": null, "datastore_active": false, "id": "same-catalog-id_3", "size": null, "state": "active", "accessURL": "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/f9170086-6538-44f1-8c7e-3e193c1fea7f", "hash": "", "description": "Base complementaria Infoleg con normas nacionales modificatorias: leyes, decisiones administrativas, decretos, resoluciones, @@ -1162,7 +1159,7 @@ interactions: null, "name": "Base Complementaria Infoleg de Normas Modificatorias", "created": "2016-10-18T17:26:58.415087", "url": "http://datos.jus.gob.ar/dataset/d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23/resource/f9170086-6538-44f1-8c7e-3e193c1fea7f/download/basecomplementariainfolegnormasmodificatorias.csv", "webstore_url": null, "mimetype_inner": null, "position": 2, "revision_id": - "a5bf1ad0-a066-41dd-9734-658b39515701", "resource_type": null}], "num_resources": + "649ba4b6-4748-4e24-aa85-12a0e157fd2a", "resource_type": null}], "num_resources": 3, "tags": [{"vocabulary_id": null, "state": "active", "display_name": "bienes", "id": "7cacc193-5776-46b3-8f31-ccc52042248f", "name": "bienes"}, {"vocabulary_id": null, "state": "active", "display_name": "compras", "id": "27e042d0-87b8-416e-9745-8b504dc182e0", @@ -1171,7 +1168,7 @@ interactions: {"vocabulary_id": null, "state": "active", "display_name": "convocatorias", "id": "a7cf30d4-d35a-433a-914f-47727d61b6f7", "name": "convocatorias"}], "groups": [{"display_name": "econ", "description": "", "image_display_url": "", "title": - "", "id": "68d64483-9323-47da-80a7-bc874747179f", "name": "econ"}], "license_id": + "", "id": "d9680d0a-7cca-4df9-b130-12bd51c62f38", "name": "econ"}], "license_id": "notspecified", "relationships_as_subject": [], "organization": {"description": "", "created": "2018-02-07T15:37:27.733652", "title": "oficina-de-muestra", "name": "oficina-de-muestra", "is_organization": true, "state": "active", @@ -1186,13 +1183,13 @@ interactions: "[\"spa\"]"}, {"key": "modified", "value": "2016-04-19T19:48:05.433640-03:00"}, {"key": "spatial", "value": "ARG"}, {"key": "super_theme", "value": "[\"econ\"]"}, {"key": "temporal", "value": "2015-01-01/2015-12-31"}], "title": "Sistema - de contrataciones electr\u00f3nicas", "revision_id": "1aa25125-adf7-4453-9eff-03e90f071c9f"}}'} + de contrataciones electr\u00f3nicas", "revision_id": "5ccbddba-de69-4dd5-8f60-69bbb17920ee"}}'} headers: cache-control: [no-cache] connection: [keep-alive] - content-length: ['11553'] + content-length: ['11442'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:54 GMT'] + date: ['Thu, 08 Feb 2018 18:34:06 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -1215,7 +1212,7 @@ interactions: connection: [keep-alive] content-length: ['127'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:54 GMT'] + date: ['Thu, 08 Feb 2018 18:34:06 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -1307,7 +1304,7 @@ interactions: connection: [keep-alive] content-length: ['5727'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:54 GMT'] + date: ['Thu, 08 Feb 2018 18:34:06 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -1358,13 +1355,13 @@ interactions: {\"type\": \"string\", \"description\": \"Clase de la convocatoria.\", \"title\": \"clase_convocatoria\"}, {\"type\": \"string\", \"description\": \"Objeto/objetivo de la convocatoria\", \"title\": \"objeto_convocatoria\"}]", "created": "2016-04-14T22:48:05.433640", - "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23_1.1", + "last_modified": "2016-04-19T22:48:05.433640", "size": 5120, "id": "same-catalog-id_1.1", "name": "Convocatorias abiertas durante el a\u00f1o 2015"}]}' headers: Accept: ['*/*'] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - Content-Length: ['4207'] + Content-Length: ['4170'] Content-Type: [application/json] User-Agent: ['ckanapi/4.0 (+https://github.com/ckan/ckanapi)'] method: POST @@ -1377,7 +1374,7 @@ interactions: del Sistema Argentino de Informaci\u00f3n Jur\u00eddica", "relationships_as_object": [], "private": false, "maintainer_email": "datosabiertos@saij.gob.ar", "num_tags": 9, "id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23", "metadata_created": - "2018-02-07T15:48:53.420868", "metadata_modified": "2018-02-07T15:48:54.929406", + "2018-02-08T18:34:05.284899", "metadata_modified": "2018-02-08T18:34:06.413914", "author": "Ministerio de Justicia y Derechos Humanos. Secretar\u00eda de Planificaci\u00f3n Estrat\u00e9gica. Direcci\u00f3n Nacional del Sistema Argentino de Informaci\u00f3n Jur\u00eddica", "author_email": "datosabiertos@saij.gob.ar", "state": "active", @@ -1406,15 +1403,15 @@ interactions: \"clase_convocatoria\"}, {\"type\": \"string\", \"description\": \"Objeto/objetivo de la convocatoria\", \"title\": \"objeto_convocatoria\"}]", "package_id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23", "webstore_last_updated": - null, "datastore_active": false, "id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23_1.1", - "size": "5120", "state": "active", "accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a", + null, "datastore_active": false, "id": "same-catalog-id_1.1", "size": "5120", + "state": "active", "accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a", "hash": "", "description": "Listado de las convocatorias abiertas durante el a\u00f1o 2015 en el sistema de contrataciones electr\u00f3nicas", "format": "CSV", "last_modified": "2016-04-19T22:48:05.433640", "url_type": null, "mimetype": "text/csv", "cache_url": null, "name": "Convocatorias abiertas durante el a\u00f1o 2015", "created": "2016-04-14T22:48:05.433640", "url": "http://186.33.211.253/dataset/99db6631-d1c9-470b-a73e-c62daa32c420/resource/4b7447cb-31ff-4352-96c3-589d212e1cc9/download/convocatorias-abiertas-anio-2015.csv", "webstore_url": null, "mimetype_inner": null, "position": 0, "revision_id": - "b57ed709-992a-41d9-811e-32ebc4c596be", "resource_type": null}], "num_resources": + "eb6e9501-8c1f-4b55-9904-e001910be0fd", "resource_type": null}], "num_resources": 1, "tags": [{"vocabulary_id": null, "state": "active", "display_name": "acordadas", "id": "a843f06d-1215-4b68-9946-958cbd67cc39", "name": "acordadas"}, {"vocabulary_id": null, "state": "active", "display_name": "administrativas", "id": "33f302e5-4b3c-4ee8-9d9a-1066c83e7af7", @@ -1431,7 +1428,7 @@ interactions: "9b182d6f-c93a-4c52-8f7c-d9584fd1c581", "name": "leyes"}, {"vocabulary_id": null, "state": "active", "display_name": "resoluciones", "id": "8b591b18-3fa2-42d7-a7f9-4178a380ce33", "name": "resoluciones"}], "groups": [{"display_name": "just", "description": - "", "image_display_url": "", "title": "", "id": "548bc2a4-9f80-4bbc-874b-32a4dc207558", + "", "image_display_url": "", "title": "", "id": "3696757d-30f7-42ee-9b9c-93036a7ec2ce", "name": "just"}], "license_id": "odc-odbl", "relationships_as_subject": [], "organization": {"description": "", "created": "2018-02-07T15:37:27.733652", "title": "oficina-de-muestra", "name": "oficina-de-muestra", "is_organization": @@ -1447,13 +1444,13 @@ interactions: "value": "R/P1M"}, {"key": "issued", "value": "2016-09-05T18:25:21.249967"}, {"key": "modified", "value": "2016-12-19T18:19:32.496552"}, {"key": "super_theme", "value": "[\"JUST\"]"}], "license_url": "http://www.opendefinition.org/licenses/odc-odbl", - "title": "Base de datos legislativos Infoleg", "revision_id": "c909ff98-1b1e-4bf1-a270-2be1a97c91c5"}}'} + "title": "Base de datos legislativos Infoleg", "revision_id": "b4dbd4f6-8d45-4192-9139-56084ea02b77"}}'} headers: cache-control: [no-cache] connection: [keep-alive] - content-length: ['6772'] + content-length: ['6735'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:55 GMT'] + date: ['Thu, 08 Feb 2018 18:34:06 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -1475,7 +1472,7 @@ interactions: Administrativa. Oficina Nacional de Contrataciones. Direcci\u00f3n de Compras Electr\u00f3nicas.", "relationships_as_object": [], "private": false, "maintainer_email": "onc-compraselectronicas@modernizacion.gob.ar", "num_tags": 4, "id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777", - "metadata_created": "2018-02-07T15:48:52.823168", "metadata_modified": "2018-02-07T15:48:54.218187", + "metadata_created": "2018-02-08T18:34:04.754153", "metadata_modified": "2018-02-08T18:34:06.088581", "author": "Ministerio de Modernizaci\u00f3n. Secretar\u00eda de Modernizaci\u00f3n Administrativa. Oficina Nacional de Contrataciones", "author_email": "onc@modernizacion.gob.ar", "state": "active", "version": null, "creator_user_id": "824dc36b-38b0-448d-bcb2-dda225089ba2", @@ -1510,7 +1507,7 @@ interactions: que la modifica.\", \"title\": \"modificada_por\"}, {\"type\": \"integer\", \"description\": \"Identificar \\u00fanico de la norma que modifica.\", \"title\": \"modifica_a\"}]", "package_id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777", - "webstore_last_updated": null, "datastore_active": false, "id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777_1", + "webstore_last_updated": null, "datastore_active": false, "id": "same-catalog-id_1", "size": null, "state": "active", "accessURL": "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/8db246a2-48dd-4f2f-b08e-ab6293747882", "hash": "", "description": "Base de documentos digitales normativos nacionales: leyes, decisiones administrativas, decretos, resoluciones, disposiciones, @@ -1519,7 +1516,7 @@ interactions: "url_type": null, "mimetype": null, "cache_url": null, "name": "Base Infoleg de Normativa Nacional", "created": "2016-09-29T11:17:50.274309", "url": "http://datos.jus.gob.ar/dataset/d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23/resource/8db246a2-48dd-4f2f-b08e-ab6293747882/download/baseinfolegnormativanacional.csv", "webstore_url": null, "mimetype_inner": null, "position": 0, "revision_id": - "a5bf1ad0-a066-41dd-9734-658b39515701", "resource_type": null}, {"cache_last_updated": + "649ba4b6-4748-4e24-aa85-12a0e157fd2a", "resource_type": null}, {"cache_last_updated": null, "attributesDescription": "[{\"type\": \"integer\", \"description\": \"Identificador \\u00fanico de la norma modificada dentro de la base de datos.\", \"title\": \"id_norma_modificada\"}, {\"type\": \"integer\", \"description\": @@ -1537,8 +1534,8 @@ interactions: \"string\", \"description\": \"Sumario del t\\u00edtulo en una o dos palabras. (Ej: \\\"sistema integrado de jubilaciones\\\")\", \"title\": \"titulo_sumario\"}]", "package_id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777", "webstore_last_updated": - null, "datastore_active": false, "id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777_2", - "size": null, "state": "active", "accessURL": "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/d9fbf1d5-679e-4833-bcdc-3a8f58523d18", + null, "datastore_active": false, "id": "same-catalog-id_2", "size": null, + "state": "active", "accessURL": "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/d9fbf1d5-679e-4833-bcdc-3a8f58523d18", "hash": "", "description": "Base complementaria Infoleg con normas nacionales modificadas: leyes, decisiones administrativas, decretos, resoluciones, disposiciones, acordadas y todo acto administrativo publicado en la primera secci\u00f3n @@ -1548,7 +1545,7 @@ interactions: Infoleg de Normas Modificadas", "created": "2016-10-14T16:02:49.841535", "url": "http://datos.jus.gob.ar/dataset/d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23/resource/d9fbf1d5-679e-4833-bcdc-3a8f58523d18/download/basecomplementariainfolegnormasmodificadas.csv", "webstore_url": null, "mimetype_inner": null, "position": 1, "revision_id": - "a5bf1ad0-a066-41dd-9734-658b39515701", "resource_type": null}, {"cache_last_updated": + "649ba4b6-4748-4e24-aa85-12a0e157fd2a", "resource_type": null}, {"cache_last_updated": null, "attributesDescription": "[{\"type\": \"integer\", \"description\": \"Identificador \\u00fanico de la norma modificatoria dentro de la base de datos.\", \"title\": \"id_norma_modificatoria\"}, {\"type\": \"integer\", @@ -1566,7 +1563,7 @@ interactions: \"titulo_resumido\"}, {\"type\": \"string\", \"description\": \"Sumario del t\\u00edtulo en una o dos palabras. (Ej: \\\"sistema integrado de jubilaciones\\\")\", \"title\": \"titulo_sumario\"}]", "package_id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777", - "webstore_last_updated": null, "datastore_active": false, "id": "same-catalog-id_99db6631-d1c9-470b-a73e-c62daa32c777_3", + "webstore_last_updated": null, "datastore_active": false, "id": "same-catalog-id_3", "size": null, "state": "active", "accessURL": "http://datos.jus.gob.ar/dataset/base-de-datos-legislativos-infoleg/archivo/f9170086-6538-44f1-8c7e-3e193c1fea7f", "hash": "", "description": "Base complementaria Infoleg con normas nacionales modificatorias: leyes, decisiones administrativas, decretos, resoluciones, @@ -1577,7 +1574,7 @@ interactions: null, "name": "Base Complementaria Infoleg de Normas Modificatorias", "created": "2016-10-18T17:26:58.415087", "url": "http://datos.jus.gob.ar/dataset/d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23/resource/f9170086-6538-44f1-8c7e-3e193c1fea7f/download/basecomplementariainfolegnormasmodificatorias.csv", "webstore_url": null, "mimetype_inner": null, "position": 2, "revision_id": - "a5bf1ad0-a066-41dd-9734-658b39515701", "resource_type": null}], "num_resources": + "649ba4b6-4748-4e24-aa85-12a0e157fd2a", "resource_type": null}], "num_resources": 3, "tags": [{"vocabulary_id": null, "state": "active", "display_name": "bienes", "id": "7cacc193-5776-46b3-8f31-ccc52042248f", "name": "bienes"}, {"vocabulary_id": null, "state": "active", "display_name": "compras", "id": "27e042d0-87b8-416e-9745-8b504dc182e0", @@ -1586,7 +1583,7 @@ interactions: {"vocabulary_id": null, "state": "active", "display_name": "convocatorias", "id": "a7cf30d4-d35a-433a-914f-47727d61b6f7", "name": "convocatorias"}], "groups": [{"display_name": "econ", "description": "", "image_display_url": "", "title": - "", "id": "68d64483-9323-47da-80a7-bc874747179f", "name": "econ"}], "license_id": + "", "id": "d9680d0a-7cca-4df9-b130-12bd51c62f38", "name": "econ"}], "license_id": "notspecified", "relationships_as_subject": [], "organization": {"description": "", "created": "2018-02-07T15:37:27.733652", "title": "oficina-de-muestra", "name": "oficina-de-muestra", "is_organization": true, "state": "active", @@ -1601,13 +1598,13 @@ interactions: "[\"spa\"]"}, {"key": "modified", "value": "2016-04-19T19:48:05.433640-03:00"}, {"key": "spatial", "value": "ARG"}, {"key": "super_theme", "value": "[\"econ\"]"}, {"key": "temporal", "value": "2015-01-01/2015-12-31"}], "title": "Sistema - de contrataciones electr\u00f3nicas", "revision_id": "1aa25125-adf7-4453-9eff-03e90f071c9f"}}'} + de contrataciones electr\u00f3nicas", "revision_id": "5ccbddba-de69-4dd5-8f60-69bbb17920ee"}}'} headers: cache-control: [no-cache] connection: [keep-alive] - content-length: ['11551'] + content-length: ['11440'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:55 GMT'] + date: ['Thu, 08 Feb 2018 18:34:06 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} @@ -1630,7 +1627,7 @@ interactions: del Sistema Argentino de Informaci\u00f3n Jur\u00eddica", "relationships_as_object": [], "private": false, "maintainer_email": "datosabiertos@saij.gob.ar", "num_tags": 9, "id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23", "metadata_created": - "2018-02-07T15:48:53.420868", "metadata_modified": "2018-02-07T15:48:54.929406", + "2018-02-08T18:34:05.284899", "metadata_modified": "2018-02-08T18:34:06.413914", "author": "Ministerio de Justicia y Derechos Humanos. Secretar\u00eda de Planificaci\u00f3n Estrat\u00e9gica. Direcci\u00f3n Nacional del Sistema Argentino de Informaci\u00f3n Jur\u00eddica", "author_email": "datosabiertos@saij.gob.ar", "state": "active", @@ -1659,15 +1656,15 @@ interactions: \"clase_convocatoria\"}, {\"type\": \"string\", \"description\": \"Objeto/objetivo de la convocatoria\", \"title\": \"objeto_convocatoria\"}]", "package_id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23", "webstore_last_updated": - null, "datastore_active": false, "id": "same-catalog-id_d9a963ea-8b1d-4ca3-9dd9-07a4773e8c23_1.1", - "size": "5120", "state": "active", "accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a", + null, "datastore_active": false, "id": "same-catalog-id_1.1", "size": "5120", + "state": "active", "accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a", "hash": "", "description": "Listado de las convocatorias abiertas durante el a\u00f1o 2015 en el sistema de contrataciones electr\u00f3nicas", "format": "CSV", "last_modified": "2016-04-19T22:48:05.433640", "url_type": null, "mimetype": "text/csv", "cache_url": null, "name": "Convocatorias abiertas durante el a\u00f1o 2015", "created": "2016-04-14T22:48:05.433640", "url": "http://186.33.211.253/dataset/99db6631-d1c9-470b-a73e-c62daa32c420/resource/4b7447cb-31ff-4352-96c3-589d212e1cc9/download/convocatorias-abiertas-anio-2015.csv", "webstore_url": null, "mimetype_inner": null, "position": 0, "revision_id": - "b57ed709-992a-41d9-811e-32ebc4c596be", "resource_type": null}], "num_resources": + "eb6e9501-8c1f-4b55-9904-e001910be0fd", "resource_type": null}], "num_resources": 1, "tags": [{"vocabulary_id": null, "state": "active", "display_name": "acordadas", "id": "a843f06d-1215-4b68-9946-958cbd67cc39", "name": "acordadas"}, {"vocabulary_id": null, "state": "active", "display_name": "administrativas", "id": "33f302e5-4b3c-4ee8-9d9a-1066c83e7af7", @@ -1684,7 +1681,7 @@ interactions: "9b182d6f-c93a-4c52-8f7c-d9584fd1c581", "name": "leyes"}, {"vocabulary_id": null, "state": "active", "display_name": "resoluciones", "id": "8b591b18-3fa2-42d7-a7f9-4178a380ce33", "name": "resoluciones"}], "groups": [{"display_name": "just", "description": - "", "image_display_url": "", "title": "", "id": "548bc2a4-9f80-4bbc-874b-32a4dc207558", + "", "image_display_url": "", "title": "", "id": "3696757d-30f7-42ee-9b9c-93036a7ec2ce", "name": "just"}], "license_id": "odc-odbl", "relationships_as_subject": [], "organization": {"description": "", "created": "2018-02-07T15:37:27.733652", "title": "oficina-de-muestra", "name": "oficina-de-muestra", "is_organization": @@ -1700,13 +1697,13 @@ interactions: "value": "R/P1M"}, {"key": "issued", "value": "2016-09-05T18:25:21.249967"}, {"key": "modified", "value": "2016-12-19T18:19:32.496552"}, {"key": "super_theme", "value": "[\"JUST\"]"}], "license_url": "http://www.opendefinition.org/licenses/odc-odbl", - "title": "Base de datos legislativos Infoleg", "revision_id": "c909ff98-1b1e-4bf1-a270-2be1a97c91c5"}}'} + "title": "Base de datos legislativos Infoleg", "revision_id": "b4dbd4f6-8d45-4192-9139-56084ea02b77"}}'} headers: cache-control: [no-cache] connection: [keep-alive] - content-length: ['6770'] + content-length: ['6733'] content-type: [application/json;charset=utf-8] - date: ['Wed, 07 Feb 2018 15:48:55 GMT'] + date: ['Thu, 08 Feb 2018 18:34:06 GMT'] pragma: [no-cache] server: [nginx/1.11.9] status: {code: 200, message: OK} diff --git a/tests/test_ckan_integration.py b/tests/test_ckan_integration.py index f8c5b44..f59da51 100644 --- a/tests/test_ckan_integration.py +++ b/tests/test_ckan_integration.py @@ -18,7 +18,7 @@ class FederationTestCase(unittest.TestCase): portal_url = 'http://181.209.63.239' - apikey = 'an_apikey' + apikey = 'una_apikey' @classmethod def get_sample(cls, sample_filename): @@ -110,8 +110,7 @@ def test_resources_swapped_correctly(self): full_package_id = push_dataset_to_ckan(self.full_catalog, catalog_id, 'oficina-de-muestra', full_dataset_id, self.portal_url, self.apikey) justice_package_id = push_dataset_to_ckan(self.justice_catalog, catalog_id, 'oficina-de-muestra', - justice_dataset_id, self.portal_url, - self.apikey) + justice_dataset_id, self.portal_url, self.apikey) # Switch them back full_dataset['distribution'], justice_dataset['distribution'] = \ justice_dataset['distribution'], full_dataset['distribution'] @@ -125,17 +124,7 @@ def test_resources_swapped_correctly(self): self.assertEqual(len(justice_package['resources']), len(full_dataset['distribution'])) for resource, justice_distribution in zip(full_package['resources'], justice_dataset['distribution']): - self.assertEqual('same-catalog-id_'+full_dataset_id+'_'+justice_distribution['identifier'], - resource['id']) + self.assertEqual('same-catalog-id_'+justice_distribution['identifier'], resource['id']) for resource, full_distribution in zip(justice_package['resources'], full_dataset['distribution']): - self.assertEqual('same-catalog-id_'+justice_dataset_id+'_'+full_distribution['identifier'], - resource['id']) - - def test_invalid_catalogs_are_rejected(self): - invalid_sample = self.get_sample('missing_catalog_description.json') - invalid_catalog = pydatajson.DataJson(invalid_sample) - invalida_dataset_id = invalid_catalog.datasets[0]['identifier'] - with self.assertRaises(ValueError): - push_dataset_to_ckan(invalid_catalog, 'invalid', 'oficina-de-muestra', invalida_dataset_id, - self.portal_url, self.apikey) + self.assertEqual('same-catalog-id_'+full_distribution['identifier'], resource['id']) diff --git a/tests/test_ckan_utils.py b/tests/test_ckan_utils.py index 6e7303a..fdf9469 100644 --- a/tests/test_ckan_utils.py +++ b/tests/test_ckan_utils.py @@ -10,7 +10,6 @@ class DatasetConversionTestCase(unittest.TestCase): - sample = 'full_data.json' @classmethod def get_sample(cls, sample_filename): @@ -18,10 +17,10 @@ def get_sample(cls, sample_filename): @classmethod def setUpClass(cls): - cls.catalog = pydatajson.DataJson(cls.get_sample(cls.sample)) + cls.catalog = pydatajson.DataJson(cls.get_sample('full_data.json')) cls.catalog_id = cls.catalog.get('identifier', re.sub(r'[^a-z-_]+', '', cls.catalog['title'].lower())) cls.dataset = cls.catalog.datasets[0] - cls.dataset_id = cls.dataset['identifier'] + cls.dataset_id = cls.dataset.get('identifier') cls.distributions = cls.dataset['distribution'] def test_replicated_plain_attributes_are_corrext(self): diff --git a/tests/test_federation.py b/tests/test_federation.py index 93fbb8a..f4bea7b 100644 --- a/tests/test_federation.py +++ b/tests/test_federation.py @@ -53,12 +53,14 @@ def test_id_is_updated_correctly(self, mock_portal): def mock_call_action(action, data_dict=None): if action == 'package_update': return {'id': data_dict['id']} + if action == 'package_create': + self.fail('should not be called') else: return [] mock_portal.return_value.call_action = mock_call_action res_id = push_dataset_to_ckan(self.catalog, self.catalog_id, 'owner', self.dataset['identifier'], 'portal', 'key') - self.assertEqual(self.catalog_id+'_'+self.dataset_id, res_id, res_id) + self.assertEqual(self.catalog_id+'_'+self.dataset_id, res_id) @patch('pydatajson.federation.RemoteCKAN', autospec=True) def test_new_groups_are_created(self, mock_portal): @@ -120,10 +122,3 @@ def mock_call_action(action, data_dict=None): mock_portal.return_value.call_action = mock_call_action push_dataset_to_ckan(self.minimum_catalog, self.minimum_catalog_id, 'owner', self.minimum_dataset['identifier'], 'portal', 'key') - - def test_invalid_catalogs_are_rejected(self): - invalid_sample = self.get_sample('missing_catalog_description.json') - invalid_catalog = pydatajson.DataJson(invalid_sample) - invalid_dataset_id = invalid_catalog.datasets[0]['identifier'] - with self.assertRaises(ValueError): - push_dataset_to_ckan(invalid_catalog, self.catalog_id, 'owner', invalid_dataset_id, 'portal', 'key')