Пример #1
0
    def after_create(self, context, pkg_dict):
        # During the harvest the get_lang() is not defined
        lang = interfaces.get_language()
        otype = pkg_dict.get('type')

        if lang and otype == 'dataset':
            for extra in pkg_dict.get('extras'):
                for field in dcatapit_schema.get_custom_package_schema():

                    couples = field.get('couples', [])
                    if couples and len(couples) > 0:
                        for couple in couples:
                            if extra.get('key') == couple.get(
                                    'name', None) and couple.get(
                                        'localized', False) == True:
                                log.debug(
                                    ':::::::::::::::Localizing custom schema field: %r',
                                    couple['name'])
                                # Create the localized field record
                                self.create_loc_field(extra, lang,
                                                      pkg_dict.get('id'))
                    else:
                        if extra.get('key') == field.get(
                                'name', None) and field.get(
                                    'localized', False) == True:
                            log.debug(
                                ':::::::::::::::Localizing custom schema field: %r',
                                field['name'])
                            # Create the localized field record
                            self.create_loc_field(extra, lang,
                                                  pkg_dict.get('id'))
Пример #2
0
def update_creator(pdata):
    if pdata.get('creator'):
        return
    cname = pdata.pop('creator_name', None)
    cident = pdata.pop('creator_identifier', None)

    to_delete = []
    if not (cname and cident):
        for idx, ex in enumerate(pdata.get('extras') or []):
            if ex['key'] == 'creator_name':
                to_delete.append(idx)
                cname = ex['value']
            elif ex['key'] == 'creator_identifier':
                to_delete.append(idx)
                cident = ex['value']
        if to_delete:
            for idx in reversed(to_delete):
                pdata['extras'].pop(idx)

    if (cname or cident):
        lang = interfaces.get_language()
        pdata['creator'] = json.dumps([{
            'creator_identifier': cident,
            'creator_name': {
                lang: cname
            }
        }])
Пример #3
0
def update_creator(pdata):
    # move "creator_name" and "creator_identifier" into a json struct in field "creator"
    # old format foresaw a single creator, new struct allows N creators
    if pdata.get('creator'):
        return
    cname = pdata.pop('creator_name', None)
    cident = pdata.pop('creator_identifier', None)

    to_delete = []
    if not (cname and cident):
        for idx, ex in enumerate(pdata.get('extras') or []):
            if ex['key'] == 'creator_name':
                to_delete.append(idx)
                cname = ex['value']
            elif ex['key'] == 'creator_identifier':
                to_delete.append(idx)
                cident = ex['value']
        if to_delete:
            for idx in reversed(to_delete):
                pdata['extras'].pop(idx)

    if (cname or cident):
        lang = interfaces.get_language()
        pdata['creator'] = json.dumps([{'creator_identifier': cident,
                                        'creator_name': {lang: cname}}])
Пример #4
0
    def dataset_facets(self, facets_dict, package_type):
        lang = interfaces.get_language() or validators.DEFAULT_LANG
        facets_dict['source_catalog_title'] = plugins.toolkit._("Source catalogs")
        facets_dict['organization_region_{}'.format(lang)] = plugins.toolkit._("Organization regions")
        facets_dict['resource_license_{}'.format(lang)] = plugins.toolkit._("Resources licenses")
        facets_dict['dcat_subtheme_{}'.format(lang)] = plugins.toolkit._("Subthemes")

        return facets_dict
Пример #5
0
 def dataset_facets(self, facets_dict, package_type):
     # remove dataset license facet
     facets_dict.pop('license_id', None)
     lang = interfaces.get_language() or validators.DEFAULT_LANG
     facets_dict['resource_license_{}'.format(lang)] = plugins.toolkit._('Resources licenses')
     facets_dict['dcat_theme'] = plugins.toolkit._('Dataset Themes')
     facets_dict['dcat_subtheme_{}'.format(lang)] = plugins.toolkit._('Subthemes')
     return facets_dict
Пример #6
0
    def dataset_facets(self, facets_dict, package_type):

        # remove dataset license facet
        facets_dict.pop('license_id', None)

        lang = interfaces.get_language() or validators.DEFAULT_LANG
        facets_dict['source_catalog_title'] = plugins.toolkit._('Source catalogs')
        facets_dict['organization_region_{}'.format(lang)] = plugins.toolkit._('Organization regions')

        return facets_dict
Пример #7
0
    def after_update(self, context, pkg_dict):
        # During the harvest the get_lang() is not defined
        lang = interfaces.get_language()
        otype = pkg_dict.get('type')

        if lang and otype == 'dataset':             
            for extra in pkg_dict.get('extras'):
                for field in dcatapit_schema.get_custom_package_schema():
                    couples = field.get('couples', [])
                    if couples and len(couples) > 0:
                        for couple in couples:
                            self.update_loc_field(extra, pkg_dict.get('id'), couple, lang)
                    else:
                        self.update_loc_field(extra, pkg_dict.get('id'), field, lang)
Пример #8
0
    def after_search(self, search_results, search_params):
        ## #####################################################################
        # This method moves the dcatapit fields into the extras array (needed for
        # the CKAN harvester).
        # Basically it dynamically reverts what is done by the
        # 'convert_from_extras' to allow harvesting this plugin's custom fields.
        ## #####################################################################
        search_dicts = search_results.get('results', [])

        dcatapit_schema_fields = dcatapit_schema.get_custom_package_schema()

        for _dict in search_dicts:
            _dict_extras = _dict.get('extras', None)

            if not _dict_extras:
                _dict_extras = []
                _dict['extras'] = _dict_extras

            for field in dcatapit_schema_fields:
                field_couple = field.get('couples', [])
                if len(field_couple) > 0:
                    for couple in field_couple:
                        self.manage_extras_for_search(couple, _dict, _dict_extras)
                else:
                    self.manage_extras_for_search(field, _dict, _dict_extras)

            # remove holder info if pkg is local, use org as a source
            # see https://github.com/geosolutions-it/ckanext-dcatapit/pull/213#issuecomment-410668740
            _dict['dataset_is_local'] = helpers.dataset_is_local(_dict['id'])
            if _dict['dataset_is_local']:
                _dict.pop('holder_identifier', None)
                _dict.pop('holder_name', None)
            self._update_pkg_rights_holder(_dict)

        lang = interfaces.get_language()
        facets = search_results['search_facets']
        if 'dcat_theme' in facets:
            themes = facets['dcat_theme']
            for item in themes['items']:
                name = item['name']
                label = interfaces.get_localized_tag_name(tag_name=name, lang=lang)
                item['display_name'] = label

        return search_results
Пример #9
0
 def organization_facets(self, facets_dict, organization_type, package_type):
     lang = interfaces.get_language() or validators.DEFAULT_LANG
     facets_dict['organization_region_{}'.format(lang)] = plugins.toolkit._('Region')
     return facets_dict