diff --git a/CHANGELOG.md b/CHANGELOG.md index 2eb4863..164dc27 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,19 @@ +Version 1.1.7 +------------------------ +* Experimental Django2.0 support +* Dropped support for Django 1.7, 1.8, 1.9, Python 3.3, Python 3.4 + + Version 1.1.6 ------------------------ * Gracefully handle models not registered in admin when rendering papertrail entry admin pages. + Version 1.1.5 ------------------------ * Update the `message` field to be a TextField. + Version 1.1.4 ------------------------ * Django 1.10 and 1.11 support. diff --git a/circle.yml b/circle.yml index 842f913..f7eba44 100644 --- a/circle.yml +++ b/circle.yml @@ -1,7 +1,7 @@ dependencies: override: - pip install tox tox-pyenv - - pyenv local 2.7.9 3.2.5 3.3.3 3.4.0 3.5.0 + - pyenv local 2.7.11 3.5.3 3.6.2 test: override: diff --git a/papertrail/__init__.py b/papertrail/__init__.py index cb8f28e..f36e7ab 100644 --- a/papertrail/__init__.py +++ b/papertrail/__init__.py @@ -1,2 +1,2 @@ -__version__ = '1.1.6' +__version__ = '1.1.7' default_app_config = 'papertrail.apps.PapertrailConfig' diff --git a/papertrail/admin.py b/papertrail/admin.py index acd8c1c..ea34e96 100644 --- a/papertrail/admin.py +++ b/papertrail/admin.py @@ -5,7 +5,6 @@ from django.conf.urls import url from django.contrib import admin from django.core import serializers -from django.core.urlresolvers import NoReverseMatch, reverse from django.db.models import Q from django.shortcuts import get_object_or_404, render from django.utils.encoding import force_text @@ -16,6 +15,11 @@ import papertrail from papertrail.models import Entry, EntryRelatedObject +try: + from django.core.urlresolvers import NoReverseMatch, reverse +except ImportError: + from django.urls import NoReverseMatch, reverse + def admin_reverse_for_model(model): return reverse('admin:{}_{}_change'.format(model._meta.app_label, model._meta.model_name), args=[model.id]) diff --git a/papertrail/migrations/0001_initial.py b/papertrail/migrations/0001_initial.py index 40cc777..981e798 100644 --- a/papertrail/migrations/0001_initial.py +++ b/papertrail/migrations/0001_initial.py @@ -35,8 +35,8 @@ class Migration(migrations.Migration): ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('relation_name', models.CharField(max_length=100, db_index=True)), ('related_id', models.PositiveIntegerField(db_index=True)), - ('entry', models.ForeignKey(related_name='targets', to='papertrail.Entry')), - ('related_content_type', models.ForeignKey(to='contenttypes.ContentType')), + ('entry', models.ForeignKey(related_name='targets', to='papertrail.Entry', on_delete=models.CASCADE)), + ('related_content_type', models.ForeignKey(to='contenttypes.ContentType', on_delete=models.CASCADE)), ], options={ }, diff --git a/papertrail/models.py b/papertrail/models.py index d2e9afd..a5c1f19 100644 --- a/papertrail/models.py +++ b/papertrail/models.py @@ -233,7 +233,7 @@ def targets_model(self): class RelatedObject(models.Model): relation_name = models.CharField(max_length=100, db_index=True) - related_content_type = models.ForeignKey(ContentType) + related_content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) related_id = models.PositiveIntegerField(db_index=True) related_object = GenericForeignKey('related_content_type', 'related_id') @@ -250,7 +250,7 @@ def safe_related_object(self): class EntryRelatedObject(RelatedObject): - entry = models.ForeignKey('Entry', related_name='targets') + entry = models.ForeignKey('Entry', related_name='targets', on_delete=models.CASCADE) owner_field_name = 'entry' diff --git a/papertrail/templatetags/papertrail.py b/papertrail/templatetags/papertrail.py index fe8a6cf..20b2dd7 100644 --- a/papertrail/templatetags/papertrail.py +++ b/papertrail/templatetags/papertrail.py @@ -1,7 +1,12 @@ from django import template -from django.core.urlresolvers import NoReverseMatch, reverse from django.db import models +try: + from django.core.urlresolvers import NoReverseMatch, reverse +except ImportError: + from django.urls import NoReverseMatch, reverse + + register = template.Library() diff --git a/setup.py b/setup.py index 3143871..8849ed8 100644 --- a/setup.py +++ b/setup.py @@ -9,10 +9,11 @@ setup( name='django-papertrail', - version='1.1.6', + version='1.1.7', packages=['papertrail'], install_requires=[ - 'Django>=1.7', + 'Django>=1.10,<2.0;python_version<"3.0"', + 'Django>=1.10;python_version>"3.0"', 'six', 'django-apptemplates', ], @@ -27,11 +28,9 @@ 'Environment :: Web Environment', 'Development Status :: 5 - Production/Stable', 'Framework :: Django', - 'Framework :: Django :: 1.7', - 'Framework :: Django :: 1.8', - 'Framework :: Django :: 1.9', 'Framework :: Django :: 1.10', 'Framework :: Django :: 1.11', + 'Framework :: Django :: 2.00', 'Intended Audience :: Developers', 'License :: OSI Approved :: Apache Software License', 'Operating System :: OS Independent', @@ -39,9 +38,8 @@ 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.3', - 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', 'Topic :: Database', 'Topic :: Internet :: WWW/HTTP', 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', diff --git a/tests/urls.py b/tests/urls.py index 4a8b247..e7c6a70 100644 --- a/tests/urls.py +++ b/tests/urls.py @@ -1,9 +1,9 @@ -from django.conf.urls import include, url +from django.conf.urls import url from django.contrib import admin admin.autodiscover() app_name = 'tests' urlpatterns = [ - url(r'^admin/', include(admin.site.urls)), + url(r'^admin/', admin.site.urls), ] diff --git a/tox.ini b/tox.ini index f169ee0..9c4819a 100644 --- a/tox.ini +++ b/tox.ini @@ -1,27 +1,23 @@ [tox] envlist = - py{27,33,34}-django{17,18}, - py{27,34,35}-django19, - py{27,35}-django110, - py{27,35}-django111, + py{27,35,36}-django110, + py{27,35,36}-django111, + py36-django200, flake8, isort [testenv] basepython = py27: python2.7 - py33: python3.3 - py34: python3.4 py35: python3.5 + py36: python3.6 commands = make test deps = psycopg2 django-jsonfield - django17: Django>=1.7,<1.8 - django18: Django>=1.8,<1.9 - django19: Django>=1.9,<1.10 django110: Django>=1.10,<1.11 django11: Django>=1.11,<1.12 + django200: Django>=2.0,<2.1 setenv = PYTHONPATH = {toxinidir} whitelist_externals = make