diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-10-21 21:11:48 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-10-21 21:11:48 +0200 |
commit | 4e2c3dcd9dc31221a467a5bb4e727fd06336ea07 (patch) | |
tree | e106614f06c452a4b879104d6b745b7e710928c1 /archaeological_warehouse | |
parent | 9b74fc6fbcc6c51dc6e18d33179262d14188fcc5 (diff) | |
download | Ishtar-4e2c3dcd9dc31221a467a5bb4e727fd06336ea07.tar.bz2 Ishtar-4e2c3dcd9dc31221a467a5bb4e727fd06336ea07.zip |
Djangoization - Major refactoring (step 13)
* Fix finds wizards
* Clean-up an unecessary file
Diffstat (limited to 'archaeological_warehouse')
-rw-r--r-- | archaeological_warehouse/forms.py | 87 | ||||
-rw-r--r-- | archaeological_warehouse/urls.py | 4 | ||||
-rw-r--r-- | archaeological_warehouse/views.py | 12 | ||||
-rw-r--r-- | archaeological_warehouse/wizards.py | 2 |
4 files changed, 95 insertions, 10 deletions
diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py index 33b7ba116..2e1bfcc05 100644 --- a/archaeological_warehouse/forms.py +++ b/archaeological_warehouse/forms.py @@ -20,11 +20,94 @@ import datetime from django import forms +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 import models +from ishtar_common import widgets +from ishtar_common.forms import name_validator, reverse_lazy, get_form_selection +from archaeological_finds.forms import FindMultipleFormSelection + +def get_warehouse_field(label=_(u"Warehouse"), required=True): + # !FIXME hard_link, reverse_lazy doen't seem to work with formsets + url = "/" + settings.URL_PATH + 'autocomplete-warehouse' + widget = widgets.JQueryAutoComplete(url, associated_model=models.Warehouse) + return forms.IntegerField(widget=widget, label=label, required=required, + validators=[valid_id(models.Warehouse)]) + +class WarehouseForm(forms.Form): + name = forms.CharField(label=_(u"Name"), max_length=40, + validators=[name_validator]) + warehouse_type = forms.ChoiceField(label=_(u"Warehouse type"), + choices=[]) + person_in_charge = forms.IntegerField(label=_(u"Person in charge"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-person'), associated_model=models.Person), + validators=[valid_id(models.Person)], + required=False) + comment = forms.CharField(label=_(u"Comment"), widget=forms.Textarea, + required=False) + address = forms.CharField(label=_(u"Address"), widget=forms.Textarea, + required=False) + address_complement = forms.CharField(label=_(u"Address complement"), + widget=forms.Textarea, required=False) + postal_code = forms.CharField(label=_(u"Postal code"), max_length=10, + required=False) + town = forms.CharField(label=_(u"Town"), max_length=30, required=False) + country = forms.CharField(label=_(u"Country"), max_length=30, + required=False) + phone = forms.CharField(label=_(u"Phone"), max_length=18, required=False) + mobile_phone = forms.CharField(label=_(u"Town"), max_length=18, + required=False) + + def __init__(self, *args, **kwargs): + super(WarehouseForm, self).__init__(*args, **kwargs) + self.fields['warehouse_type'].choices = \ + models.WarehouseType.get_types() + self.fields['warehouse_type'].help_text = \ + models.WarehouseType.get_help() + + def save(self, user): + dct = self.cleaned_data + dct['history_modifier'] = user + dct['warehouse_type'] = models.WarehouseType.objects.get( + pk=dct['warehouse_type']) + if 'person_in_charge' in dct and dct['person_in_charge']: + dct['person_in_charge'] = models.Person.objects.get( + pk=dct['person_in_charge']) + new_item = models.Warehouse(**dct) + new_item.save() + return new_item + +class ContainerForm(forms.Form): + form_label = _(u"Container") + reference = forms.CharField(label=_(u"Reference")) + container_type = forms.ChoiceField(label=_(u"Container type"), choices=[]) + location = forms.IntegerField(label=_(u"Warehouse"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-warehouse'), associated_model=models.Warehouse, + new=True), + validators=[valid_id(models.Warehouse)]) + comment = forms.CharField(label=_(u"Comment"), + widget=forms.Textarea, required=False) + + def __init__(self, *args, **kwargs): + super(ContainerForm, self).__init__(*args, **kwargs) + self.fields['container_type'].choices = models.ContainerType.get_types() + self.fields['container_type'].help_text = \ + models.ContainerType.get_help() + + def save(self, user): + dct = self.cleaned_data + dct['history_modifier'] = user + dct['container_type'] = models.ContainerType.objects.get( + pk=dct['container_type']) + dct['location'] = models.Warehouse.objects.get(pk=dct['location']) + new_item = models.Container(**dct) + new_item.save() + return new_item class ContainerSelect(forms.Form): location = get_warehouse_field() @@ -62,5 +145,5 @@ class BasePackagingForm(forms.Form): self.fields['treatment_type'].initial = \ TreatmentType.objects.get(txt_idx='packaging').pk -class ItemPackagingFormSelection(ItemMultipleFormSelection): - form_label = _(u"Packaged items") +class FindPackagingFormSelection(FindMultipleFormSelection): + form_label = _(u"Packaged finds") diff --git a/archaeological_warehouse/urls.py b/archaeological_warehouse/urls.py index e91568b1e..2ae27c279 100644 --- a/archaeological_warehouse/urls.py +++ b/archaeological_warehouse/urls.py @@ -23,8 +23,8 @@ import views # forms urlpatterns = patterns('', - url(r'treatment_creation/(?P<step>.+)?$', - views.treatment_creation_wizard, name='treatment_creation'), + #url(r'treatment_creation/(?P<step>.+)?$', + # views.treatment_creation_wizard, name='treatment_creation'), url(r'warehouse_packaging/(?P<step>.+)?$', views.warehouse_packaging_wizard, name='warehouse_packaging'), ) diff --git a/archaeological_warehouse/views.py b/archaeological_warehouse/views.py index f15220efe..10a7b9bf4 100644 --- a/archaeological_warehouse/views.py +++ b/archaeological_warehouse/views.py @@ -24,9 +24,10 @@ from django.http import HttpResponse from django.shortcuts import render_to_response from django.utils.translation import ugettext_lazy as _ -from ishtar_common.views import get_item, show_item, revert_item +from ishtar_common.views import get_item, new_item import models from wizards import * +from ishtar_common.forms import FinalForm from forms import * get_container = get_item(models.Container, @@ -37,8 +38,8 @@ get_container = get_item(models.Container, 'reference':'reference__icontains', }) -new_warehouse = new_item(models.Warehouse) -new_container = new_item(models.Container) +new_warehouse = new_item(models.Warehouse, WarehouseForm) +new_container = new_item(models.Container, ContainerForm) def autocomplete_warehouse(request): if not request.user.has_perm('ishtar_common.view_warehouse', @@ -86,9 +87,10 @@ def autocomplete_container(request): warehouse_packaging_wizard = PackagingWizard.as_view([ ('seleccontainer-packaging', ContainerFormSelection), ('base-packaging', BasePackagingForm), - ('multiselecitems-packaging', ItemPackagingFormSelection), + ('multiselecitems-packaging', FindPackagingFormSelection), ('final-packaging', FinalForm)], - url_name='warehouse_packaging',) + label=_(u"Packaging"), + url_name='warehouse_packaging',) """ warehouse_packaging_wizard = ItemSourceWizard.as_view([ diff --git a/archaeological_warehouse/wizards.py b/archaeological_warehouse/wizards.py index cbd756bc8..c40894c25 100644 --- a/archaeological_warehouse/wizards.py +++ b/archaeological_warehouse/wizards.py @@ -31,7 +31,7 @@ class PackagingWizard(TreatmentWizard): dct = self.get_extra_model(dct, form_list) obj = self.get_current_saved_object() dct['location'] = dct['container'].location - items = dct.pop('items') + items = dct.pop('finds') treatment = Treatment(**dct) treatment.save() if not hasattr(items, '__iter__'): |