summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-12-10 17:51:52 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-12-10 18:06:42 +0100
commitd249f79bdfa5eb1599cd55b81b7047ad79dfb19a (patch)
tree7173c7f429d0d6f06b74c07f0dfccf14f98c8e8b
parent8a5106021abc5a897a2dc52dc0ff1c6cf4af951f (diff)
downloadIshtar-d249f79bdfa5eb1599cd55b81b7047ad79dfb19a.tar.bz2
Ishtar-d249f79bdfa5eb1599cd55b81b7047ad79dfb19a.zip
Treatment - packaging: change by default current and ref container
-rw-r--r--archaeological_finds/forms_treatments.py28
-rw-r--r--archaeological_finds/migrations/0049_auto_20181210_1518.py1
-rw-r--r--archaeological_finds/models_treatments.py31
3 files changed, 30 insertions, 30 deletions
diff --git a/archaeological_finds/forms_treatments.py b/archaeological_finds/forms_treatments.py
index 8ae0dbd36..59df12df2 100644
--- a/archaeological_finds/forms_treatments.py
+++ b/archaeological_finds/forms_treatments.py
@@ -195,10 +195,20 @@ class BaseTreatmentForm(CustomForm, ManageOldType):
def clean(self, *args, **kwargs):
data = self.cleaned_data
- treatment_types = data.get('treatment_type', [])
+ try:
+ treatment_types = [
+ models.TreatmentType.objects.get(
+ pk=pk, available=True, upstream_is_many=False,
+ downstream_is_many=False)
+ for pk in data.get('treatment_type', [])]
+ except models.TreatmentType.DoesNotExist:
+ raise forms.ValidationError(_(u"Unknow treatment type"))
+
change_current_location = [
- unicode(tp) for tp in treatment_types if tp.change_current_location]
+ unicode(tp) for tp in treatment_types
+ if tp.change_current_location
+ ]
restore_reference_location = [
unicode(tp) for tp in treatment_types
if tp.restore_reference_location
@@ -214,7 +224,7 @@ class BaseTreatmentForm(CustomForm, ManageOldType):
raise forms.ValidationError(
unicode(
_(u"{} is not compatible with {} "
- u"treatments.")).format(
+ u"treatment(s).")).format(
u' ; '.join(restore_reference_location),
u' ; '.join(change_ref_location),
)
@@ -223,22 +233,12 @@ class BaseTreatmentForm(CustomForm, ManageOldType):
raise forms.ValidationError(
unicode(
_(u"{} is not compatible with {} "
- u"treatments.")).format(
+ u"treatment(s).")).format(
u' ; '.join(restore_reference_location),
u' ; '.join(change_current_location)
)
)
- if change_ref_location and change_current_location:
- raise forms.ValidationError(
- unicode(
- _(u"{} is not compatible with {} "
- u"treatments.")).format(
- u' ; '.join(change_ref_location),
- u' ; '.join(change_current_location)
- )
- )
-
if data.get('container', None) \
and not change_ref_location\
and not change_current_location:
diff --git a/archaeological_finds/migrations/0049_auto_20181210_1518.py b/archaeological_finds/migrations/0049_auto_20181210_1518.py
index d2510c7fd..28f790ab0 100644
--- a/archaeological_finds/migrations/0049_auto_20181210_1518.py
+++ b/archaeological_finds/migrations/0049_auto_20181210_1518.py
@@ -21,6 +21,7 @@ def migrate_treatment_types(apps, schema):
if q.count():
packaging = q.all()[0]
packaging.change_reference_location = True
+ packaging.change_current_location = True
packaging.save()
q = TreatmentType.objects.filter(txt_idx="virtual-reassembly")
if q.count():
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py
index ee4fde0f0..ba1c29dc8 100644
--- a/archaeological_finds/models_treatments.py
+++ b/archaeological_finds/models_treatments.py
@@ -491,30 +491,29 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
if not self.container:
return
- container_attr = None
+ container_attrs = []
for tp in treatment_types:
if tp.change_current_location:
- if container_attr == 'container_ref':
- # non consistent treatment
- return
- container_attr = 'container'
+ if 'container' in container_attrs:
+ continue
+ container_attrs.append('container')
if tp.change_reference_location:
- if container_attr == 'container':
- # non consistent treatment
- return
- container_attr = 'container_ref'
+ if 'container_ref' in container_attrs:
+ continue
+ container_attrs.append('container_ref')
- if not container_attr:
+ if not container_attrs:
# non consistent treatment
return
for find in q.all():
- 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
- find.save()
+ for container_attr in container_attrs:
+ 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
+ find.save()
@property
def associated_filename(self):