diff --git a/mapactionpy_controller/event.py b/mapactionpy_controller/event.py index fe55c46..ee95c0e 100644 --- a/mapactionpy_controller/event.py +++ b/mapactionpy_controller/event.py @@ -1,4 +1,6 @@ import json +import urllib +import urllib.error import os import pycountry from mapactionpy_controller import _get_validator_for_config_schema @@ -27,10 +29,12 @@ 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'] + op_id = (event_def['operation_id']).lower() + 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'] @@ -38,6 +42,23 @@ def __init__(self, event_file): self.country_name = _parse_country_name(event_def) +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): """ Checks the optional `country_name` value of the event description file and set the cooresponsing