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'))
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 } }])
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}}])
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
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
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
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)
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
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