Esempio n. 1
0
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
Esempio n. 2
0
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)
Esempio n. 4
0
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,
Esempio n. 5
0
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)