def transform_function(self): if isinstance(self.final_field, TranslatedField): # If its a partial, it must have had a transformer applied - leave it alone! if isinstance(self.transform_function_func, functools.partial): return self.transform_function_func name = get_current_language() # Cloned in from django def transform(field, alias, *, name, previous): try: wrapped = previous(field, alias) return self.try_transform(wrapped, name) except FieldError: # TODO: figure out how to handle this case as we don't have # final_field or last_field_exception # FieldError is raised if the transform doesn't exist. # if isinstance(final_field, Field) and last_field_exception: # raise last_field_exception # else: # raise raise # ------------------- return functools.partial(transform, name=name, previous=self.transform_function_func) return self.transform_function_func
def __html__(self) -> str: # Add leading [lang] wrapped in a span text = self if not self.is_fallback: return text elif not self.fallback_language: return "??" else: current_lang = get_current_language() lang = self.fallback_language return f"""
def get_fallback_text(cls, content): """Default fallback function that returns an error message""" language = get_current_language() lang_name = language.display_name(language) lang_en_name = language.display_name() return language, content.get( language.language, _( "No translation of this field available in %(lang_name)s" " [%(lang_en_name)s]." ) % { "lang_name": lang_name, "lang_en_name": lang_en_name, }, )
def resolve_expression(self, query=None, allow_joins=True, reuse=None, summarize=False, for_save=False): rhs = super().resolve_expression(query, allow_joins, reuse, summarize, for_save) if isinstance(rhs.field, TranslatedField): field_list = self.name.split("__") # TODO: should this always lookup lang if len(field_list) == 1: # Lookup current lang for one field field_list.extend([get_current_language()]) for name in field_list[1:]: # Perform key lookups along path rhs = KeyTextTransform(name, rhs) return rhs
def __init__(self, lhs, *args, **kwargs): tlhs = json.KeyTransform( str(get_current_language()), lhs, ) super().__init__(tlhs, *args, **kwargs)
def __init__(self, expression, string, **extra): lang = str(get_current_language()) expression = KeyTextTransform(lang, expression) super().__init__(expression, string, **extra)
def __init__(self, *args, **kwargs): super().__init__(get_current_language(), *args, **kwargs)