summaryrefslogtreecommitdiff
path: root/ishtar_common/forms.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-11-21 10:46:58 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-11-21 10:46:58 +0100
commit6a3c8c3ff340110960bf64dbfc31e526243f6616 (patch)
tree7fe4800634a6079854d7ab10c782c79fce24ea10 /ishtar_common/forms.py
parente0a1e5b8cc4e85895176d42bc0da0422eeabf70a (diff)
downloadIshtar-6a3c8c3ff340110960bf64dbfc31e526243f6616.tar.bz2
Ishtar-6a3c8c3ff340110960bf64dbfc31e526243f6616.zip
Custom forms: disable completly a form
Diffstat (limited to 'ishtar_common/forms.py')
-rw-r--r--ishtar_common/forms.py21
1 files changed, 17 insertions, 4 deletions
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py
index 683726e67..da6a1c051 100644
--- a/ishtar_common/forms.py
+++ b/ishtar_common/forms.py
@@ -34,7 +34,7 @@ from django.utils.translation import ugettext_lazy as _
import models
import widgets
-from wizards import MultiValueDict
+from ishtar_common.utils import MultiValueDict
# from formwizard.forms import NamedUrlSessionFormWizard
@@ -311,7 +311,17 @@ class CustomForm(object):
except AttributeError:
pass
super(CustomForm, self).__init__(*args, **kwargs)
- base_q = {"form": self.form_slug, 'available': True}
+ available, excluded = self.check_availability_and_excluded_fields(
+ current_user)
+ for exc in excluded:
+ if exc in self.fields:
+ self.fields.pop(exc)
+
+ @classmethod
+ def check_availability_and_excluded_fields(cls, current_user):
+ if not current_user:
+ return True, []
+ base_q = {"form": cls.form_slug, 'available': True}
# order is important : try for user, user type then all
query_dicts = []
if current_user:
@@ -325,17 +335,20 @@ class CustomForm(object):
dct = base_q.copy()
dct.update({'apply_to_all': True})
query_dicts.append(dct)
+ excluded_lst = []
for query_dict in query_dicts:
q = models.CustomForm.objects.filter(**query_dict)
if not q.count():
continue
# todo: prevent multiple result in database
form = q.all()[0]
+ if not form.enabled:
+ return False, []
for excluded in form.excluded_fields.all():
# could have be filtered previously
- if excluded.field in self.fields:
- self.fields.pop(excluded.field)
+ excluded_lst.append(excluded.field)
break
+ return True, excluded_lst
@classmethod
def get_custom_fields(cls):