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 | af719ae697e5b03582b28f8a59eae39524cb8f7f (patch) | |
tree | e106614f06c452a4b879104d6b745b7e710928c1 /archaeological_warehouse/forms.py | |
parent | 7ccc29e5c41fe8a4a33c803adc4bbbd94d6ad1d7 (diff) | |
download | Ishtar-af719ae697e5b03582b28f8a59eae39524cb8f7f.tar.bz2 Ishtar-af719ae697e5b03582b28f8a59eae39524cb8f7f.zip |
Djangoization - Major refactoring (step 13)
* Fix finds wizards
* Clean-up an unecessary file
Diffstat (limited to 'archaeological_warehouse/forms.py')
-rw-r--r-- | archaeological_warehouse/forms.py | 87 |
1 files changed, 85 insertions, 2 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") |