diff options
| 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 |
| commit | 695d6c0f403f6970047c19c804e39391b9763271 (patch) | |
| tree | 2cba33588e42ec214b3d30b4825e36e7c4e47b40 /archaeological_warehouse | |
| parent | 339df04ebd6047f1c41491db8c9e284afa43d2ad (diff) | |
| parent | 49c9f8e285a9d75e08207ee697a81ac09c88a947 (diff) | |
| download | Ishtar-695d6c0f403f6970047c19c804e39391b9763271.tar.bz2 Ishtar-695d6c0f403f6970047c19c804e39391b9763271.zip | |
Merge branch 'master-warehouse'
Diffstat (limited to 'archaeological_warehouse')
| -rw-r--r-- | archaeological_warehouse/forms.py | 16 | ||||
| -rw-r--r-- | archaeological_warehouse/views.py | 2 | ||||
| -rw-r--r-- | archaeological_warehouse/wizards.py | 25 |
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 |
