summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit845ea77ec43d1eff4d2b11df454f5f895832d4b7 (patch)
treeded120f51f891ce3cca818e80b9b6e96928d2846
parent92ca2d037927c4612487c6ce3aa8f2537dd3ea04 (diff)
downloadIshtar-845ea77ec43d1eff4d2b11df454f5f895832d4b7.tar.bz2
Ishtar-845ea77ec43d1eff4d2b11df454f5f895832d4b7.zip
Tests to assure that operation code is unique (closes #307)
-rw-r--r--ishtar/ishtar_base/forms.py9
-rw-r--r--ishtar/ishtar_base/models.py9
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