summaryrefslogtreecommitdiff
path: root/archaeological_warehouse
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-06-08 18:13:35 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-06-08 18:13:35 +0200
commit695d6c0f403f6970047c19c804e39391b9763271 (patch)
tree2cba33588e42ec214b3d30b4825e36e7c4e47b40 /archaeological_warehouse
parent339df04ebd6047f1c41491db8c9e284afa43d2ad (diff)
parent49c9f8e285a9d75e08207ee697a81ac09c88a947 (diff)
downloadIshtar-695d6c0f403f6970047c19c804e39391b9763271.tar.bz2
Ishtar-695d6c0f403f6970047c19c804e39391b9763271.zip
Merge branch 'master-warehouse'
Diffstat (limited to 'archaeological_warehouse')
-rw-r--r--archaeological_warehouse/forms.py16
-rw-r--r--archaeological_warehouse/views.py2
-rw-r--r--archaeological_warehouse/wizards.py25
3 files changed, 25 insertions, 18 deletions
diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py
index f045fac1e..d56df8139 100644
--- a/archaeological_warehouse/forms.py
+++ b/archaeological_warehouse/forms.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (C) 2010-2013 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2010-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -22,12 +22,13 @@ from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from ishtar_common.models import Person, valid_id
-from archaeological_finds.models import TreatmentType
+from archaeological_finds.models import TreatmentType, FindBasket
import models
from ishtar_common import widgets
from ishtar_common.forms import name_validator, reverse_lazy, \
get_form_selection, TableSelect
-from archaeological_finds.forms import FindMultipleFormSelection
+from archaeological_finds.forms import FindMultipleFormSelection, \
+ SelectFindBasketForm
def get_warehouse_field(label=_(u"Warehouse"), required=True):
@@ -66,6 +67,8 @@ class WarehouseForm(forms.Form):
required=False)
def __init__(self, *args, **kwargs):
+ if 'limits' in kwargs:
+ kwargs.pop('limits')
super(WarehouseForm, self).__init__(*args, **kwargs)
self.fields['warehouse_type'].choices = \
models.WarehouseType.get_types()
@@ -99,6 +102,8 @@ class ContainerForm(forms.Form):
widget=forms.Textarea, required=False)
def __init__(self, *args, **kwargs):
+ if 'limits' in kwargs:
+ kwargs.pop('limits')
super(ContainerForm, self).__init__(*args, **kwargs)
self.fields['container_type'].choices = \
models.ContainerType.get_types()
@@ -135,11 +140,12 @@ ContainerFormSelection = get_form_selection(
new_message=_(u"Add a new container"))
-class BasePackagingForm(forms.Form):
+class BasePackagingForm(SelectFindBasketForm):
form_label = _(u"Packaging")
associated_models = {'treatment_type': TreatmentType,
'person': Person,
- 'location': models.Warehouse}
+ 'location': models.Warehouse,
+ 'basket': FindBasket}
treatment_type = forms.IntegerField(label="", widget=forms.HiddenInput)
person = forms.IntegerField(
label=_(u"Packager"),
diff --git a/archaeological_warehouse/views.py b/archaeological_warehouse/views.py
index aab18ed40..be5e6150c 100644
--- a/archaeological_warehouse/views.py
+++ b/archaeological_warehouse/views.py
@@ -89,7 +89,7 @@ def autocomplete_container(request):
warehouse_packaging_wizard = PackagingWizard.as_view([
('seleccontainer-packaging', ContainerFormSelection),
('base-packaging', BasePackagingForm),
- ('multiselecitems-packaging', FindPackagingFormSelection),
+ # ('multiselecitems-packaging', FindPackagingFormSelection),
('final-packaging', FinalForm)],
label=_(u"Packaging"),
url_name='warehouse_packaging',)
diff --git a/archaeological_warehouse/wizards.py b/archaeological_warehouse/wizards.py
index 833c1c697..409f7b28f 100644
--- a/archaeological_warehouse/wizards.py
+++ b/archaeological_warehouse/wizards.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (C) 2012 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2012-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -25,23 +25,24 @@ from archaeological_finds.models import Treatment
class PackagingWizard(TreatmentWizard):
+
+ def get_form_kwargs(self, step):
+ kwargs = super(PackagingWizard, self).get_form_kwargs(step)
+ if 'base-packaging' not in step:
+ return kwargs
+ kwargs['user'] = self.request.user
+ return kwargs
+
def save_model(self, dct, m2m, whole_associated_models, form_list,
return_object):
dct = self.get_extra_model(dct, form_list)
obj = self.get_current_saved_object()
dct['location'] = dct['container'].location
- items = dct.pop('finds')
+ items = dct.pop('basket')
treatment = Treatment(**dct)
- treatment.save()
- if not hasattr(items, '__iter__'):
- items = [items]
- for item in items:
- new = item.duplicate(self.request.user)
- item.downstream_treatment = treatment
- item.save()
- new.upstream_treatment = treatment
- new.container = dct['container']
- new.save()
+ extra_args_for_new = {"container": dct['container']}
+ treatment.save(items=items, user=self.request.user,
+ extra_args_for_new=extra_args_for_new)
res = render_to_response('ishtar/wizard/wizard_done.html', {},
context_instance=RequestContext(self.request))
return return_object and (obj, res) or res