diff options
Diffstat (limited to 'archaeological_warehouse/forms.py')
| -rw-r--r-- | archaeological_warehouse/forms.py | 40 | 
1 files changed, 28 insertions, 12 deletions
| diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py index 553a01ce5..94e31b759 100644 --- a/archaeological_warehouse/forms.py +++ b/archaeological_warehouse/forms.py @@ -20,6 +20,7 @@  from django import forms  from django.conf import settings  from django.forms.formsets import formset_factory +from django.utils.safestring import mark_safe  from django.utils.translation import ugettext_lazy as _  from ishtar_common.models import Person, valid_id @@ -27,7 +28,7 @@ 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, ManageOldType, FinalForm +    get_form_selection, TableSelect, ManageOldType, FinalForm, FormSet  from archaeological_finds.forms import FindMultipleFormSelection, \      SelectFindBasketForm @@ -57,8 +58,15 @@ class SelectedDivisionForm(ManageOldType, forms.Form):              initial=self.init_data.get('division')          ) + +class DivisionFormSet(FormSet): +    def clean(self): +        """Checks that no divisions are duplicated.""" +        return self.check_duplicate(('division',), +                                    _("There are identical divisions.")) +  SelectedDivisionFormset = formset_factory( -    SelectedDivisionForm, can_delete=True) +    SelectedDivisionForm, can_delete=True, formset=DivisionFormSet)  SelectedDivisionFormset.form_label = _(u"Divisions") @@ -92,7 +100,7 @@ class WarehouseForm(ManageOldType, forms.Form):      associated_models = {'warehouse_type': models.WarehouseType,                           'person_in_charge': Person} -    name = forms.CharField(label=_(u"Name"), max_length=40, +    name = forms.CharField(label=_(u"Name"), max_length=200,                             validators=[name_validator])      warehouse_type = forms.ChoiceField(label=_(u"Warehouse type"),                                         choices=[]) @@ -100,7 +108,7 @@ class WarehouseForm(ManageOldType, forms.Form):          label=_(u"Person in charge"),          widget=widgets.JQueryAutoComplete(              reverse_lazy('autocomplete-person'), -            associated_model=Person), +            associated_model=Person, new=True),          validators=[valid_id(Person)],          required=False)      comment = forms.CharField(label=_(u"Comment"), widget=forms.Textarea, @@ -148,6 +156,7 @@ class WarehouseDeletionForm(FinalForm):  class ContainerForm(ManageOldType, forms.Form):      form_label = _(u"Container") +    file_upload = True      associated_models = {'container_type': models.ContainerType,                           'location': models.Warehouse,                           'responsible': models.Warehouse} @@ -165,6 +174,13 @@ class ContainerForm(ManageOldType, forms.Form):              reverse_lazy('autocomplete-warehouse'),              associated_model=models.Warehouse, new=True),          validators=[valid_id(models.Warehouse)]) +    image = forms.ImageField( +        label=_(u"Image"), help_text=mark_safe( +            _(u"<p>Heavy images are resized to: %(width)dx%(height)d " +              u"(ratio is preserved).</p>") % { +                'width': settings.IMAGE_MAX_SIZE[0], +                'height': settings.IMAGE_MAX_SIZE[1]}), +        max_length=255, required=False, widget=widgets.ImageFileInput())      comment = forms.CharField(label=_(u"Comment"),                                widget=forms.Textarea, required=False) @@ -192,7 +208,7 @@ class ContainerForm(ManageOldType, forms.Form):  class ContainerModifyForm(ContainerForm):      pk = forms.IntegerField(required=False, widget=forms.HiddenInput) -    index = forms.IntegerField(_(u"Index")) +    index = forms.IntegerField(label=_(u"ID"))      def __init__(self, *args, **kwargs):          super(ContainerModifyForm, self).__init__(*args, **kwargs) @@ -264,20 +280,20 @@ class LocalisationForm(forms.Form):      form_label = _(u"Localisation")      def __init__(self, *args, **kwargs): -        container, warehouse = None, None +        self.container, self.warehouse = None, None          if 'warehouse' in kwargs: -            warehouse = kwargs.pop('warehouse') +            self.warehouse = kwargs.pop('warehouse')          if 'container' in kwargs: -            container = kwargs.pop('container') +            self.container = kwargs.pop('container')          super(LocalisationForm, self).__init__(*args, **kwargs) -        if not warehouse: +        if not self.warehouse:              return -        for divlink in warehouse.warehousedivisionlink_set.order_by( +        for divlink in self.warehouse.warehousedivisionlink_set.order_by(                  'order').all():              initial = u"-" -            if container: +            if self.container:                  q = models.ContainerLocalisation.objects.filter( -                    division=divlink, container=container) +                    division=divlink, container=self.container)                  if q.count():                      initial = q.all()[0].reference              self.fields['division_{}'.format(divlink.pk)] = forms.CharField( | 
