Skip to content

Commit

Permalink
Merge 23513ed into 198f060
Browse files Browse the repository at this point in the history
  • Loading branch information
lrromero committed Dec 21, 2018
2 parents 198f060 + 23513ed commit 3294efe
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 2 deletions.
8 changes: 8 additions & 0 deletions docs/MANUAL.md
Expand Up @@ -551,6 +551,14 @@ portal de destino. Toma los siguientes parámetros:
**Advertencia**: En caso de que la organización tenga hijos en la jerarquía, estos pasan a ser de primer nivel.


- **pydatajson.federation.remove_organizations_from_ckan()**: Tomando una lista de ids o names de organizaciones,
las borra en el portal de destino. Toma los siguientes parámetros:
- **portal_url**: La URL del portal CKAN de destino.
- **apikey**: La apikey de un usuario con los permisos que le permitan borrar organizaciones.
- **organization_list**: Lista de id o names de las organizaciones a borrar.

Retorna None.

## Anexo I: Estructura de respuestas

### validate_catalog()
Expand Down
18 changes: 16 additions & 2 deletions pydatajson/federation.py
Expand Up @@ -478,10 +478,24 @@ def remove_organization_from_ckan(portal_url, apikey, organization_id):
.format(organization_id, str(e)))


def remove_organizations_from_ckan(portal_url, apikey, organization_list):
"""Toma una lista de ids de organización y las purga del portal de destino.
Args:
portal_url (str): La URL del portal CKAN de destino.
apikey (str): La apikey de un usuario con los permisos que le
permitan borrar la organización.
organization_list(list): Id o name de las organizaciones a borrar.
Returns:
None.
"""
for org in organization_list:
remove_organization_from_ckan(portal_url, apikey, org)


def restore_organization_to_ckan(catalog, owner_org, portal_url, apikey,
dataset_list=None, download_strategy=None,
generate_new_access_url=None
):
generate_new_access_url=None):
"""Restaura los datasets de la organización de un catálogo al portal pasado
por parámetro. Si hay temas presentes en el DataJson que no están en el
portal de CKAN, los genera.
Expand Down
7 changes: 7 additions & 0 deletions tests/test_federation.py
Expand Up @@ -678,6 +678,13 @@ def test_remove_organization_sends_correct_parameters(self, mock_portal):
mock_portal.return_value.call_action.assert_called_with(
'organization_purge', data_dict={'id': 'test_id'})

def test_remove_organizations(self, mock_portal):
ids = ['id1', 'id2', 'id3']
remove_organizations_from_ckan(self.portal_url, self.apikey, ids)
for test_id in ids:
mock_portal.return_value.call_action.assert_any_call(
'organization_purge', data_dict={'id': test_id})

@patch('logging.Logger.exception')
def test_remove_organization_logs_failures(self, mock_logger, mock_portal):
mock_portal.return_value.call_action.side_effect = Exception('test')
Expand Down

0 comments on commit 3294efe

Please sign in to comment.