summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit05fca7f6b77e155b1a0fd721e2c19243061e716b (patch)
tree7bdd80ff4f8932ab1a137e6b8c597c595ebb66db
parentd90d5d320c9cf2ade01591d40429dce8736ade3a (diff)
downloadIshtar-05fca7f6b77e155b1a0fd721e2c19243061e716b.tar.bz2
Ishtar-05fca7f6b77e155b1a0fd721e2c19243061e716b.zip
File: numeric index management (refs #2673)
* allow modification * prevent assigning of the same index
-rw-r--r--archaeological_files/forms.py16
-rw-r--r--archaeological_files/models.py2
-rw-r--r--archaeological_files/wizards.py2
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