def save(self, commit=True): if self.instance.pk is None: fail_message = 'created' new = True else: fail_message = 'changed' new = False super(TranslatableModelForm, self).save(True) trans_model = self.instance._meta.translations_model language_code = self.cleaned_data.get('language_code', get_language()) if not new: trans = get_cached_translation(self.instance) if not trans: try: trans = get_translation(self.instance, language_code) except trans_model.DoesNotExist: trans = trans_model() else: trans = trans_model() trans.language_code = language_code trans.master = self.instance trans = save_instance(self, trans, self._meta.fields, fail_message, commit, construct=True) return combine(trans)
def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=ErrorList, label_suffix=':', empty_permitted=False, instance=None): """ """ opts = self._meta model_opts = opts.model._meta object_data = {} language = getattr(self, 'language', get_language()) if instance is not None: trans = get_cached_translation(instance) if not trans or trans.language_code != language: try: trans = get_translation(instance, language) except model_opts.translations_model.DoesNotExist: trans = None if trans: object_data = model_to_dict(trans, opts.fields, opts.exclude) # Dirty hack that swaps the id from the translation id, to the master id # This is necessary, because we in this case get the untranslated instance, # and thereafter get the correct translation on save. if object_data.has_key("id"): object_data["id"] = trans.master.id if initial is not None: object_data.update(initial) initial = object_data super(TranslatableModelForm, self).__init__(data, files, auto_id, prefix, initial, error_class, label_suffix, empty_permitted, instance)
def save(self, commit=True): if self.instance.pk is None: fail_message = 'created' new = True else: fail_message = 'changed' new = False super(TranslatableModelForm, self).save(True) trans_model = self.instance._meta.translations_model language_code = self.cleaned_data.get('language_code', get_language()) if not new: trans = get_cached_translation(self.instance) if not trans or trans.language_code != language_code: try: trans = get_translation(self.instance, language_code) except trans_model.DoesNotExist: trans = trans_model() else: trans = trans_model() trans.language_code = language_code trans.master = self.instance trans = save_instance(self, trans, self._meta.fields, fail_message, commit, construct=True) return combine(trans)
def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=ErrorList, label_suffix=':', empty_permitted=False, instance=None): opts = self._meta model_opts = opts.model._meta object_data = {} language = getattr(self, 'language', get_language()) if instance is not None: trans = get_cached_translation(instance) if not trans: try: trans = get_translation(instance, language) except model_opts.translations_model.DoesNotExist: trans = None if trans: object_data = model_to_dict(trans, opts.fields, opts.exclude) if initial is not None: object_data.update(initial) initial = object_data super(TranslatableModelForm, self).__init__(data, files, auto_id, prefix, object_data, error_class, label_suffix, empty_permitted, instance)
def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=ErrorList, label_suffix=':', empty_permitted=False, instance=None): """ """ opts = self._meta model_opts = opts.model._meta object_data = {} if instance is not None: trans = get_cached_translation(instance) if not trans: try: trans = get_translation(instance, self.language) except model_opts.translations_model.DoesNotExist: trans = None if trans: object_data = model_to_dict(trans, opts.fields, opts.exclude) if initial is not None: object_data.update(initial) initial = object_data super(TranslatableModelForm, self).__init__(data, files, auto_id, prefix, object_data, error_class, label_suffix, empty_permitted, instance)
def __set__(self, instance, value): if instance is None: raise AttributeError("%s must be accessed via instance" % self._field.name) value = get_cached_translation(value) super(ReverseTranslatedSingleRelatedObjectDescriptor, self).__set__(instance, value)