示例#1
0
    def get(self, field, language, state='active'):
        '''Return a translation for the given pair (field, language).
        '''
        assert isinstance(field, Field)
        verifyObject(IFieldContext, field.context)

        key = type(self)._key(field)
        language = check_language(language)

        # Lookup for a translation on this key
        
        cond = dict(
            package_id = self._package_id,
            source_language = self._source_language,
            key = key,
            language = language)
        if state and (state != '*'):
            cond['state'] = state
        r1, value = None, None
        q = model.Session.query(ext_model.PackageTranslation).filter_by(**cond)
        try:
            r1 = q.one()
        except orm.exc.NoResultFound as ex:
            pass
        else:
            value = r1.value
        
        if value:
            return field.bind(FieldContext(key=field.context.key, value=value))
        return None
示例#2
0
    def discard(self, field=None, language=None):
        '''Discard existing translations.
        '''
        
        cond = dict(
            package_id = self._package_id,
            source_language = self._source_language,
        )

        if field:
            assert isinstance(field, Field)
            verifyObject(IFieldContext, field.context)
            key = type(self)._key(field)
            cond['key'] = key
        
        if language:
            language = check_language(language)
            cond['language'] = str(language)
        
        q = model.Session.query(ext_model.PackageTranslation).filter_by(**cond)
        n = q.delete()

        if not self._defer_commit:
            model.Session.commit()
        return n
def _target_language(data_dict):
    lang = data_dict.get('translate_to_language')
    if not lang:
        lang = pylons.i18n.get_lang()
        lang = lang[0] if lang else 'en'
    else:
        try:
            lang = check_language(lang)
        except ValueError:
            msg = 'Unknown target language (%s)' % (lang)
            raise Invalid({'translate_to_language': msg}) 
    return lang
示例#4
0
def _target_language(data_dict):
    lang = data_dict.get('translate_to_language')
    if not lang:
        lang = pylons.i18n.get_lang()
        lang = lang[0] if lang else 'en'
    else:
        try:
            lang = check_language(lang)
        except ValueError:
            msg = 'Unknown target language (%s)' % (lang)
            raise Invalid({'translate_to_language': msg})
    return lang
 def get(self, field, language, state='active'):
     '''Return a translation for the given pair (field, language).
     '''
     assert isinstance(field, Field)
     verifyObject(IFieldContext, field.context)
     
     key = type(self)._key(field)
     language = check_language(language)
     
     # Todo: Lookup for this term
     
     raise NotImplementedError('Todo')
    def get(self, field, language, state='active'):
        '''Return a translation for the given pair (field, language).
        '''
        assert isinstance(field, Field)
        verifyObject(IFieldContext, field.context)

        key = type(self)._key(field)
        language = check_language(language)

        # Todo: Lookup for this term

        raise NotImplementedError('Todo')
    def discard(self, field=None, language=None):
        '''Discard existing translations.
        '''
        
        if field:
            assert isinstance(field, Field)
            verifyObject(IFieldContext, field.context)
            key = type(self)._key(field)
        
        if language:
            language = check_language(language)

        # Todo
        
        raise NotImplementedError('Todo')
    def discard(self, field=None, language=None):
        '''Discard existing translations.
        '''

        if field:
            assert isinstance(field, Field)
            verifyObject(IFieldContext, field.context)
            key = type(self)._key(field)

        if language:
            language = check_language(language)

        # Todo

        raise NotImplementedError('Todo')
 def translate(self, field, language, value, state='active'):
     '''Add or update translation for a given pair (field, language).
     '''
     assert isinstance(field, Field)
     verifyObject(IFieldContext, field.context)
     
     key = type(self)._key(field)
     language = check_language(language)
     
     value = unicode(value)
     if not value:
         raise ValueError('value: Missing')
     
     # Todo: Add/Update this term
     
     raise NotImplementedError('Todo')
    def translate(self, field, language, value, state='active'):
        '''Add or update translation for a given pair (field, language).
        '''
        assert isinstance(field, Field)
        verifyObject(IFieldContext, field.context)

        key = type(self)._key(field)
        language = check_language(language)

        value = unicode(value)
        if not value:
            raise ValueError('value: Missing')

        # Todo: Add/Update this term

        raise NotImplementedError('Todo')
示例#11
0
 def iter_fields(self, language, state='active'):
     '''Iterate on field translations for a given language.
    
     Generate tuples of (<state>, <bound-field>)
     ''' 
     
     cond = {
         'package_id': self._package_id, 
         'source_language': self._source_language,
         'language': check_language(language),
     }
     if state and (state != '*'):
         cond['state'] = state 
     
     uf = TextField()       
     q = model.Session.query(ext_model.PackageTranslation).filter_by(**cond)
     for r in q.all():
         yield r.state, uf.bind(FieldContext(key=r.key, value=r.value))
示例#12
0
 def __init__(self, package, source_language=None):
     
     if isinstance(package, dict):
         package_id = str(package['id'])
     else:
         package_id = str(package)
     package_id = check_uuid(package_id)
     if not package_id:
         raise ValueError('package: Expected a UUID identifier')
     self._package_id = package_id
     
     if not source_language and isinstance(package, dict): 
         source_language = package.get('language')
     if not source_language:
         source_language = pylons.config['ckan.locale_default']
         log1.info('package %s: source-language is missing and cannot be deduced' % (
             package_id))
     self._source_language = check_language(source_language)
     
     self._defer_commit = False
示例#13
0
    def translate(self, field, language, value, state='active'):
        '''Add or update translation for a given pair (field, language).
        '''
        assert isinstance(field, Field)
        verifyObject(IFieldContext, field.context)
        
        key = type(self)._key(field)
        language = check_language(language)

        value = unicode(value)
        if not value:
            raise ValueError('value: Missing')
        
        # Insert or update a translation

        cond = dict(
            package_id = self._package_id,
            source_language = self._source_language,
            key = key,
            language = language)
        q = model.Session.query(ext_model.PackageTranslation).filter_by(**cond)
        r1 = None
        try:
            r1 = q.one()
        except orm.exc.NoResultFound as ex:
            # Insert
            r1 = ext_model.PackageTranslation(**cond)
            model.Session.add(r1)
        
        r1.value = value
        r1.state = state
        
        if not self._defer_commit:
            model.Session.commit()
        
        return field.bind(FieldContext(key=field.context.key, value=value))