summaryrefslogtreecommitdiff
path: root/ishtar_common/wizards.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-06-26 16:18:04 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-06-26 16:18:04 +0200
commitde5b617a9b575911f09695028b5b650c53dcd6f6 (patch)
tree62d76afbe9384df31c492b661da23a3d4d532ff6 /ishtar_common/wizards.py
parent84e51699710888183ff2e771ef10c1eae654be93 (diff)
downloadIshtar-de5b617a9b575911f09695028b5b650c53dcd6f6.tar.bz2
Ishtar-de5b617a9b575911f09695028b5b650c53dcd6f6.zip
Fix bad management of db errors on wizards (py3 dict)
Diffstat (limited to 'ishtar_common/wizards.py')
-rw-r--r--ishtar_common/wizards.py17
1 files changed, 13 insertions, 4 deletions
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)