diff options
| author | Valérie-Emma Leroux <valerie-emma.leroux@iggdrasil.net> | 2017-04-07 11:40:31 +0200 | 
|---|---|---|
| committer | Valérie-Emma Leroux <valerie-emma.leroux@iggdrasil.net> | 2017-04-07 11:40:31 +0200 | 
| commit | 655236dd5d04d6527184a58ef8622e75c73f8a65 (patch) | |
| tree | f773b80964981c231c892ee5255b94285bc5620a /ishtar_common/wizards.py | |
| parent | dc08e5f643562a6ecf3b208c1e2cd44e5350af3c (diff) | |
| parent | a4f1766d2217b1a3bc4d1d17625d9d808eed7416 (diff) | |
| download | Ishtar-655236dd5d04d6527184a58ef8622e75c73f8a65.tar.bz2 Ishtar-655236dd5d04d6527184a58ef8622e75c73f8a65.zip | |
Merge branch 'master' of git.iggdrasil.net:/srv/git/ishtar
Conflicts:
	archaeological_operations/templates/ishtar/sheet_operation.html
Diffstat (limited to 'ishtar_common/wizards.py')
| -rw-r--r-- | ishtar_common/wizards.py | 38 | 
1 files changed, 26 insertions, 12 deletions
| diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index 874b68eae..8d787d733 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -51,10 +51,16 @@ class MultiValueDict(BaseMultiValueDict):              v = v()          if type(v) in (list, tuple) and len(v) > 1:              v = ",".join(v) -        else: +        elif type(v) not in (int, unicode):              v = super(MultiValueDict, self).get(*args, **kwargs)          return v +    def getlist(self, *args, **kwargs): +        lst = super(MultiValueDict, self).getlist(*args, **kwargs) +        if type(lst) not in (tuple, list): +            lst = [lst] +        return lst +  def check_rights(rights=[], redirect_url='/'):      """ @@ -132,6 +138,7 @@ class Wizard(NamedUrlWizardView):      current_object_key = 'pk'      ignore_init_steps = []      file_storage = default_storage +    main_item_select_keys = ('selec-',)      saved_args = {}  # argument to pass on object save @@ -217,8 +224,9 @@ class Wizard(NamedUrlWizardView):          dct = {'current_step_label': self.form_list[current_step].form_label,                 'wizard_label': self.label,                 'current_object': self.get_current_object(), -               'is_search': current_step.startswith('selec-') -               if current_step else False +               'is_search': bool( +                   [k for k in self.main_item_select_keys +                    if current_step.startswith(k)]) if current_step else False                 }          context.update(dct)          if step == current_step: @@ -406,6 +414,8 @@ class Wizard(NamedUrlWizardView):          for form in form_list:              if not form.is_valid():                  return self.render(form) +            if hasattr(form, 'readonly') and form.readonly: +                continue              base_form = hasattr(form, 'forms') and form.forms[0] or form              associated_models = hasattr(base_form, 'associated_models') and \                  base_form.associated_models or {} @@ -815,7 +825,7 @@ class Wizard(NamedUrlWizardView):                  # get a form key                  frm = form.form                  if callable(frm): -                    frm = frm() +                    frm = frm(self.get_form_kwargs(step))                  total_field = 0                  if hasattr(frm, 'count_valid_fields'): @@ -1004,20 +1014,24 @@ class Wizard(NamedUrlWizardView):      def get_current_object(self):          """Get the current object for an instancied wizard"""          current_obj = None -        main_form_key = 'selec-' + self.url_name -        try: -            idx = self.session_get_value(main_form_key, self.current_object_key) -            idx = int(idx) -            current_obj = self.model.objects.get(pk=idx) -        except(TypeError, ValueError, ObjectDoesNotExist): -            pass +        for key in self.main_item_select_keys: +            main_form_key = key + self.url_name +            try: +                idx = int(self.session_get_value(main_form_key, +                                                 self.current_object_key)) +                current_obj = self.model.objects.get(pk=idx) +                break +            except(TypeError, ValueError, ObjectDoesNotExist): +                pass          return current_obj      def get_form_initial(self, step, data=None):          current_obj = self.get_current_object()          current_step = self.steps.current          request = self.request -        if step.startswith('selec-') and step in self.form_list \ +        step_is_main_select = bool([k for k in self.main_item_select_keys +                                    if step.startswith(k)]) +        if step_is_main_select and step in self.form_list \             and 'pk' in self.form_list[step].associated_models:              model_name = self.form_list[step]\                               .associated_models['pk'].__name__.lower() | 
