diff options
Diffstat (limited to 'archaeological_warehouse/forms.py')
| -rw-r--r-- | archaeological_warehouse/forms.py | 27 | 
1 files changed, 22 insertions, 5 deletions
| diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py index 99855bf0b..05e0860cb 100644 --- a/archaeological_warehouse/forms.py +++ b/archaeological_warehouse/forms.py @@ -183,6 +183,8 @@ class WarehouseForm(CustomForm, ManageOldType, forms.Form):          if 'person_in_charge' in dct and dct['person_in_charge']:              dct['person_in_charge'] = models.Person.objects.get(                  pk=dct['person_in_charge']) +        if not dct.get("spatial_reference_system", None): +            dct.pop("spatial_reference_system")          new_item = models.Warehouse(**dct)          new_item.save()          return new_item @@ -205,14 +207,14 @@ class ContainerForm(CustomForm, ManageOldType, forms.Form):      old_reference = forms.CharField(label=_(u"Old reference"), required=False,                                      max_length=200)      container_type = forms.ChoiceField(label=_(u"Container type"), choices=[]) -    location = forms.IntegerField( -        label=_(u"Current location (warehouse)"), +    responsible = forms.IntegerField( +        label=_(u"Responsible warehouse"),          widget=widgets.JQueryAutoComplete(              reverse_lazy('autocomplete-warehouse'),              associated_model=models.Warehouse, new=True),          validators=[valid_id(models.Warehouse)]) -    responsible = forms.IntegerField( -        label=_(u"Responsible warehouse"), +    location = forms.IntegerField( +        label=_(u"Current location (warehouse)"),          widget=widgets.JQueryAutoComplete(              reverse_lazy('autocomplete-warehouse'),              associated_model=models.Warehouse, new=True), @@ -223,11 +225,26 @@ class ContainerForm(CustomForm, ManageOldType, forms.Form):          FieldType('container_type', models.ContainerType),      ] +    class Media: +        js = ('forms/container.js',) +      def __init__(self, *args, **kwargs):          if 'limits' in kwargs:              kwargs.pop('limits')          super(ContainerForm, self).__init__(*args, **kwargs) +    def clean(self): +        cleaned_data = self.cleaned_data +        warehouse = cleaned_data.get("location") +        q = models.Container.objects.filter( +            reference=cleaned_data.get("reference"), location__pk=warehouse) +        if 'pk' in cleaned_data and cleaned_data['pk']: +            q = q.exclude(pk=int(cleaned_data['pk'])) +        if q.count(): +            raise forms.ValidationError(_(u"This reference already exists for " +                                          u"this warehouse.")) +        return cleaned_data +      def save(self, user):          dct = self.cleaned_data          dct['history_modifier'] = user @@ -256,7 +273,7 @@ class ContainerModifyForm(ContainerForm):      def clean(self):          # manage unique ID -        cleaned_data = self.cleaned_data +        cleaned_data = super(ContainerModifyForm, self).clean()          index = cleaned_data.get("index")          warehouse = cleaned_data.get("location")          q = models.Container.objects.filter( | 
