diff options
Diffstat (limited to 'ishtar_common/wizards.py')
| -rw-r--r-- | ishtar_common/wizards.py | 20 | 
1 files changed, 17 insertions, 3 deletions
diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index a3f6689dc..9801e596f 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -816,6 +816,9 @@ class Wizard(IshtarWizard):              for k in saved_args:                  if k in dct:                      saved_args[k] = dct.pop(k) +            for whole_associated_model in whole_associated_models: +                if whole_associated_model in dct: +                    dct.pop(whole_associated_model)              obj = self.get_saved_model()(**dct)              if hasattr(obj, "pre_save"):                  obj.pre_save() @@ -839,7 +842,10 @@ class Wizard(IshtarWizard):          # TODO! perf - to be really optimized          old_m2ms = {}          for model in whole_associated_models: -            related_model = getattr(obj, model + "s") +            try: +                related_model = getattr(obj, model + "s") +            except AttributeError: +                related_model = getattr(obj, model)              # manage through              if hasattr(related_model, "through") and related_model.through:                  if hasattr(related_model.through, "RELATED_SET_NAME"): @@ -862,7 +868,10 @@ class Wizard(IshtarWizard):                      r.delete()          need_update = False          for key, value in m2m: -            related_model = getattr(obj, key + "s") +            try: +                related_model = getattr(obj, key + "s") +            except AttributeError: +                related_model = getattr(obj, key)              related_data = {}  # used for intermediary models              # an intermediary model is used @@ -1504,7 +1513,12 @@ class Wizard(IshtarWizard):              if hasattr(c_form, "base_models") and base_field in c_form.base_models:                  base_model = base_field              if base_model: -                key = base_model + "s" +                try: +                    __ = getattr(obj, base_model + "s") +                    key = base_model + "s" +                except AttributeError: +                    __ = getattr(obj, base_model) +                    key = base_model                  initial.setlist(                      base_field, [str(val.pk) for val in getattr(value, key).all()]                  )  | 
