diff options
Diffstat (limited to 'ishtar_common/forms.py')
| -rw-r--r-- | ishtar_common/forms.py | 21 | 
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):  | 
