Skip to content

Commit

Permalink
Merge 8b82267 into b8e9f42
Browse files Browse the repository at this point in the history
  • Loading branch information
kindly committed Mar 9, 2020
2 parents b8e9f42 + 8b82267 commit d261efc
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 3 deletions.
15 changes: 12 additions & 3 deletions ocdskit/oc4ids.py
Expand Up @@ -9,6 +9,7 @@
from ocdsmerge.util import sorted_releases

from ocdskit.combine import merge
from ocdskit.util import is_package

logger = logging.getLogger("ocdskit")

Expand All @@ -29,7 +30,7 @@ def cast_number_or_zero(item):
""" Cast to decimal if fail return 0 so summing still works."""
try:
return decimal.Decimal(item)
except ValueError:
except (ValueError, TypeError):
if item:
logger.warn("item {} is not a number treating as zero".format(item))
return 0
Expand Down Expand Up @@ -85,7 +86,15 @@ def _run_transforms(releases, project_id=None, records=None, output=None, transf

class InitialTransformState:
def __init__(self, releases, project_id=None, records=None, output=None):
self.releases = sorted_releases(releases)

all_releases = []
for release in releases:
if is_package(release):
all_releases.extend(check_type(release.get("releases"), list))
else:
all_releases.append(release)

self.releases = sorted_releases(all_releases)
self.releases_by_ocid = defaultdict(list)
for release in self.releases:
ocid = cast_string(release.get("ocid"))
Expand All @@ -96,7 +105,7 @@ def __init__(self, releases, project_id=None, records=None, output=None):
records = records

if not records:
record_package = next(merge(self.releases, return_package=True, use_linked_releases=True))
record_package = next(merge(releases, return_package=True, use_linked_releases=True))
records = check_type(record_package.get("records"), list)

compiled_releases = []
Expand Down
32 changes: 32 additions & 0 deletions tests/test_oc4ids_transforms.py
Expand Up @@ -26,6 +26,38 @@ def test_run_all():
assert output["parties"] == releases[0]["parties"]


def test_run_all_release_package():
releases_package_1 = [
{
"ocid": "ocds-213czf-1",
"id": "1",
"tag": "planning",
"date": "2001-02-03T04:05:06Z",
"parties": [{"id": "1", "roles": ["publicAuthority"]}],
}
]
releases_package_2 = [
{
"ocid": "ocds-213czf-2",
"id": "1",
"tag": "planning",
"date": "2001-02-03T04:05:06Z",
"parties": [{"id": "2", "name": "a", "roles": ["publicAuthority"]}],
}
]

release_packages = [{"uri": "example.com", "releases": releases_package_1},
{"uri": "example.com", "releases": releases_package_2}]

output = oc4ids.run_transforms({}, release_packages, "1")

assert len(output["contractingProcesses"]) == 2
assert len(output["parties"]) == 2
assert output["contractingProcesses"][0]['releases'] == [
{'url': 'example.com#1', 'date': '2001-02-03T04:05:06Z', 'tag': 'planning'}
]


def test_public_authority_role():
releases = [
{
Expand Down

0 comments on commit d261efc

Please sign in to comment.