diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-10-05 11:57:12 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-10-05 11:57:12 +0200 |
commit | 6c18a8690cb914e43e04a50fdaf361f6cc0bddb8 (patch) | |
tree | ece299d52e3196db517d7a87adc83c6b3823a940 | |
parent | c657e78bef14a0b6aaf890e8cc6733ba9e07ab82 (diff) | |
download | Ishtar-6c18a8690cb914e43e04a50fdaf361f6cc0bddb8.tar.bz2 Ishtar-6c18a8690cb914e43e04a50fdaf361f6cc0bddb8.zip |
Optimize context record wizard
-rw-r--r-- | archaeological_context_records/wizards.py | 11 | ||||
-rw-r--r-- | ishtar_common/wizards.py | 4 |
2 files changed, 12 insertions, 3 deletions
diff --git a/archaeological_context_records/wizards.py b/archaeological_context_records/wizards.py index da1364b28..e92d9587e 100644 --- a/archaeological_context_records/wizards.py +++ b/archaeological_context_records/wizards.py @@ -44,15 +44,18 @@ class RecordWizard(Wizard): return templates def get_current_operation(self): + if hasattr(self, "_current_operation"): + return self._current_operation step = self.steps.current if not step: return - # manage manualy on creation + # manage manually on creation if step.endswith("_creation"): # an operation has been selected main_form_key = "selec-" + self.url_name try: idx = int(self.session_get_value(main_form_key, "operation_id")) current_ope = models.Operation.objects.get(pk=idx) + self._current_operation = current_ope return current_ope except (TypeError, ValueError, ObjectDoesNotExist): pass @@ -61,11 +64,13 @@ class RecordWizard(Wizard): try: idx = int(self.session_get_value(ope_form_key, "operation")) current_ope = models.Operation.objects.get(pk=idx) + self._current_operation = current_ope return current_ope except (TypeError, ValueError, ObjectDoesNotExist): pass current_cr = self.get_current_object() if current_cr: + self._current_operation = current_cr.operation return current_cr.operation def get_context_data(self, form, **kwargs): @@ -123,11 +128,11 @@ class RecordWizard(Wizard): operation = self.get_current_operation() if not operation: return [] - q = models.ContextRecord.objects.filter(operation=operation) + q = models.ContextRecord.objects.filter(operation_id=operation.pk) obj = self.get_current_object() if obj and obj.pk: q = q.exclude(pk=obj.pk) - return [(cr.pk, str(cr)) for cr in q.all()] + return [(cr.pk, cr.cached_label) for cr in q.all()] class RecordModifWizard(RecordWizard): diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index 7b636538d..2b0a47a72 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -1330,6 +1330,8 @@ class Wizard(IshtarWizard): def get_current_object(self): """Get the current object for an instanced wizard""" + if hasattr(self, "_current_object"): + return self._current_object current_obj = None for key in self.main_item_select_keys: main_form_key = key + self.url_name @@ -1341,6 +1343,8 @@ class Wizard(IshtarWizard): break except (TypeError, ValueError, ObjectDoesNotExist): pass + if current_obj: + self._current_object = current_obj return current_obj def get_form_initial(self, step, data=None): |