示例#1
0
    def license_id(self, dataset):
        '''Add license ID to every resource'''
        resources = dataset['resources']
        license_id_data = dataset['license_id']

        if not license_id_data:
            util.log_error(dataset, "No license_id")
            return

        # key == OGD value and value == DCAT URI
        if license_id_data in self.license_mapping.keys():
            # OGD value is present. Map it accordingly.
            license_id_dcat = self.license_mapping[license_id_data]
            dataset['license_id'] = license_id_dcat
        elif license_id_data not in self.license_mapping.values():
            # Invalid value, neither OGD nor DCAT
            util.log_error(
                dataset, u"license_id '" + unicode(license_id_data) +
                u"' not part of the mapping")
            return

        # At this point, a valid DCAT license is present in dataset['license_id'].

        if resources is not None:
            for resource in resources:
                if '__extras' not in resource:
                    resource['__extras'] = dict()

                resource['__extras'][u'license'] = dataset['license_id']
    def license_id(self, dataset):
        '''Add license ID to every resource'''
        resources = dataset['resources']
        license_id_data = dataset['license_id']

        if not license_id_data:
            util.log_error(dataset, "No license_id")
            return

        if license_id_data not in self.license_mapping.keys():
            if license_id_data not in self.license_mapping.values():
                util.log_error(
                    dataset, u"license_id '" + unicode(license_id_data) +
                    u"' not part of the mapping")
            return

        license_id_dcat = self.license_mapping[license_id_data]
        dataset[u'license_id'] = license_id_dcat

        if resources is not None:
            for resource in resources:
                if '__extras' not in resource:
                    resource['__extras'] = dict()

                resource['__extras'][u'license'] = license_id_dcat
示例#3
0
    def geographical_granularity(self, dataset):
        '''geographical_granularity -> politicalGeocodingLevelUri'''
        valid_values = {
            'bund': 'federal',
            'land': 'state',
            'kommune': 'municipality',
            'stadt': 'municipality',

            # DCAT values (without URI part) stay the same
            'federal': 'federal',
            'state': 'state',
            'municipality': 'municipality',

            # Additional non-OGD value
            'kreis': 'administrativeDistrict'
        }

        geo_level = ds_utils.get_extras_field(dataset,
                                              'geographical_granularity')
        target_field = ds_utils.get_extras_field(
            dataset, u'politicalGeocodingLevelURI')

        # only add if the field hasn't been migrated before
        if target_field is None:
            if geo_level is not None:
                geo_level_value = geo_level['value'].lower()

                if geo_level_value in valid_values:
                    geo_level_value = (
                        'http://dcat-ap.de/def/politicalGeocoding/Level/' +
                        valid_values.get(geo_level_value))
                else:
                    util.log_error(
                        dataset, 'INVALID: politicalGeocodingLevelURI: ' +
                        geo_level_value)

                geo_level['value'] = geo_level_value

                util.rename_extras_field_migration(
                    dataset, u'geographical_granularity',
                    u'politicalGeocodingLevelURI', False)
示例#4
0
    def groups(self, dataset):
        if 'groups' in dataset:
            for group_name in [n['name'] for n in dataset['groups']
                               ]:  # iterate list of groupnames
                if group_name in self.category_mapping.keys():
                    themes = self.category_mapping[group_name]

                    # remove old group_name
                    util.delete_group(dataset, group_name)

                    # transform single strings to lists with one argument
                    if isinstance(themes, basestring):
                        themes = [themes]

                    if themes is not None:
                        for theme in themes:
                            dataset['groups'].append({
                                'id': theme,
                                'name': theme
                            })
                elif group_name not in self.new_groups:
                    util.log_error(
                        dataset, u'INVALID: non-OGD-Category found: ' +
                        unicode(group_name))