summaryrefslogtreecommitdiff
path: root/archaeological_finds/models_treatments.py
diff options
context:
space:
mode:
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
commit5937f631b941dc727264b619ae8f9de25c315f5a (patch)
tree667d2e0a090b8d08c7c36c85462cdc09d8459d6f /archaeological_finds/models_treatments.py
parent2e7ee91fc196d4f7f9770420d8d3c98b8ff78175 (diff)
downloadIshtar-5937f631b941dc727264b619ae8f9de25c315f5a.tar.bz2
Ishtar-5937f631b941dc727264b619ae8f9de25c315f5a.zip
Manage reference containers - manage loan and loan return
Diffstat (limited to 'archaeological_finds/models_treatments.py')
-rw-r--r--archaeological_finds/models_treatments.py40
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