diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-04-15 21:53:27 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-04-15 21:53:27 +0200 |
commit | 559a0fd6b5a946458dee7b90910bb19a09c5362e (patch) | |
tree | 8f5c2a45f3afa5be9e1793f13ce5642fad2199ed /archaeological_files/wizards.py | |
parent | 12f1b8bfb85b951616f4ff7ac0dce0424f09704d (diff) | |
download | Ishtar-559a0fd6b5a946458dee7b90910bb19a09c5362e.tar.bz2 Ishtar-559a0fd6b5a946458dee7b90910bb19a09c5362e.zip |
File wizard: manage unicity of numeric reference on multiple edit
Diffstat (limited to 'archaeological_files/wizards.py')
-rw-r--r-- | archaeological_files/wizards.py | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/archaeological_files/wizards.py b/archaeological_files/wizards.py index 6e1e3ba03..ea06a48f7 100644 --- a/archaeological_files/wizards.py +++ b/archaeological_files/wizards.py @@ -50,13 +50,25 @@ class FileWizard(OperationWizard): def done(self, form_list, **kwargs): ''' - Save parcels + Save parcels and make numeric_reference unique ''' r = super(FileWizard, self).done(form_list, return_object=True, **kwargs) if type(r) not in (list, tuple) or len(r) != 2: return r obj, res = r + # numeric_reference check + if not self.modification: + numeric_reference = obj.numeric_reference + changed = False + while obj.__class__.objects.filter( + numeric_reference=numeric_reference, + year=obj.year).exclude(pk=obj.pk).count(): + numeric_reference += 1 + changed = True + if changed: + obj.numeric_reference = numeric_reference + obj.save() obj.parcels.clear() for form in form_list: if not hasattr(form, 'prefix') \ |