Skip to content

Commit

Permalink
Merge 38709b1 into 198f060
Browse files Browse the repository at this point in the history
  • Loading branch information
lrromero committed Dec 21, 2018
2 parents 198f060 + 38709b1 commit 3d8586a
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
Original file line number Diff line number Diff line change
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 el 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
Original file line number Diff line number Diff line change
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 la organización 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
Original file line number Diff line number Diff line change
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 3d8586a

Please sign in to comment.