summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_warehouse/forms.py')
-rw-r--r--archaeological_warehouse/forms.py77
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)