From 37cbbf99090656e4015a7a3db67b301ce392a72c Mon Sep 17 00:00:00 2001 From: Gursimran Kaur Date: Sun, 11 Apr 2021 20:16:23 +0530 Subject: [PATCH 1/6] CKAN API used to validate the operationID --- mapactionpy_controller/event.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/mapactionpy_controller/event.py b/mapactionpy_controller/event.py index fe55c46..0bb820b 100644 --- a/mapactionpy_controller/event.py +++ b/mapactionpy_controller/event.py @@ -1,4 +1,6 @@ import json +import urllib +import requests import os import pycountry from mapactionpy_controller import _get_validator_for_config_schema @@ -27,15 +29,28 @@ def __init__(self, event_file): self.affected_country_iso3 = event_def['affected_country_iso3'].lower() self.time_zone = event_def['time_zone'] self.language_iso2 = event_def['language_iso2'] - self.operation_id = (event_def['operation_id']).lower() + # self.operation_id = (event_def['operation_id']).lower() self.default_source_organisation = event_def['default_source_organisation'] self.default_source_organisation_url = event_def['default_source_organisation_url'] self.default_publishing_base_url = event_def['default_publishing_base_url'] + self.operation_id = self._is_valid_group_id((event_def['operation_id']).lower(), self.default_publishing_base_url) self.deployment_primary_email = event_def['deployment_primary_email'] self.default_disclaimer_text = event_def['default_disclaimer_text'] self.default_donor_credits = event_def['default_donor_credits'] # self.donors = event_def['donors'] self.country_name = _parse_country_name(event_def) + + def _is_valid_group_id(self, operation_id, default_publishing_base_url): + # Check if valid group number then return + url = default_publishing_base_url + '/api/3/action/group_show?id={}'.format(operation_id) + try: + response = urllib.request.urlopen(url) + except Exception as exp: + raise ValueError('Not a valid Group ID on the target CKAN Site') + response_dict = json.loads(response.read()) + if response_dict['success'] is not True: + raise ValueError('Not a valid Group ID on the target CKAN Site') + return operation_id def _parse_country_name(event_def): From 64c301908d245e15efb53d0cd8319533f51d61f9 Mon Sep 17 00:00:00 2001 From: Gursimran Kaur Date: Mon, 12 Apr 2021 03:43:55 +0530 Subject: [PATCH 2/6] fix flake8 build errors --- mapactionpy_controller/event.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/mapactionpy_controller/event.py b/mapactionpy_controller/event.py index 0bb820b..d880f1c 100644 --- a/mapactionpy_controller/event.py +++ b/mapactionpy_controller/event.py @@ -1,6 +1,5 @@ import json import urllib -import requests import os import pycountry from mapactionpy_controller import _get_validator_for_config_schema @@ -33,22 +32,22 @@ def __init__(self, event_file): self.default_source_organisation = event_def['default_source_organisation'] self.default_source_organisation_url = event_def['default_source_organisation_url'] self.default_publishing_base_url = event_def['default_publishing_base_url'] - self.operation_id = self._is_valid_group_id((event_def['operation_id']).lower(), self.default_publishing_base_url) + op_id = (event_def['operation_id']).lower() + self.operation_id = self._is_valid_group_id(op_id, self.default_publishing_base_url) self.deployment_primary_email = event_def['deployment_primary_email'] self.default_disclaimer_text = event_def['default_disclaimer_text'] self.default_donor_credits = event_def['default_donor_credits'] # self.donors = event_def['donors'] self.country_name = _parse_country_name(event_def) - def _is_valid_group_id(self, operation_id, default_publishing_base_url): # Check if valid group number then return - url = default_publishing_base_url + '/api/3/action/group_show?id={}'.format(operation_id) + url = default_publishing_base_url + '/api/3/action/group_show?id={}'.format(operation_id) try: response = urllib.request.urlopen(url) - except Exception as exp: + except Exception: raise ValueError('Not a valid Group ID on the target CKAN Site') response_dict = json.loads(response.read()) - if response_dict['success'] is not True: + if not response_dict['success']: raise ValueError('Not a valid Group ID on the target CKAN Site') return operation_id From 998f9beed54e7f5a2aaf2ab720b661c09b82628b Mon Sep 17 00:00:00 2001 From: Gursimran Kaur Date: Mon, 12 Apr 2021 22:13:01 +0530 Subject: [PATCH 3/6] fixed --- mapactionpy_controller/event.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mapactionpy_controller/event.py b/mapactionpy_controller/event.py index d880f1c..d7f38fd 100644 --- a/mapactionpy_controller/event.py +++ b/mapactionpy_controller/event.py @@ -38,7 +38,8 @@ def __init__(self, event_file): self.default_disclaimer_text = event_def['default_disclaimer_text'] self.default_donor_credits = event_def['default_donor_credits'] # self.donors = event_def['donors'] - self.country_name = _parse_country_name(event_def) + self.country_name = _parse_country_name(event_def) + def _is_valid_group_id(self, operation_id, default_publishing_base_url): # Check if valid group number then return url = default_publishing_base_url + '/api/3/action/group_show?id={}'.format(operation_id) @@ -47,7 +48,7 @@ def _is_valid_group_id(self, operation_id, default_publishing_base_url): except Exception: raise ValueError('Not a valid Group ID on the target CKAN Site') response_dict = json.loads(response.read()) - if not response_dict['success']: + if not response_dict['success']: raise ValueError('Not a valid Group ID on the target CKAN Site') return operation_id From d90eb63ee6a383e4b6eaf44cc86c4cc021b13b76 Mon Sep 17 00:00:00 2001 From: Gursimran Kaur Date: Mon, 12 Apr 2021 22:44:09 +0530 Subject: [PATCH 4/6] fixed last --- mapactionpy_controller/event.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapactionpy_controller/event.py b/mapactionpy_controller/event.py index d7f38fd..6f9e2c8 100644 --- a/mapactionpy_controller/event.py +++ b/mapactionpy_controller/event.py @@ -38,7 +38,7 @@ def __init__(self, event_file): self.default_disclaimer_text = event_def['default_disclaimer_text'] self.default_donor_credits = event_def['default_donor_credits'] # self.donors = event_def['donors'] - self.country_name = _parse_country_name(event_def) + self.country_name = _parse_country_name(event_def) def _is_valid_group_id(self, operation_id, default_publishing_base_url): # Check if valid group number then return From 76445e182f1d0134030d28965e9ba3b4320f15b7 Mon Sep 17 00:00:00 2001 From: Gursimran Kaur Date: Fri, 16 Apr 2021 00:06:59 +0530 Subject: [PATCH 5/6] changes --- mapactionpy_controller/event.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mapactionpy_controller/event.py b/mapactionpy_controller/event.py index 6f9e2c8..f26a4f8 100644 --- a/mapactionpy_controller/event.py +++ b/mapactionpy_controller/event.py @@ -45,11 +45,12 @@ def _is_valid_group_id(self, operation_id, default_publishing_base_url): url = default_publishing_base_url + '/api/3/action/group_show?id={}'.format(operation_id) try: response = urllib.request.urlopen(url) - except Exception: - raise ValueError('Not a valid Group ID on the target CKAN Site') - response_dict = json.loads(response.read()) + response_dict = json.loads(response.read()) if not response_dict['success']: raise ValueError('Not a valid Group ID on the target CKAN Site') + except Exception: + raise ValueError('Not a valid Group ID on the target CKAN Site') + return operation_id From 90253312ed95a5fd1f098225c29ffc5cf1d4e355 Mon Sep 17 00:00:00 2001 From: Simran Date: Thu, 15 Apr 2021 19:43:47 +0000 Subject: [PATCH 6/6] fix url error --- mapactionpy_controller/event.py | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/mapactionpy_controller/event.py b/mapactionpy_controller/event.py index f26a4f8..ee95c0e 100644 --- a/mapactionpy_controller/event.py +++ b/mapactionpy_controller/event.py @@ -1,5 +1,6 @@ import json import urllib +import urllib.error import os import pycountry from mapactionpy_controller import _get_validator_for_config_schema @@ -33,25 +34,29 @@ def __init__(self, event_file): self.default_source_organisation_url = event_def['default_source_organisation_url'] self.default_publishing_base_url = event_def['default_publishing_base_url'] op_id = (event_def['operation_id']).lower() - self.operation_id = self._is_valid_group_id(op_id, self.default_publishing_base_url) + self.operation_id = _is_valid_group_id(op_id, self.default_publishing_base_url) self.deployment_primary_email = event_def['deployment_primary_email'] self.default_disclaimer_text = event_def['default_disclaimer_text'] self.default_donor_credits = event_def['default_donor_credits'] # self.donors = event_def['donors'] self.country_name = _parse_country_name(event_def) - def _is_valid_group_id(self, operation_id, default_publishing_base_url): - # Check if valid group number then return - url = default_publishing_base_url + '/api/3/action/group_show?id={}'.format(operation_id) - try: - response = urllib.request.urlopen(url) - response_dict = json.loads(response.read()) - if not response_dict['success']: - raise ValueError('Not a valid Group ID on the target CKAN Site') - except Exception: - raise ValueError('Not a valid Group ID on the target CKAN Site') - - return operation_id + +def _is_valid_group_id(operation_id, default_publishing_base_url): + # Check if valid group number then return + url = default_publishing_base_url + '/api/3/action/group_show?id={}'.format(operation_id) + try: + response = urllib.request.urlopen(url) + assert response.code == 200 + except urllib.error.HTTPError as e: + print(e.code) + raise ValueError('Not a valid URL, error = {}'.format(e.code)) + response_dict = json.loads(response.read()) + if response_dict['success'] == True: + print("Success") + else: + raise ValueError('Not a valid Group ID on the target CKAN Site') + return operation_id def _parse_country_name(event_def):