Skip to content

Commit 1beb67f

Browse files
committed
enable ConcurrentModelAdmin.check only on django>=1.11
1 parent a4e5460 commit 1beb67f

File tree

4 files changed

+36
-27
lines changed

4 files changed

+36
-27
lines changed

src/concurrency/admin.py

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
from concurrency import core, forms
2323
from concurrency.api import get_revision_of_object
24+
from concurrency.compat import DJANGO_11
2425
from concurrency.config import CONCURRENCY_LIST_EDITABLE_POLICY_ABORT_ALL, conf
2526
from concurrency.exceptions import RecordModifiedError
2627
from concurrency.forms import ConcurrentForm, VersionWidget
@@ -254,30 +255,31 @@ class ConcurrentModelAdmin(ConcurrencyActionMixin,
254255
form = ConcurrentForm
255256
formfield_overrides = {forms.VersionField: {'widget': VersionWidget}}
256257

257-
def check(self, **kwargs):
258-
errors = []
259-
if self.fields:
260-
version_field = self.model._concurrencymeta.field
261-
if version_field.name not in self.fields:
262-
errors.append(
263-
Error(
264-
'Missed version field in {} fields definition'.format(self),
265-
hint="Please add '{}' to the 'fields' attribute".format(version_field.name),
266-
obj=None,
267-
id='concurrency.A001',
258+
if DJANGO_11:
259+
def check(self, **kwargs):
260+
errors = []
261+
if self.fields:
262+
version_field = self.model._concurrencymeta.field
263+
if version_field.name not in self.fields:
264+
errors.append(
265+
Error(
266+
'Missed version field in {} fields definition'.format(self),
267+
hint="Please add '{}' to the 'fields' attribute".format(version_field.name),
268+
obj=None,
269+
id='concurrency.A001',
270+
)
268271
)
269-
)
270-
if self.fieldsets:
271-
version_field = self.model._concurrencymeta.field
272-
fields = flatten([v['fields'] for k, v in self.fieldsets])
273-
274-
if version_field.name not in fields:
275-
errors.append(
276-
Error(
277-
'Missed version field in {} fieldsets definition'.format(self),
278-
hint="Please add '{}' to the 'fieldsets' attribute".format(version_field.name),
279-
obj=None,
280-
id='concurrency.A002',
272+
if self.fieldsets:
273+
version_field = self.model._concurrencymeta.field
274+
fields = flatten([v['fields'] for k, v in self.fieldsets])
275+
276+
if version_field.name not in fields:
277+
errors.append(
278+
Error(
279+
'Missed version field in {} fieldsets definition'.format(self),
280+
hint="Please add '{}' to the 'fieldsets' attribute".format(version_field.name),
281+
obj=None,
282+
id='concurrency.A002',
283+
)
281284
)
282-
)
283-
return errors
285+
return errors

src/concurrency/compat.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# -*- coding: utf-8 -*-
22
from __future__ import absolute_import, print_function, unicode_literals
33

4+
import django
5+
46
try:
57
from django.template.base import TemplateDoesNotExist
68
except ImportError:
@@ -16,3 +18,5 @@
1618
from django.urls.utils import get_callable
1719
except ImportError:
1820
from django.core.urlresolvers import get_callable # noqa
21+
22+
DJANGO_11 = django.VERSION[:2] == (1,11)

tests/conftest.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515

1616
skippypy = pytest.mark.skipif(PYPY, reason='skip on pypy')
1717

18-
# skipIfDjangoVersion = lambda v: pytest.mark.skipif("django.VERSION[:2]>={}".format(v),
19-
# reason="Skip if django>={}".format(v))
18+
skipIfDjangoVersion = lambda v: pytest.mark.skipif("django.VERSION[:2]{}".format(v),
19+
reason="Skip if django{}".format(v))
2020

2121

2222
def pytest_configure():

tests/test_issues.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from django.utils.encoding import force_text
1515

1616
from concurrency.exceptions import RecordModifiedError
17+
from conftest import skipIfDjangoVersion
1718
from demo.admin import ActionsModelAdmin, admin_register
1819
from demo.base import AdminTestCase
1920
from demo.models import ListEditableConcurrentModel, ReversionConcurrentModel, SimpleConcurrentModel
@@ -115,6 +116,7 @@ def test_issue_54():
115116
m2.save()
116117

117118

119+
@skipIfDjangoVersion("<(1,11)")
118120
@pytest.mark.django_db()
119121
def test_issue_81a(monkeypatch):
120122
monkeypatch.setattr('demo.admin.ActionsModelAdmin.fields', ('id',))
@@ -123,6 +125,7 @@ def test_issue_81a(monkeypatch):
123125
assert 'concurrency.A001' in e.value.message
124126

125127

128+
@skipIfDjangoVersion("<(1,11)")
126129
@pytest.mark.django_db()
127130
def test_issue_81b(monkeypatch):
128131
fieldsets = (

0 commit comments

Comments
 (0)