def prepare_record(releases, ocid): if not isinstance(releases, list): releases = [releases] record = { 'releases': releases, 'compiledRelease': ocdsmerge.merge(releases), 'versionedRelease': ocdsmerge.merge_versioned(releases), 'ocid': ocid, } return record
def mergeReleases(releases): record = {} # TODO: Clarify what to do about packages, publishedData, # and uri fields for the record. record['compiledRelease'] = ocdsmerge.merge(releases) record['versionedRelease'] = ocdsmerge.merge_versioned(releases) record['releases'] = releases if 'publisher' in releases[0]: record['publisher'] = releases[0]['publisher'] elif 'packageInfo' in releases[0]: record['publisher'] = releases[0]['packageInfo']['publisher'] return record
def process_ocid(self, ocid): releases = [] with self.database.get_engine().begin() as engine: query = engine.execute(sa.text( " SELECT DISTINCT release.* FROM release " + " JOIN collection_file_item ON collection_file_item.id = release.collection_file_item_id " + " JOIN collection_file ON collection_file.id = collection_file_item.collection_file_id " + " WHERE collection_file.collection_id = :collection_id AND release.ocid = :ocid " ), collection_id=self.source_collection. database_id, ocid=ocid) for row in query: releases.append(self.database.get_data(row['data_id'])) compiledRelease = ocdsmerge.merge(releases) versionedRelease = ocdsmerge.merge_versioned(releases) out = { 'ocid': ocid, 'releases': releases, 'compiledRelease': compiledRelease, 'versionedRelease': versionedRelease } recordDataId = self.get_record_data_by_ocid(ocid) if recordDataId is not None: with self.database.get_engine().begin() as engine: query = engine.execute( sa.text(" UPDATE data " + " SET data = :data" + " WHERE id = :data_id "), data=json.dumps(out), data_id=recordDataId) else: self.store.store_file_item(ocid + '.json', None, 'record', out, 1)
for fname in sorted(os.listdir(".")): if fname.endswith('json'): with open(fname, 'r') as jsonfile: package = json.load(jsonfile, object_pairs_hook=OrderedDict) for release in package['releases']: packages.append(package['uri'] + '#' + release['id']) releases.append({ 'url': package['uri'] + '#' + release['id'], 'date': release['date'], 'tag': release['tag'] }) release_list.append(release) compiled_release = ocdsmerge.merge(release_list) versioned_release = ocdsmerge.merge_versioned(release_list) with open("merged.json", 'w') as f: json.dump( { 'uri': 'http://standard.open-contracting.org/examples/records/ocds-213czf-000-00002-merge.json', 'packages': packages, 'publisher': package['publisher'], 'publishedDate': '2016-03-05T13:02:00Z', 'records': [{ 'ocid': 'ocds-213czf-000-00002', 'releases': releases,
for fname in sorted(os.listdir(".")): if fname.endswith('json'): with open(fname, 'r') as jsonfile: package = json.load(jsonfile, object_pairs_hook=OrderedDict) for release in package['releases']: packages.append( package['uri'] + '#' + release['id']) releases.append({ 'url': package['uri'] + '#' + release['id'], 'date': release['date'], 'tag': release['tag'] }) release_list.append(release) compiled_release = ocdsmerge.merge(release_list) versioned_release = ocdsmerge.merge_versioned(release_list) with open("merged.json", 'w') as f: json.dump({ 'uri': 'http://standard.open-contracting.org/examples/records/ocds-213czf-000-00002-merge.json', 'packages': packages, 'publisher': package['publisher'], 'publishedDate': '2016-03-05T13:02:00Z', 'records': [{ 'ocid': 'ocds-213czf-000-00002', 'releases': releases, 'compiledRelease': compiled_release, }] }, f, indent=3, sort_keys=True) with open("versioned.json", 'w') as f:
def compile_releases(releases, versioned=False): return ocdsmerge.merge(releases) if not versioned\ else ocdsmerge.merge_versioned(releases)