diff options
Diffstat (limited to 'archaeological_warehouse/forms.py')
| -rw-r--r-- | archaeological_warehouse/forms.py | 77 | 
1 files changed, 74 insertions, 3 deletions
| diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py index b34be3ab3..8e0328880 100644 --- a/archaeological_warehouse/forms.py +++ b/archaeological_warehouse/forms.py @@ -19,6 +19,7 @@  from django import forms  from django.conf import settings +from django.forms.formsets import formset_factory  from django.utils.translation import ugettext_lazy as _  from ishtar_common.models import Person, valid_id @@ -39,7 +40,58 @@ def get_warehouse_field(label=_(u"Warehouse"), required=True):                                validators=[valid_id(models.Warehouse)]) +class SelectedDivisionForm(ManageOldType, forms.Form): +    form_label = _(u"Division") +    base_model = 'associated_division' +    associated_models = {'division': models.WarehouseDivision, +                         'associated_division': models.WarehouseDivisionLink} +    division = forms.ChoiceField( +        label=_(u"Division"), choices=(), required=False, +        validators=[valid_id(models.WarehouseDivision)]) +    order = forms.IntegerField(_(u"Order"), initial=10, required=False) + +    def __init__(self, *args, **kwargs): +        super(SelectedDivisionForm, self).__init__(*args, **kwargs) +        self.fields['division'].choices = \ +            models.WarehouseDivision.get_types( +            initial=self.init_data.get('division') +        ) + +SelectedDivisionFormset = formset_factory( +    SelectedDivisionForm, can_delete=True) +SelectedDivisionFormset.form_label = _(u"Divisions") + + +class WarehouseSelect(TableSelect): +    name = forms.CharField(label=_(u"Name")) +    warehouse_type = forms.ChoiceField(label=_(u"Warehouse type"), choices=[]) +    towns = forms.CharField(label=_(u"Town")) + +    def __init__(self, *args, **kwargs): +        super(WarehouseSelect, self).__init__(*args, **kwargs) +        self.fields['warehouse_type'].choices = \ +            models.WarehouseType.get_types() +        self.fields['warehouse_type'].help_text = \ +            models.WarehouseType.get_help() + + +class WarehouseFormSelection(forms.Form): +    form_label = _("Warehouse search") +    associated_models = {'pk': models.Warehouse} +    currents = {'pk': models.Warehouse} +    pk = forms.IntegerField( +        label="", required=False, +        widget=widgets.JQueryJqGrid( +            reverse_lazy('get-warehouse'), +            WarehouseSelect, models.Warehouse), +        validators=[valid_id(models.Warehouse)]) + +  class WarehouseForm(ManageOldType, forms.Form): +    form_label = _(u"Warehouse") +    associated_models = {'warehouse_type': models.WarehouseType, +                         'person_in_charge': Person} +      name = forms.CharField(label=_(u"Name"), max_length=40,                             validators=[name_validator])      warehouse_type = forms.ChoiceField(label=_(u"Warehouse type"), @@ -48,8 +100,8 @@ class WarehouseForm(ManageOldType, forms.Form):          label=_(u"Person in charge"),          widget=widgets.JQueryAutoComplete(              reverse_lazy('autocomplete-person'), -            associated_model=models.Person), -        validators=[valid_id(models.Person)], +            associated_model=Person), +        validators=[valid_id(Person)],          required=False)      comment = forms.CharField(label=_(u"Comment"), widget=forms.Textarea,                                required=False) @@ -63,7 +115,7 @@ class WarehouseForm(ManageOldType, forms.Form):      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, +    mobile_phone = forms.CharField(label=_(u"Mobile phone"), max_length=18,                                     required=False)      def __init__(self, *args, **kwargs): @@ -166,3 +218,22 @@ class BasePackagingForm(SelectFindBasketForm):  class FindPackagingFormSelection(FindMultipleFormSelection):      form_label = _(u"Packaged finds") + + +class LocalisationForm(forms.Form): +    form_label = _(u"Localisation") + +    def __init__(self, *args, **kwargs): +        container = kwargs.pop('container') +        super(LocalisationForm, self).__init__(*args, **kwargs) +        if not container: +            return +        for divlink in container.location.warehousedivisionlink_set.order_by( +                'order').all(): +            initial = None +            q = models.ContainerLocalisation.objects.filter( +                division=divlink, container=container) +            if q.count(): +                initial = q.all()[0].reference +            self.fields['division_{}'.format(divlink.pk)] = forms.CharField( +                label=str(divlink.division), max_length=200, initial=initial) | 
