diff options
| author | Étienne Loks <etienne.loks@proxience.com> | 2015-07-14 19:07:59 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@proxience.com> | 2015-07-14 19:07:59 +0200 | 
| commit | 7e2ae23e5ed0317ab7d392313b7e98aa13bff62b (patch) | |
| tree | 7bdd80ff4f8932ab1a137e6b8c597c595ebb66db | |
| parent | fb2a59d6439c13f1eaa88e3318ed839e9b35a662 (diff) | |
| download | Ishtar-7e2ae23e5ed0317ab7d392313b7e98aa13bff62b.tar.bz2 Ishtar-7e2ae23e5ed0317ab7d392313b7e98aa13bff62b.zip | |
File: numeric index management (refs #2673)
* allow modification
* prevent assigning of the same index
| -rw-r--r-- | archaeological_files/forms.py | 16 | ||||
| -rw-r--r-- | archaeological_files/models.py | 2 | ||||
| -rw-r--r-- | archaeological_files/wizards.py | 2 | 
3 files changed, 17 insertions, 3 deletions
| diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py index ac3c9fe83..b03877a3d 100644 --- a/archaeological_files/forms.py +++ b/archaeological_files/forms.py @@ -228,7 +228,21 @@ class FileFormGeneralRO(FileFormGeneral):      year = forms.IntegerField(label=_(u"Year"),                          widget=forms.TextInput(attrs={'readonly':True}))      numeric_reference = forms.IntegerField(label=_(u"Numeric reference"), -                        widget=forms.TextInput(attrs={'readonly':True})) +                        widget=forms.TextInput()) +    id = forms.IntegerField(' ', widget=forms.HiddenInput, required=False) + +    def clean(self): +        cleaned_data = self.cleaned_data +        year = cleaned_data.get('year') +        pk = cleaned_data.get('id') +        numeric_reference = cleaned_data.get('numeric_reference') +        q = models.File.objects.filter(year=year, +                                       numeric_reference=numeric_reference +                              ).exclude(pk=pk) +        if numeric_reference and q.count(): +            raise forms.ValidationError( +                     _(u"Another file with this numeric id exists.")) +        return cleaned_data  RESPONSIBLE_PLANNING_SERVICE, created = PersonType.objects.get_or_create(                                 txt_idx='responsible_planning_service') diff --git a/archaeological_files/models.py b/archaeological_files/models.py index a1b42f722..9bdfc6146 100644 --- a/archaeological_files/models.py +++ b/archaeological_files/models.py @@ -1,6 +1,6 @@  #!/usr/bin/env python  # -*- coding: utf-8 -*- -# Copyright (C) 2012-2014 Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2012-2015 Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet>  # This program is free software: you can redistribute it and/or modify  # it under the terms of the GNU Affero General Public License as diff --git a/archaeological_files/wizards.py b/archaeological_files/wizards.py index 4ad947641..d8c137dfa 100644 --- a/archaeological_files/wizards.py +++ b/archaeological_files/wizards.py @@ -72,7 +72,7 @@ class FileWizard(OperationWizard):      def get_extra_model(self, dct, form_list):          dct = super(FileWizard, self).get_extra_model(dct, form_list) -        if not dct['numeric_reference']: +        if not dct.get('numeric_reference'):              current_ref = models.File.objects.filter(year=dct['year']                  ).aggregate(Max('numeric_reference'))["numeric_reference__max"]              dct['numeric_reference'] = current_ref and current_ref + 1 or 1 | 
