Skip to content

Commit 5b2e4a5

Browse files
committed
- new VersioError Exception
- fixed tampered with error message - merge master
1 parent 2761ecc commit 5b2e4a5

File tree

4 files changed

+15
-13
lines changed

4 files changed

+15
-13
lines changed

concurrency/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import datetime
33
import os
44

5-
VERSION = __version__ = (0, 4, 0, 'rc', 5)
5+
VERSION = __version__ = (0, 4, 0, 'rc', 6)
66
__author__ = 'sax'
77

88

concurrency/exceptions.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
from django.core.exceptions import ValidationError
1+
from django.core.exceptions import ValidationError, SuspiciousOperation
2+
from django.utils.translation import ugettext as _
23
from django.db import DatabaseError
34

45

@@ -14,3 +15,8 @@ def __init__(self, *args, **kwargs):
1415

1516
class InconsistencyError(DatabaseError):
1617
pass
18+
19+
20+
class VersionError(SuspiciousOperation):
21+
def __init__(self, message=None, code=None, params=None):
22+
self.message = message or _("Version number is missing or has been tampered with")

concurrency/forms.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from django.utils.safestring import mark_safe
88
from django.utils.translation import ugettext as _
99
from concurrency.core import _select_lock, RecordModifiedError
10+
from concurrency.exceptions import VersionError
1011

1112

1213
class ConcurrentForm(ModelForm):
@@ -91,7 +92,7 @@ def to_python(self, value):
9192
return int(self._signer.unsign(value))
9293
return 0
9394
except (BadSignature, ValueError):
94-
raise SuspiciousOperation(_('Version number seems tampered'))
95+
raise VersionError()
9596

9697
def widget_attrs(self, widget):
9798
return {}

concurrency/tests/forms.py

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from django.utils.encoding import smart_str
66
from django.test import TestCase
77
from concurrency.core import InconsistencyError
8+
from concurrency.exceptions import VersionError
89
from concurrency.forms import ConcurrentForm, VersionField, VersionFieldSigner, VersionWidget
910
from concurrency.tests import TestModel0, TestIssue3Model
1011
from django.test.testcases import SimpleTestCase
@@ -44,23 +45,17 @@ def test_with_dummy_signer(self):
4445
self.assertEqual(1, f.clean('1'))
4546
self.assertEqual(0, f.clean(None))
4647
self.assertEqual(0, f.clean(''))
47-
self.assertRaisesMessage(SuspiciousOperation,
48-
"Version number seems tampered", f.clean, 'aa:bb')
49-
self.assertRaisesMessage(SuspiciousOperation,
50-
"Version number seems tampered", f.clean, 1.5)
48+
self.assertRaises(VersionError, f.clean, 'aa:bb')
49+
self.assertRaises(VersionError, f.clean, 1.5)
5150

5251
def test(self):
5352
f = VersionField()
5453
self.assertEqual(1, f.clean(VersionFieldSigner().sign(1)))
5554
self.assertEqual(1, f.clean(VersionFieldSigner().sign('1')))
5655
self.assertEqual(0, f.clean(None))
5756
self.assertEqual(0, f.clean(''))
58-
self.assertRaisesMessage(SuspiciousOperation,
59-
"Version number seems tampered", f.clean, '100')
60-
self.assertRaisesMessage(SuspiciousOperation,
61-
"Version number seems tampered",
62-
f.clean,
63-
VersionFieldSigner().sign(1.5))
57+
self.assertRaises(VersionError, f.clean, '100')
58+
self.assertRaises(VersionError, f.clean, VersionFieldSigner().sign(1.5))
6459

6560

6661
class ConcurrentFormTest(TestCase):

0 commit comments

Comments
 (0)