diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-12-01 21:59:52 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-12-01 21:59:52 +0100 |
commit | 2e3624dc33d32325b4fe9c65d50f0a9c86b99c1b (patch) | |
tree | 667d2e0a090b8d08c7c36c85462cdc09d8459d6f /archaeological_finds/models_treatments.py | |
parent | 33dd12e15379b98d29fd1edeaf416d28300fab81 (diff) | |
download | Ishtar-2e3624dc33d32325b4fe9c65d50f0a9c86b99c1b.tar.bz2 Ishtar-2e3624dc33d32325b4fe9c65d50f0a9c86b99c1b.zip |
Manage reference containers - manage loan and loan return
Diffstat (limited to 'archaeological_finds/models_treatments.py')
-rw-r--r-- | archaeological_finds/models_treatments.py | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index cc0d17dd0..1083b479b 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -458,16 +458,46 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem, basket.items.remove(item) basket.items.add(new) - # manage containers - if not self.container: - return if create_new_find: q = Find.objects.filter(upstream_treatment=self) else: q = Find.objects.filter(treatments=self) + + # manage loan return + for tp in treatment_types: + if tp.txt_idx == 'loan-return': + for find in q.all(): + if find.container_ref: + find.container = find.container_ref + if find.pk in updated: + # don't record twice history + find.skip_history_when_saving = True + find.save() + + # manage containers + if not self.container: + return + + container_attr = None + for tp in treatment_types: + if tp.txt_idx == 'loan': + if container_attr: + # non consistent treatment + return + container_attr = 'container' + if tp.txt_idx == 'packaging': + if container_attr: + # non consistent treatment + return + container_attr = 'container_ref' + + if not container_attr: + # non consistent treatment + return + for find in q.all(): - if find.container != self.container: - find.container = self.container + if getattr(find, container_attr) != self.container: + setattr(find, container_attr, self.container) if find.pk in updated: # don't record twice history find.skip_history_when_saving = True |