Example #1
0
    def create_or_update_translation(self,
                                     language_code,
                                     singular_text=None,
                                     plural_texts=None,
                                     validate=False):

        if language_code not in dict(settings.LANGUAGES).keys():
            return [
                "'{}' is not included as a language in your settings file".
                format(language_code)
            ]

        with transaction.atomic(xg=True):
            trans = None
            if language_code in self.translations_by_language_code:
                # We already have a translation for this language, update it!
                try:
                    trans = Translation.objects.get(
                        pk=self.translations_by_language_code[language_code])
                    created = False
                except Translation.DoesNotExist:
                    trans = None

            if not trans:
                # OK, create the translation object and add it to the respective fields
                trans = Translation(master_translation_id=self.pk,
                                    language_code=language_code,
                                    denorm_master_hint=self.hint,
                                    denorm_master_text=self.text)
                created = True

            if plural_texts:
                trans.plural_texts = plural_texts
            else:
                trans.text = singular_text

            if validate:
                errors = validate_translation_texts(trans, self)
                if errors:
                    return errors

            trans.master_translation = self
            trans.save()

            if created:
                self.refresh_from_db()
                self.translations_by_language_code[language_code] = trans.pk
                self.translations.add(trans)
                self.save()
Example #2
0
    def create_or_update_translation(self, language_code, singular_text=None, plural_texts=None, validate=False):

        with transaction.atomic(xg=True):
            trans = None
            if language_code in self.translations_by_language_code:
                # We already have a translation for this language, update it!
                try:
                    trans = Translation.objects.get(pk=self.translations_by_language_code[language_code])
                    created = False
                except Translation.DoesNotExist:
                    trans = None

            if not trans:
                # OK, create the translation object and add it to the respective fields
                trans = Translation(
                    master_translation_id=self.pk,
                    language_code=language_code,
                    denorm_master_hint=self.hint,
                    denorm_master_text=self.text
                )
                created = True

            if plural_texts:
                trans.plural_texts = plural_texts
            else:
                trans.text = singular_text

            if validate:
                errors = validate_translation_texts(trans, self)
                if errors:
                    return errors

            trans.master_translation = self
            trans.save()

            if created:
                self.refresh_from_db()
                self.translations_by_language_code[language_code] = trans.pk
                self.translations.add(trans)
                self.save()
Example #3
0
 def clean(self):
     msgs = validate_translation_texts(self)
     if msgs:
         raise ValidationError([err for err, _orig, _trans in msgs])
Example #4
0
 def clean(self):
     msgs = validate_translation_texts(self)
     if msgs:
         raise ValidationError([err for err, _orig, _trans in msgs])