def delete(self, lang=None): r""" Delete the translations of the `Context`\ 's `purview` in a language. """ lang = _get_translate_language(lang) if lang != _get_default_language(): _get_translations(self.query, lang).delete()
def create(self, lang=None): r""" Create the translations of the `Context`\ 's `purview` in a language. """ lang = _get_translate_language(lang) if lang != _get_default_language(): _translations = [ translations.models.Translation( language=lang, text=text, **address ) for address, text in self._get_changed_fields() ] translations.models.Translation.objects.bulk_create(_translations)
def update(self, lang=None): r""" Update the translations of the `Context`\ 's `purview` in a language. """ lang = _get_translate_language(lang) if lang != _get_default_language(): query = models.Q() _translations = [] for address, text in self._get_changed_fields(): query |= models.Q(**address) _translations.append( translations.models.Translation( language=lang, text=text, **address ) ) _get_translations(query, lang).delete() translations.models.Translation.objects.bulk_create(_translations)
def read(self, lang=None): r""" Read the translations of the `Context`\ 's `purview` in a language. """ lang = _get_translate_language(lang) if lang != _get_default_language(): _translations = _get_translations(self.query, lang) for translation in _translations: ct_id = translation.content_type.id obj_id = translation.object_id field = translation.field text = translation.text obj = self.mapping[ct_id][obj_id] if field in type(obj)._get_translatable_fields_names(): setattr(obj, field, text) else: self.reset()
def test_invalid_custom(self): with self.assertRaises(ValueError) as error: _get_translate_language('xx') self.assertEqual(error.exception.args[0], '`xx` is not a supported language.')
def test_existing_accented_custom(self): self.assertEqual(_get_translate_language('en-gb'), 'en-gb')
def test_unaccented_custom(self): self.assertEqual(_get_translate_language('en'), 'en')
def test_existing_accented_active(self): self.assertEqual(_get_translate_language(), 'en-gb')
def test_unaccented_active(self): self.assertEqual(_get_translate_language(), 'en')
def translate(self, lang=None): """Translate the `TranslatableQuerySet` in a language.""" clone = self.all() clone._trans_lang = _get_translate_language(lang) return clone