def update_extra_package_multilang(extra, pkg_id, field, lang, field_type='extra'): try: from ckanext.multilang.model import PackageMultilang except ImportError: log.warn('DCAT-AP_IT: multilang extension not available.') return if extra.get('key') == field.get('name', None) and field.get( 'localized', False) == True: log.debug(':::::::::::::::Localizing schema field: %r', field['name']) f = PackageMultilang.get(pkg_id, field['name'], lang, field_type) if f: if extra.get('value') == '': f.purge() elif f.text != extra.get('value'): # Update the localized field value for the current language f.text = extra.get('value') f.save() log.info('Localized field updated successfully') elif extra.get('value') != '': # Create the localized field record save_extra_package_multilang( { 'id': pkg_id, 'text': extra.get('value'), 'field': extra.get('key') }, lang, 'extra')
def persist_package_multilang_field(self, package_id, field_name, text, locale, field_type): record = PackageMultilang.get(package_id, field_name, locale, field_type) if record: log.info('::::::::: Updating the localized {0} package field in the package_multilang table :::::::::'.format(field_name)) record.text = text record.save() log.info('::::::::: PACKAGE MULTILANG FIELD UPDATED SUCCESSFULLY :::::::::') else: log.info('::::::::: Adding new localized {0} package field in the package_multilang table :::::::::'.format(field_name)) PackageMultilang.persist({'id': package_id, 'text': text, 'field': field_name}, locale, field_type) log.info('::::::::: PACKAGE MULTILANG FIELD PERSISTED SUCCESSFULLY :::::::::')
def upsert_package_multilang(pkg_id, field_name, field_type, lang, text): try: from ckanext.multilang.model import PackageMultilang except ImportError: log.warn('DCAT-AP_IT: multilang extension not available.') return pml = PackageMultilang.get(pkg_id, field_name, lang, field_type) if not pml and text: PackageMultilang.persist({'id':pkg_id, 'field':field_name, 'text':text}, lang, field_type) elif pml and not text: pml.purge() elif pml and not pml.text == text: pml.text = text pml.save()
def get_localized_field_value(field=None, pkg_id=None, field_type='extra'): try: from ckanext.multilang.model import PackageMultilang except ImportError: log.warn('DCAT-AP_IT: multilang extension not available.') return if field and pkg_id: lang = get_language() if lang: localized_value = PackageMultilang.get(pkg_id, field, lang, field_type) if localized_value: return localized_value.text else: return None else: return None else: return None