summaryrefslogtreecommitdiff
path: root/ishtar_common/wizards.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-02-20 12:39:14 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-02-20 12:39:14 +0100
commit161d29195cb9719b9c6ae4903c2c526f797bdf5f (patch)
tree4021acda72e7ec6321e57510aaf61c92b326ace1 /ishtar_common/wizards.py
parentfb67f2224a60d19380c6db682499af76a9667d35 (diff)
parent2b059ee6ed6e90c63ab8f04d3709800d4d365227 (diff)
downloadIshtar-161d29195cb9719b9c6ae4903c2c526f797bdf5f.tar.bz2
Ishtar-161d29195cb9719b9c6ae4903c2c526f797bdf5f.zip
Merge branch 'master' into v0.9
Diffstat (limited to 'ishtar_common/wizards.py')
-rw-r--r--ishtar_common/wizards.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py
index c2cd54d03..5c4e1d3f9 100644
--- a/ishtar_common/wizards.py
+++ b/ishtar_common/wizards.py
@@ -31,6 +31,7 @@ from django.core.files.storage import default_storage
from django.core.mail import send_mail
from django.db.models.fields.files import FileField
from django.db.models.fields.related import ManyToManyField
+from django.db.models.fields import NOT_PROVIDED
from django.http import HttpResponseRedirect
from django.forms import ValidationError
@@ -665,11 +666,34 @@ class Wizard(NamedUrlWizardView):
else:
if issubclass(model, models.BaseHistorizedItem):
value['history_modifier'] = self.request.user
+
+ get_or_create = False
if hasattr(model, 'RELATIVE_MODELS') and \
self.get_saved_model() in \
model.RELATIVE_MODELS:
value[model.RELATIVE_MODELS[
self.get_saved_model()]] = obj
+ get_or_create = True
+
+ # check if there is no missing fields
+ # should be managed normally in forms but...
+ if hasattr(model._meta, 'get_fields'): # django 1.8
+ fields = model._meta.get_field()
+ else:
+ fields = model._meta.fields
+
+ has_problemetic_null = [
+ (field.name, field.default == NOT_PROVIDED)
+ for field in fields
+ if (field.name not in value
+ or not value[field.name])
+ and not field.null and not field.blank
+ and (not field.default
+ or field.default == NOT_PROVIDED)]
+ if has_problemetic_null:
+ continue
+
+ if get_or_create:
value, created = model.objects.get_or_create(
**value)
else: