• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python utils.build_localized_fieldname函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中modeltranslation.utils.build_localized_fieldname函数的典型用法代码示例。如果您正苦于以下问题:Python build_localized_fieldname函数的具体用法?Python build_localized_fieldname怎么用?Python build_localized_fieldname使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了build_localized_fieldname函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: modeltranslation_update_slugs

    def modeltranslation_update_slugs(sender, **kwargs):
        # https://bitbucket.org/neithere/django-autoslug/pull-request/11/modeltranslation-support-fix-issue-19/
        # http://django-modeltranslation.readthedocs.org
        #
        # TODO: tests
        #
        if not modeltranslation_utils:
            return

        instance = kwargs['instance']
        slugs = {}

        for field in instance._meta.fields:
            if type(field) == AutoSlugField:
                for lang in settings.LANGUAGES:
                    lang_code = lang[0]
                    lang_code = lang_code.replace('-', '_')

                    populate_from_localized = modeltranslation_utils.build_localized_fieldname(field.populate_from, lang_code)
                    populate_from_value = getattr(instance, populate_from_localized)

                    field_name_localized = modeltranslation_utils.build_localized_fieldname(field.name, lang_code)
                    field_value = getattr(instance, field_name_localized)

                    if not field_value or field.always_update:
                        slug = field.slugify(populate_from_value)
                        slugs[field_name_localized] = slug

        sender.objects.filter(pk=instance.pk).update(**slugs)
开发者ID:bahaddinyasar,项目名称:django-autoslugfield,代码行数:29,代码来源:fields.py


示例2: _patch_prepopulated_fields

 def _patch_prepopulated_fields(self):
     if self.prepopulated_fields:
         # prepopulated_fields_new = dict(self.prepopulated_fields)
         # for (k, v) in self.prepopulated_fields.items():
         #     if v[0] in self.trans_opts.fields:
         #         translation_fields = get_translation_fields(v[0])
         #         prepopulated_fields_new[k] = tuple([translation_fields[0]])
         prepopulated_fields_new = {}
         for (k, v) in self.prepopulated_fields.items():
             if k in self.trans_opts.fields:
                 translation_fields = [(l, build_localized_fieldname(k, l)) for l in AVAILABLE_LANGUAGES]
                 new_keys = tuple(translation_fields)
             else:
                 new_keys = ((None, k),)
             for lang, new_key in new_keys:
                 languages = AVAILABLE_LANGUAGES
                 if lang:
                     languages = [lang]
                 new_vals = []
                 for val in v:
                     if val in self.trans_opts.fields:
                         translation_fields = [build_localized_fieldname(val, l) for l in languages]
                         new_vals.extend(translation_fields)
                     else:
                         new_vals.append(val)
                 new_vals = tuple(new_vals)
                 prepopulated_fields_new[new_key] = new_vals
         self.prepopulated_fields = prepopulated_fields_new
开发者ID:chalkchisel,项目名称:django-modeltranslation,代码行数:28,代码来源:admin.py


示例3: test_sitemap_lang_slug

    def test_sitemap_lang_slug(self):
        """Test that the url is in the locale language"""
        site = Site.objects.get_current()
        from modeltranslation.utils import build_localized_fieldname  # pylint: disable=F0401

        kwargs1 = {}
        kwargs2 = {}

        for lang_code, lang_name in settings.LANGUAGES:
            loc_title_var = build_localized_fieldname('title', lang_code)
            loc_slug_var = build_localized_fieldname('slug', lang_code)
            kwargs1[loc_title_var] = 'article-{0}-1'.format(lang_name)
            kwargs2[loc_title_var] = 'other-article-{0}-2'.format(lang_name)
            kwargs1[loc_slug_var] = slugify(kwargs1[loc_title_var])
            kwargs2[loc_slug_var] = slugify(kwargs2[loc_title_var])

        article_class = get_article_class()

        article1 = mommy.make(article_class, publication=BaseArticle.PUBLISHED, **kwargs1)
        article2 = mommy.make(article_class, publication=BaseArticle.PUBLISHED, **kwargs2)

        factory = RequestFactory()
        request = factory.get('/sitemap.xml')
        response = sitemap_view(request, get_sitemaps())
        self.assertEqual(200, response.status_code)

        for (lang, name) in settings.LANGUAGES:
            activate(lang)
            self.assertContains(response, site.domain + article1.get_absolute_url())
            self.assertContains(response, site.domain + article2.get_absolute_url())
开发者ID:ljean,项目名称:coop_cms,代码行数:30,代码来源:test_sitemap.py


示例4: handle

 def handle(self, *args, **options):
     """command"""
     #look for emailing to be sent
     verbose = options.get('verbosity', 1)
     
     if not is_localized():
         print("the site is not localized this is not required")
     
     from modeltranslation.utils import build_localized_fieldname
     
     for alias in Alias.objects.all():
         cursor = connection.cursor()
         
         cursor.execute(
             '''SELECT path, redirect_url FROM coop_cms_alias where id={0}'''.format(alias.id))
         row = cursor.fetchone()
         print(row)
         (path, redirect_url) = row
         
         languages = [x for (x, y) in settings.LANGUAGES]
         
         lang_code = languages[0]
         path_field_name = build_localized_fieldname('path', lang_code)
         redirect_url_field_name = build_localized_fieldname('redirect_url', lang_code)
         if (not getattr(alias, path_field_name)) and (not getattr(alias, redirect_url_field_name)):
             print("update", alias.id, path, redirect_url)
             setattr(alias, path_field_name, path)
             setattr(alias, redirect_url_field_name, redirect_url)
             alias.save()
开发者ID:ljean,项目名称:coop_cms,代码行数:29,代码来源:patch_alias_translation.py


示例5: _new_set_url_path

def _new_set_url_path(self, parent):
    """
    This method override populates url_path for each specified language.
    This way we can get different urls for each language, defined
    by page slug.
    """
    for language in mt_settings.AVAILABLE_LANGUAGES:
        localized_slug_field = build_localized_fieldname('slug', language)
        default_localized_slug_field = build_localized_fieldname('slug', mt_settings.DEFAULT_LANGUAGE)
        localized_url_path_field = build_localized_fieldname('url_path', language)
        default_localized_url_path_field = build_localized_fieldname('url_path', mt_settings.DEFAULT_LANGUAGE)

        if parent:
            parent = parent.specific

            # Emulate the default behavior of django-modeltranslation to get the slug and url path
            # for the current language. If the value for the current language is invalid we get the one
            # for the default fallback language
            slug = getattr(self, localized_slug_field, None) or getattr(self, default_localized_slug_field, self.slug)
            parent_url_path = getattr(parent, localized_url_path_field, None) or \
                              getattr(parent, default_localized_url_path_field, parent.url_path)

            setattr(self, localized_url_path_field, parent_url_path + slug + '/')

        else:
            # a page without a parent is the tree root,
            # which always has a url_path of '/'
            setattr(self, localized_url_path_field, '/')

    # update url_path for children pages
    for child in self.get_children().specific():
        child.set_url_path(self.specific)
        child.save()

    return self.url_path
开发者ID:sinnwerkstatt,项目名称:wagtail-modeltranslation,代码行数:35,代码来源:patch_wagtailadmin.py


示例6: __get__

 def __get__(self, instance, owner):
     """
     Returns value from the translation field for the current language, or
     value for some another language according to fallback languages, or the
     custom fallback value, or field's default value.
     """
     if instance is None:
         return self
     default = NONE
     undefined = self.fallback_undefined
     if undefined is NONE:
         default = self.field.get_default()
         undefined = default
     langs = resolution_order(get_language(), self.fallback_languages)
     for lang in langs:
         loc_field_name = build_localized_fieldname(self.field.name, lang)
         val = getattr(instance, loc_field_name, None)
         if val is not None and val != undefined:
             return val
     if mt_settings.ENABLE_FALLBACKS and self.fallback_value is not NONE:
         return self.fallback_value
     else:
         if default is NONE:
             default = self.field.get_default()
         return default
开发者ID:masterdubs,项目名称:django-modeltranslation,代码行数:25,代码来源:fields.py


示例7: cache_name

 def cache_name(self):
     """
     Used in django 1.x
     """
     lang = get_language()
     cache = build_localized_fieldname(self.accessor, lang)
     return "_%s_cache" % cache
开发者ID:deschler,项目名称:django-modeltranslation,代码行数:7,代码来源:fields.py


示例8: add_localized_fields

def add_localized_fields(model):
    """
    Monkey patches the original model class to provide additional fields for
    every language. Only do that for fields which are defined in the
    translation options of the model.

    Returns a dict mapping the original fieldname to a list containing the
    names of the localized fields created for the original field.
    """
    localized_fields = dict()
    translation_opts = translator.get_options_for_model(model)
    for field_name in translation_opts.fields:
        localized_fields[field_name] = list()
        for l in settings.LANGUAGES:
            # Create a dynamic translation field
            translation_field = create_translation_field(
                model=model, field_name=field_name, lang=l[0])
            # Construct the name for the localized field
            localized_field_name = build_localized_fieldname(field_name, l[0])
            # Check if the model already has a field by that name
            if hasattr(model, localized_field_name):
                raise ValueError(
                    "Error adding translation field. Model '%s' already "
                    "contains a field named '%s'." % (
                        model._meta.object_name, localized_field_name))
            # This approach implements the translation fields as full valid
            # django model fields and therefore adds them via add_to_class
            model.add_to_class(localized_field_name, translation_field)
            localized_fields[field_name].append(localized_field_name)
    return localized_fields
开发者ID:mihaisucan,项目名称:django-modeltranslation,代码行数:30,代码来源:translator.py


示例9: __init__

    def __init__(self, translated_field, language, *args, **kwargs):
        # Update the dict of this field with the content of the original one
        # This might be a bit radical?! Seems to work though...
        self.__dict__.update(translated_field.__dict__)

        # Store the originally wrapped field for later
        self.translated_field = translated_field
        self.language = language

        # Translation are always optional (for now - maybe add some parameters
        # to the translation options for configuring this)

        if not isinstance(self, fields.BooleanField):
            # TODO: Do we really want to enforce null *at all*? Shouldn't this
            # better honour the null setting of the translated field?
            self.null = True
        self.blank = True

        # Adjust the name of this field to reflect the language
        self.attname = build_localized_fieldname(self.translated_field.name, self.language)
        self.name = self.attname

        # Copy the verbose name and append a language suffix
        # (will show up e.g. in the admin).
        self.verbose_name = build_localized_verbose_name(translated_field.verbose_name, language)
开发者ID:upsilonIT,项目名称:canesugar,代码行数:25,代码来源:fields.py


示例10: __get__

 def __get__(self, instance, owner):
     """
     Returns value from the translation field for the current language, or
     value for some another language according to fallback languages, or the
     custom fallback value, or field's default value.
     """
     if instance is None:
         return self
     default = NONE
     undefined = self.fallback_undefined
     if undefined is NONE:
         default = self.field.get_default()
         undefined = default
     langs = resolution_order(get_language(), self.fallback_languages)
     for lang in langs:
         loc_field_name = build_localized_fieldname(self.field.name, lang)
         val = getattr(instance, loc_field_name, None)
         if self.meaningful_value(val, undefined):
             return val
     if mt_settings.ENABLE_FALLBACKS and self.fallback_value is not NONE:
         return self.fallback_value
     else:
         if default is NONE:
             default = self.field.get_default()
         # Some fields like FileField behave strange, as their get_default() doesn't return
         # instance of attr_class, but rather None or ''.
         # Normally this case is handled in the descriptor, but since we have overridden it, we
         # must mock it up.
         if (isinstance(self.field, fields.files.FileField) and
                 not isinstance(default, self.field.attr_class)):
             return self.field.attr_class(instance, self.field, default)
         return default
开发者ID:GDGLima,项目名称:contentbox,代码行数:32,代码来源:fields.py


示例11: get_attname_column

 def get_attname_column(self):
     attname = self.get_attname()
     column = (
         build_localized_fieldname(self.translated_field.db_column or self.translated_field.name, self.language)
         or attname
     )
     return attname, column
开发者ID:benjaoming,项目名称:django-modeltranslation,代码行数:7,代码来源:fields.py


示例12: __init__

 def __init__(self):
     super(Command, self).__init__()
     update_fields = ['url_path']
     for language in mt_settings.AVAILABLE_LANGUAGES:
         localized_url_path = build_localized_fieldname('url_path', language)
         update_fields.append(localized_url_path)
     self.update_fields = update_fields
开发者ID:infoportugal,项目名称:wagtail-modeltranslation,代码行数:7,代码来源:set_translation_url_paths.py


示例13: add_translation_fields

def add_translation_fields(model, opts):
    """
    Monkey patches the original model class to provide additional fields for
    every language.

    Adds newly created translation fields to the given translation options.
    """
    model_empty_values = getattr(opts, 'empty_values', NONE)
    for field_name in opts.local_fields.keys():
        field_empty_value = parse_field(model_empty_values, field_name, NONE)
        for l in mt_settings.AVAILABLE_LANGUAGES:
            # Create a dynamic translation field
            translation_field = create_translation_field(
                model=model, field_name=field_name, lang=l, empty_value=field_empty_value)
            # Construct the name for the localized field
            localized_field_name = build_localized_fieldname(field_name, l)
            # Check if the model already has a field by that name
            if hasattr(model, localized_field_name):
                raise ValueError(
                    "Error adding translation field. Model '%s' already contains a field named"
                    "'%s'." % (model._meta.object_name, localized_field_name))
            # This approach implements the translation fields as full valid
            # django model fields and therefore adds them via add_to_class
            model.add_to_class(localized_field_name, translation_field)
            opts.add_translation_field(field_name, translation_field)

    # Rebuild information about parents fields. If there are opts.local_fields, field cache would be
    # invalidated (by model._meta.add_field() function). Otherwise, we need to do it manually.
    if len(opts.local_fields) == 0:
        model._meta._fill_fields_cache()
开发者ID:Kniyl,项目名称:django-modeltranslation,代码行数:30,代码来源:translator.py


示例14: __init__

    def __init__(self, translated_field, language, *args, **kwargs):
        # Store the originally wrapped field for later
        self.translated_field = translated_field
        self.language = language
        
        # Update the dict of this field with the content of the original one
        # This might be a bit radical?! Seems to work though...
        self.__dict__.update(translated_field.__dict__)        
        
        # Translation are always optional (for now - maybe add some parameters
        # to the translation options for configuring this)
        self.null = True
        self.blank = True

        # If translations are optional, uniqueness can't be enforced
        self._unique = False
        
        # Adjust the name of this field to reflect the language
        self.attname = build_localized_fieldname(translated_field.name, language)
        self.name = self.attname
        
        # Copy the verbose name and append a language suffix (will e.g. in the
        # admin). This might be a proxy function so we have to check that here.
        if hasattr(translated_field.verbose_name, '_proxy____unicode_cast'):            
            verbose_name = translated_field.verbose_name._proxy____unicode_cast()
        else:
            verbose_name = translated_field.verbose_name                       
        self.verbose_name = '%s [%s]' % (verbose_name, language)
开发者ID:dantium,项目名称:django-modeltranslation,代码行数:28,代码来源:fields.py


示例15: rewrite_lookup_key

def rewrite_lookup_key(model, lookup_key):
    translatable_fields = get_translatable_fields_for_model(model)
    if translatable_fields is not None:
        pieces = lookup_key.split('__')
        # If we are doing a lookup on a translatable field,
        # we want to rewrite it to the actual field name
        # For example, we want to rewrite "name__startswith" to "name_fr__startswith"
        if pieces[0] in translatable_fields:
            lookup_key = build_localized_fieldname(pieces[0], get_language())

            remaining_lookup = '__'.join(pieces[1:])
            if remaining_lookup:
                lookup_key = '%s__%s' % (lookup_key, remaining_lookup)

    pieces = lookup_key.split('__')
    if len(pieces) > 1:
        # Check if we are doing a lookup to a related trans model
        fields_to_trans_models = get_fields_to_translatable_models(model)
        for field_to_trans, transmodel in fields_to_trans_models:
            if pieces[0] == field_to_trans:
                sub_lookup = '__'.join(pieces[1:])
                if sub_lookup:
                    sub_lookup = rewrite_lookup_key(transmodel, sub_lookup)
                    lookup_key = '%s__%s' % (pieces[0], sub_lookup)
                break

    return lookup_key
开发者ID:pigletto,项目名称:django-modeltranslation,代码行数:27,代码来源:manager.py


示例16: get_attname_column

 def get_attname_column(self):
     attname = self.get_attname()
     if self.translated_field.db_column:
         column = build_localized_fieldname(self.translated_field.db_column)
     else:
         column = attname
     return attname, column
开发者ID:20tab,项目名称:django-modeltranslation,代码行数:7,代码来源:fields.py


示例17: _validate_slugs

def _validate_slugs(page):
    """
    Determine whether the given slug is available for use on a child page of
    parent_page.
    """
    parent_page = page.get_parent()

    if parent_page is None:
        # the root page's slug can be whatever it likes...
        return {}

    # Save the current active language
    current_language = get_language()

    siblings = page.get_siblings(inclusive=False).specific()

    errors = {}

    for language in mt_settings.AVAILABLE_LANGUAGES:
        # Temporarily activate every language because even though there might
        # be no repeated value for slug_pt the fallback of an empty slug could
        # already be in use

        trans_real.activate(language)

        siblings_slugs = [sibling.slug for sibling in siblings]

        if page.specific.slug in siblings_slugs:
            errors[build_localized_fieldname('slug', language)] = _("This slug is already in use")

    # Re-enable the original language
    trans_real.activate(current_language)

    return errors
开发者ID:sinnwerkstatt,项目名称:wagtail-modeltranslation,代码行数:34,代码来源:patch_wagtailadmin.py


示例18: save

 def save(self):
     """
     Save each of the settings to the DB.
     """
     active_language = get_language()
     for (name, value) in self.cleaned_data.items():
         if name not in registry:
             name, code = name.rsplit('_modeltranslation_', 1)
         else:
             code = None
         setting_obj, created = Setting.objects.get_or_create(name=name)
         if settings.USE_MODELTRANSLATION:
             if registry[name]["translatable"]:
                 try:
                     activate(code)
                 except:
                     pass
                 finally:
                     setting_obj.value = value
                     activate(active_language)
             else:
                 # Duplicate the value of the setting for every language
                 for code in OrderedDict(settings.LANGUAGES):
                     setattr(setting_obj,
                             build_localized_fieldname('value', code),
                             value)
         else:
             setting_obj.value = value
         setting_obj.save()
开发者ID:Anlim,项目名称:mezzanine,代码行数:29,代码来源:forms.py


示例19: _patch_simple_panel

    def _patch_simple_panel(self, model, original_panel):
        panel_class = original_panel.__class__
        translated_panels = []
        translation_registered_fields = translator.get_options_for_model(model).fields

        # If the panel field is not registered for translation
        # the original one is returned
        if original_panel.field_name not in translation_registered_fields:
            return [original_panel]

        for language in mt_settings.AVAILABLE_LANGUAGES:
            original_field = model._meta.get_field(original_panel.field_name)
            localized_field_name = build_localized_fieldname(original_panel.field_name, language)

            # if the original field is required and the current language is the default one
            # this field's blank property is set to False
            if not original_field.blank and language == mt_settings.DEFAULT_LANGUAGE:
                localized_field = model._meta.get_field(localized_field_name)
                localized_field.blank = False

            localized_panel = panel_class(localized_field_name)

            # Pass the original panel extra attributes to the localized
            if hasattr(original_panel, 'classname'):
                localized_panel.classname = original_panel.classname
            if hasattr(original_panel, 'widget'):
                localized_panel.widget = original_panel.widget

            translated_panels.append(localized_panel)

        return translated_panels
开发者ID:sinnwerkstatt,项目名称:wagtail-modeltranslation,代码行数:31,代码来源:patch_wagtailadmin.py


示例20: __set__

 def __set__(self, instance, value):
     lang = get_language()
     loc_field_name = build_localized_fieldname(self.name, lang)
     # also update the translation field of the current language
     setattr(instance, loc_field_name, value)
     # update the original field via the __dict__ to prevent calling the
     # descriptor
     instance.__dict__[self.name] = value
开发者ID:umdsp,项目名称:romeu,代码行数:8,代码来源:fields.py



注:本文中的modeltranslation.utils.build_localized_fieldname函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python utils.get_language函数代码示例发布时间:2022-05-27
下一篇:
Python translator.register函数代码示例发布时间:2022-05-27
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap