Skip to content

Commit

Permalink
Agrega función para eliminar todos los datastets federados de un catá…
Browse files Browse the repository at this point in the history
…logo que se encuentren en un CKAN.
  • Loading branch information
abenassi committed Apr 23, 2018
1 parent d54316d commit db1418e
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
1 change: 1 addition & 0 deletions pydatajson/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ def __init__(self, catalog=None, schema_filename=None, schema_dir=None,
restore_catalog_to_ckan = federation.restore_catalog_to_ckan
push_theme_to_ckan = federation.push_theme_to_ckan
push_new_themes = federation.push_new_themes
remove_harvested_ds_from_ckan = federation.remove_harvested_ds_from_ckan

def _build_index(self):
"""Itera todos los datasets, distribucioens y fields indexandolos."""
Expand Down
20 changes: 19 additions & 1 deletion pydatajson/federation.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,24 @@ def remove_dataset_from_ckan(identifier, portal_url, apikey):
ckan_portal.call_action('dataset_purge', data_dict={'id': identifier})


def remove_harvested_ds_from_ckan(catalog, portal_url, apikey,
catalog_id=None, original_ids=None):
catalog_id = catalog_id or catalog.get("identifier")
assert catalog_id, "Necesita un identificador de catálogo."

if not original_ids:
original_ids = catalog.get_datasets(meta_field="identifier")
harvested_ids = ["_".join([catalog_id, original_id])
for original_id in original_ids]

for harvested_id in harvested_ids:
try:
remove_dataset_from_ckan(harvested_id, portal_url, apikey)
print("{} eliminado de {}".format(harvested_id, catalog_id))
except:
print("{} de {} no existe.".format(harvested_id, catalog_id))


def remove_datasets_from_ckan(portal_url, apikey, filter_in=None,
filter_out=None, only_time_series=False,
organization=None):
Expand Down Expand Up @@ -102,7 +120,7 @@ def remove_datasets_from_ckan(portal_url, apikey, filter_in=None,
if organization:
query = 'organization:"' + organization + '"'
search_result = ckan_portal.call_action('package_search', data_dict={
'q': query, 'rows': 500, 'start': 0})
'q': query, 'rows': 500, 'start': 0})
org_identifiers = [dataset['id']
for dataset in search_result['results']]
start = 500
Expand Down

0 comments on commit db1418e

Please sign in to comment.