From f7074a29177fc9284dfe816b9f413e278416e279 Mon Sep 17 00:00:00 2001 From: Ilya Baryshev Date: Mon, 27 Nov 2017 09:40:54 +0300 Subject: [PATCH 1/2] Add Django 2.0rc1 support, drop <1.11 support --- .travis.yml | 11 ++--------- ajax_select/fields.py | 2 +- ajax_select/lookup_channel.py | 4 ++-- example/example/settings.py | 2 +- tests/models.py | 2 +- tests/settings.py | 2 +- tests/test_integration.py | 9 ++------- tests/urls.py | 2 +- tox.ini | 9 +++------ 9 files changed, 14 insertions(+), 29 deletions(-) diff --git a/.travis.yml b/.travis.yml index 77f6543dcd..37a645a42a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,16 +3,9 @@ sudo: false env: - TOX_ENV=py27-flake8 - TOX_ENV=py34-flake8 - - TOX_ENV=py27-dj17 - - TOX_ENV=py27-dj18 - - TOX_ENV=py27-dj19 - - TOX_ENV=py27-dj110 - TOX_ENV=py27-dj111 - - TOX_ENV=py34-dj17 - - TOX_ENV=py34-dj18 - - TOX_ENV=py34-dj19 - - TOX_ENV=py34-dj110 - - TOX_ENV=py34-dj111 + - TOX_ENV=py36-dj111 + - TOX_ENV=py36-dj20 install: - pip install -r requirements-test.txt script: diff --git a/ajax_select/fields.py b/ajax_select/fields.py index 4b55af582d..6de2e20999 100644 --- a/ajax_select/fields.py +++ b/ajax_select/fields.py @@ -439,7 +439,7 @@ def autoselect_fields_check_can_add(form, model, user): for name, form_field in form.declared_fields.items(): if isinstance(form_field, (AutoCompleteSelectMultipleField, AutoCompleteSelectField)): db_field = model._meta.get_field(name) - form_field.check_can_add(user, db_field.rel.to) + form_field.check_can_add(user, db_field.remote_field.model) def make_plugin_options(lookup, channel_name, widget_plugin_options, initial): diff --git a/ajax_select/lookup_channel.py b/ajax_select/lookup_channel.py index 4feb307e88..3e0474f5be 100644 --- a/ajax_select/lookup_channel.py +++ b/ajax_select/lookup_channel.py @@ -95,9 +95,9 @@ def get_objects(self, ids): list: list of Model objects """ # Inherited models have a OneToOneField (rather than eg AutoField) - if self.model._meta.pk.rel is not None: + if self.model._meta.pk.remote_field is not None: # Use the type of the field being referenced - pk_type = self.model._meta.pk.rel.field.to_python + pk_type = self.model._meta.pk.remote_field.field.to_python else: pk_type = self.model._meta.pk.to_python diff --git a/example/example/settings.py b/example/example/settings.py index 2ab7022270..f3df4e3803 100644 --- a/example/example/settings.py +++ b/example/example/settings.py @@ -16,7 +16,7 @@ #################################### ) -MIDDLEWARE_CLASSES = ( +MIDDLEWARE = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware' diff --git a/tests/models.py b/tests/models.py index 37cd02eb19..509d4a781f 100644 --- a/tests/models.py +++ b/tests/models.py @@ -35,7 +35,7 @@ class Book(models.Model): """ Book has no admin, its an inline in the Author admin""" - author = models.ForeignKey(Author, null=True) + author = models.ForeignKey(Author, null=True, on_delete=models.CASCADE) name = models.CharField(max_length=50) mentions_persons = models.ManyToManyField(Person, help_text="MENTIONS PERSONS HELP TEXT") diff --git a/tests/settings.py b/tests/settings.py index 96d4a4654a..1d8fb50e32 100644 --- a/tests/settings.py +++ b/tests/settings.py @@ -18,7 +18,7 @@ "tests" ] SITE_ID = 1 -MIDDLEWARE_CLASSES = ( +MIDDLEWARE = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware' diff --git a/tests/test_integration.py b/tests/test_integration.py index cec95a9176..0a02a22d1c 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -6,19 +6,14 @@ should be unit tested in test_fields.py """ from __future__ import unicode_literals -import django from django.forms.models import ModelForm from django.test import TestCase, Client -from django.core.urlresolvers import reverse +from django.urls import reverse from django.contrib.auth.models import User from tests.models import Book, Author, Person from ajax_select import fields -# Other versions will autoload -if django.VERSION[1] < 7: - from tests import lookups # noqa - # --------------- setup ----------------------------------- # @@ -48,7 +43,7 @@ def test_render_no_data(self): def _make_instance(self): author = Author.objects.create(name="author") book = Book.objects.create(name="book", author=author) - book.mentions_persons = [Person.objects.create(name='person')] + book.mentions_persons.set([Person.objects.create(name='person')]) return book def _book_data(self, book): diff --git a/tests/urls.py b/tests/urls.py index 9b70099602..6d2e03362d 100644 --- a/tests/urls.py +++ b/tests/urls.py @@ -10,5 +10,5 @@ urlpatterns = [ url(r'^ajax_lookups/', include(ajax_select_urls)), - url(r'^admin/', include(admin.site.urls)), + url(r'^admin/', include((admin.site.get_urls(), 'admin'), namespace='admin')), ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) diff --git a/tox.ini b/tox.ini index a5622b0226..bf89b00d12 100644 --- a/tox.ini +++ b/tox.ini @@ -6,8 +6,8 @@ ; [tox] envlist = - {py27,py34}-flake8, - {py27,py34}-{dj17,dj18,dj19,dj110,dj111} + {py27,py36}-flake8, + py27-dj111,py36-dj111,py36-dj20 [testenv] @@ -16,11 +16,8 @@ setenv = PYTHONPATH = {toxinidir}:{toxinidir}/ajax_select:{toxinidir}/tests commands = django-admin.py test tests deps = - dj17: Django>=1.7.11,<1.8 - dj18: Django>=1.8.18,<1.9 - dj19: Django>=1.9.13,<1.10 - dj110: Django>=1.10.8,<1.11 dj111: Django>=1.11.5,<1.12 + dj20: Django>=2.0rc1,<2.1 ; djmaster: https://github.com/django/django/zipball/master [testenv:py27-flake8] From 1d55b4ad54bb02d2194d0ff44957506840ab5cb5 Mon Sep 17 00:00:00 2001 From: Ilya Baryshev Date: Mon, 27 Nov 2017 09:43:16 +0300 Subject: [PATCH 2/2] fixup tox & travis configs (wrong python versions) --- .travis.yml | 2 +- tox.ini | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 37a645a42a..588f4422c6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,7 @@ language: python sudo: false env: - TOX_ENV=py27-flake8 - - TOX_ENV=py34-flake8 + - TOX_ENV=py36-flake8 - TOX_ENV=py27-dj111 - TOX_ENV=py36-dj111 - TOX_ENV=py36-dj20 diff --git a/tox.ini b/tox.ini index bf89b00d12..d0a28015bf 100644 --- a/tox.ini +++ b/tox.ini @@ -25,7 +25,7 @@ deps = flake8 commands = flake8 ajax_select tests example -[testenv:py34-flake8] +[testenv:py36-flake8] deps = flake8 commands = flake8 ajax_select tests example