diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-07-08 00:32:00 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-07-08 00:32:00 +0200 |
commit | 845ea77ec43d1eff4d2b11df454f5f895832d4b7 (patch) | |
tree | ded120f51f891ce3cca818e80b9b6e96928d2846 | |
parent | 92ca2d037927c4612487c6ce3aa8f2537dd3ea04 (diff) | |
download | Ishtar-845ea77ec43d1eff4d2b11df454f5f895832d4b7.tar.bz2 Ishtar-845ea77ec43d1eff4d2b11df454f5f895832d4b7.zip |
Tests to assure that operation code is unique (closes #307)
-rw-r--r-- | ishtar/ishtar_base/forms.py | 9 | ||||
-rw-r--r-- | ishtar/ishtar_base/models.py | 9 |
2 files changed, 17 insertions, 1 deletions
diff --git a/ishtar/ishtar_base/forms.py b/ishtar/ishtar_base/forms.py index 9d106aed0..d5811f38e 100644 --- a/ishtar/ishtar_base/forms.py +++ b/ishtar/ishtar_base/forms.py @@ -332,6 +332,10 @@ class Wizard(NamedUrlSessionFormWizard): if k.startswith('pk'): continue setattr(obj, k, dct[k]) + try: + obj.full_clean() + except ValidationError, msg: + return self.render(request, storage, form_list[-1]) for dependant_item in other_objs: c_item = getattr(obj, dependant_item) # manage ManyToMany if only one associated @@ -368,8 +372,11 @@ class Wizard(NamedUrlSessionFormWizard): dct[dependant_item] = c_item if 'pk' in dct: dct.pop('pk') - print self.get_saved_model() obj = self.get_saved_model()(**dct) + try: + obj.full_clean() + except ValidationError, msg: + return self.render(request, storage, form_list[-1]) obj.save() for k in adds: getattr(obj, k).add(adds[k]) diff --git a/ishtar/ishtar_base/models.py b/ishtar/ishtar_base/models.py index 0cf15f072..6de782fcf 100644 --- a/ishtar/ishtar_base/models.py +++ b/ishtar/ishtar_base/models.py @@ -678,6 +678,15 @@ class Operation(BaseHistorizedItem, OwnPerms): unicode(self.operation_code)))) return JOINT.join(items) + def clean(self): + objs = self.__class__.objects.filter(year=self.year, + operation_code=self.operation_code) + if self.pk: + objs = objs.exclude(pk=self.pk) + if objs.count(): + raise ValidationError(_(u"This operation code already exists for " + u"this year")) + def is_own(self, person): return False |