From 7186a3adae39105729e31d0c7b594fcbcbdfd091 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 26 Jun 2019 16:18:04 +0200 Subject: Fix bad management of db errors on wizards (py3 dict) --- ishtar_common/wizards.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'ishtar_common/wizards.py') diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index 375004e67..f5f9d63dc 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -45,7 +45,8 @@ from django.utils.safestring import mark_safe from ishtar_common import models from ishtar_common.forms import CustomForm, reverse_lazy -from ishtar_common.utils import get_all_field_names, MultiValueDict +from ishtar_common.utils import get_all_field_names, MultiValueDict, \ + put_session_message logger = logging.getLogger(__name__) @@ -601,7 +602,7 @@ class Wizard(IshtarWizard): other_objs[dependant_item] = {} other_objs[dependant_item][key] = dct.pop(k) if obj: - for k in dct: + for k in list(dct.keys()): if k.startswith('pk'): continue if k not in get_all_field_names(obj.__class__): @@ -628,7 +629,11 @@ class Wizard(IshtarWizard): obj.full_clean() except ValidationError as e: logger.warning(str(e)) - return self.render(form_list[-1]) + put_session_message( + self.request.session.session_key, + str(e), 'error' + ) + return self.render(list(form_list)[-1]) for dependant_item in other_objs: c_item = getattr(obj, dependant_item) if callable(c_item): @@ -705,7 +710,11 @@ class Wizard(IshtarWizard): obj.full_clean() except ValidationError as e: logger.warning(str(e)) - return self.render(form_list[-1]) + put_session_message( + self.request.session.session_key, + str(e), 'error' + ) + return self.render(list(form_list)[-1]) if hasattr(obj, 'data'): obj.data = data obj.save(**saved_args) -- cgit v1.2.3