Exemplo n.º 1
0
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')
Exemplo n.º 2
0
 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 :::::::::')
Exemplo n.º 3
0
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()
Exemplo n.º 4
0
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