From 8b451393c24c67256d97dbb27c5b0c511bc7d610 Mon Sep 17 00:00:00 2001 From: Angelo Dini Date: Tue, 18 Aug 2020 14:47:51 +0200 Subject: [PATCH 1/5] Added Django 3.1 support --- .travis.yml | 32 ++++++++----------- CHANGELOG.rst | 8 +++++ README.rst | 6 ++-- aldryn_config.py | 1 - djangocms_snippet/__init__.py | 1 - djangocms_snippet/admin.py | 1 - djangocms_snippet/apps.py | 3 +- djangocms_snippet/cms_plugins.py | 3 +- djangocms_snippet/migrations/0001_initial.py | 3 -- .../migrations/0002_snippet_slug.py | 3 -- .../migrations/0003_auto_data_fill_slug.py | 3 -- .../migrations/0004_auto_alter_slug_unique.py | 3 -- ...0005_set_related_name_for_cmsplugin_ptr.py | 3 -- .../migrations/0006_auto_20160831_0729.py | 3 -- .../0007_auto_alter_template_helptext.py | 3 -- .../migrations/0008_auto_change_name.py | 3 -- djangocms_snippet/migrations/__init__.py | 1 - djangocms_snippet/models.py | 9 +----- djangocms_snippet/templatetags/__init__.py | 1 - .../templatetags/snippet_tags.py | 7 ++-- setup.py | 18 ++++------- tests/__init__.py | 1 - tests/settings.py | 1 - tests/test_migrations.py | 8 ++--- tests/test_models.py | 1 - tests/test_plugins.py | 1 - tests/test_templatetags.py | 1 - tox.ini | 15 ++++----- 28 files changed, 46 insertions(+), 97 deletions(-) diff --git a/.travis.yml b/.travis.yml index b9e762a3..d5efac84 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ language: python dist: xenial -sudo: false matrix: include: @@ -9,34 +8,31 @@ matrix: env: TOX_ENV='flake8' - python: 3.5 env: TOX_ENV='isort' - # Django 1.11 - - python: 2.7 - env: DJANGO='dj111' CMS='cms34' - - python: 3.4 - env: DJANGO='dj111' CMS='cms35' - - python: 3.5 - env: DJANGO='dj111' CMS='cms36' - - python: 3.6 - env: DJANGO='dj111' CMS='cms37' - # Django 2.1 - - python: 3.6 - env: DJANGO='dj21' CMS='cms36' - - python: 3.6 - env: DJANGO='dj21' CMS='cms37' # Django 2.2 + - python: 3.5 + env: DJANGO='dj22' CMS='cms37' - python: 3.6 env: DJANGO='dj22' CMS='cms37' - python: 3.7 env: DJANGO='dj22' CMS='cms37' - + - python: 3.8 + env: DJANGO='dj22' CMS='cms37' + # Django 3.0, always run the lowest supported version + - python: 3.6 + env: DJANGO='dj30' CMS='cms37' + # Django 3.1, always run the lowest supported version + - python: 3.6 + env: DJANGO='dj31' CMS='cms38' + allow_failures: + - python: 3.6 + env: DJANGO='dj31' CMS='cms38' install: - pip install coverage isort tox - - "if [[ $TRAVIS_PYTHON_VERSION == '2.7' ]]; then export PY_VER=py27; fi" - - "if [[ $TRAVIS_PYTHON_VERSION == '3.4' ]]; then export PY_VER=py34; fi" - "if [[ $TRAVIS_PYTHON_VERSION == '3.5' ]]; then export PY_VER=py35; fi" - "if [[ $TRAVIS_PYTHON_VERSION == '3.6' ]]; then export PY_VER=py36; fi" - "if [[ $TRAVIS_PYTHON_VERSION == '3.7' ]]; then export PY_VER=py37; fi" + - "if [[ $TRAVIS_PYTHON_VERSION == '3.8' ]]; then export PY_VER=py37; fi" - "if [[ ${DJANGO}z != 'z' ]]; then export TOX_ENV=$PY_VER-$DJANGO-$CMS; fi" script: diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 3eefffd4..318462dd 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -3,6 +3,14 @@ Changelog ========= +3.0.0 (unreleased) +================== + +* Added support for Django 3.1 +* Dropped support for Python 2.7 and Python 3.4 +* Dropped support for Django < 2.2 + + 2.3.0 (2020-01-29) ================== diff --git a/README.rst b/README.rst index 6574ee8b..60bec6a6 100644 --- a/README.rst +++ b/README.rst @@ -119,9 +119,9 @@ You can run tests by executing:: .. |coverage| image:: https://codecov.io/gh/divio/djangocms-snippet/branch/master/graph/badge.svg :target: https://codecov.io/gh/divio/djangocms-snippet -.. |python| image:: https://img.shields.io/badge/python-2.7%20%7C%203.4+-blue.svg +.. |python| image:: https://img.shields.io/badge/python-3.5+-blue.svg :target: https://pypi.org/project/djangocms-snippet/ -.. |django| image:: https://img.shields.io/badge/django-1.11%20%7C%202.1%20%7C%202.2-blue.svg +.. |django| image:: https://img.shields.io/badge/django-2.2,%203.0,%203.1-blue.svg :target: https://www.djangoproject.com/ -.. |djangocms| image:: https://img.shields.io/badge/django%20CMS-3.4%2B-blue.svg +.. |djangocms| image:: https://img.shields.io/badge/django%20CMS-3.7%2B-blue.svg :target: https://www.django-cms.org/ diff --git a/aldryn_config.py b/aldryn_config.py index d43852c0..3e532b2c 100644 --- a/aldryn_config.py +++ b/aldryn_config.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- from aldryn_client import forms diff --git a/djangocms_snippet/__init__.py b/djangocms_snippet/__init__.py index 8e4f66d6..cb2852a3 100644 --- a/djangocms_snippet/__init__.py +++ b/djangocms_snippet/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- __version__ = '2.3.0' default_app_config = 'djangocms_snippet.apps.SnippetConfig' diff --git a/djangocms_snippet/admin.py b/djangocms_snippet/admin.py index 8e6d30ab..9187fadd 100644 --- a/djangocms_snippet/admin.py +++ b/djangocms_snippet/admin.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- from django.conf import settings from django.contrib import admin from django.db import models diff --git a/djangocms_snippet/apps.py b/djangocms_snippet/apps.py index d6a863f4..898fdf2c 100644 --- a/djangocms_snippet/apps.py +++ b/djangocms_snippet/apps.py @@ -1,6 +1,5 @@ -# -*- coding: utf-8 -*- from django.apps import AppConfig -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ class SnippetConfig(AppConfig): diff --git a/djangocms_snippet/cms_plugins.py b/djangocms_snippet/cms_plugins.py index 26a5e37f..bf432da9 100644 --- a/djangocms_snippet/cms_plugins.py +++ b/djangocms_snippet/cms_plugins.py @@ -1,9 +1,8 @@ -# -*- coding: utf-8 -*- from django import template from django.conf import settings from django.utils.html import escape from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from cms.plugin_base import CMSPluginBase from cms.plugin_pool import plugin_pool diff --git a/djangocms_snippet/migrations/0001_initial.py b/djangocms_snippet/migrations/0001_initial.py index abe79022..96a5a9a7 100644 --- a/djangocms_snippet/migrations/0001_initial.py +++ b/djangocms_snippet/migrations/0001_initial.py @@ -1,6 +1,3 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - import django.db.models.deletion from django.db import migrations, models diff --git a/djangocms_snippet/migrations/0002_snippet_slug.py b/djangocms_snippet/migrations/0002_snippet_slug.py index 0ab15993..77d3ce84 100644 --- a/djangocms_snippet/migrations/0002_snippet_slug.py +++ b/djangocms_snippet/migrations/0002_snippet_slug.py @@ -1,6 +1,3 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - from django.db import migrations, models diff --git a/djangocms_snippet/migrations/0003_auto_data_fill_slug.py b/djangocms_snippet/migrations/0003_auto_data_fill_slug.py index 4abfd953..a8a404b1 100644 --- a/djangocms_snippet/migrations/0003_auto_data_fill_slug.py +++ b/djangocms_snippet/migrations/0003_auto_data_fill_slug.py @@ -1,6 +1,3 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - from collections import Counter from django.db import migrations, models diff --git a/djangocms_snippet/migrations/0004_auto_alter_slug_unique.py b/djangocms_snippet/migrations/0004_auto_alter_slug_unique.py index 999c388b..713a390c 100644 --- a/djangocms_snippet/migrations/0004_auto_alter_slug_unique.py +++ b/djangocms_snippet/migrations/0004_auto_alter_slug_unique.py @@ -1,6 +1,3 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - from django.db import migrations, models diff --git a/djangocms_snippet/migrations/0005_set_related_name_for_cmsplugin_ptr.py b/djangocms_snippet/migrations/0005_set_related_name_for_cmsplugin_ptr.py index be9b8252..77ca9123 100644 --- a/djangocms_snippet/migrations/0005_set_related_name_for_cmsplugin_ptr.py +++ b/djangocms_snippet/migrations/0005_set_related_name_for_cmsplugin_ptr.py @@ -1,6 +1,3 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - import django.db.models.deletion from django.db import migrations, models diff --git a/djangocms_snippet/migrations/0006_auto_20160831_0729.py b/djangocms_snippet/migrations/0006_auto_20160831_0729.py index 0a187db5..909e3f8c 100644 --- a/djangocms_snippet/migrations/0006_auto_20160831_0729.py +++ b/djangocms_snippet/migrations/0006_auto_20160831_0729.py @@ -1,6 +1,3 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - from django.db import migrations, models diff --git a/djangocms_snippet/migrations/0007_auto_alter_template_helptext.py b/djangocms_snippet/migrations/0007_auto_alter_template_helptext.py index 86285e8e..aa98f3a7 100644 --- a/djangocms_snippet/migrations/0007_auto_alter_template_helptext.py +++ b/djangocms_snippet/migrations/0007_auto_alter_template_helptext.py @@ -1,6 +1,3 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - from django.db import migrations, models diff --git a/djangocms_snippet/migrations/0008_auto_change_name.py b/djangocms_snippet/migrations/0008_auto_change_name.py index 6ec173af..311456f9 100644 --- a/djangocms_snippet/migrations/0008_auto_change_name.py +++ b/djangocms_snippet/migrations/0008_auto_change_name.py @@ -1,7 +1,4 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.9 on 2018-10-12 10:03 -from __future__ import unicode_literals - from django.db import migrations diff --git a/djangocms_snippet/migrations/__init__.py b/djangocms_snippet/migrations/__init__.py index 40a96afc..e69de29b 100644 --- a/djangocms_snippet/migrations/__init__.py +++ b/djangocms_snippet/migrations/__init__.py @@ -1 +0,0 @@ -# -*- coding: utf-8 -*- diff --git a/djangocms_snippet/models.py b/djangocms_snippet/models.py index 5420abc5..23f27144 100644 --- a/djangocms_snippet/models.py +++ b/djangocms_snippet/models.py @@ -1,21 +1,15 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - from django.conf import settings from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from cms.models import CMSPlugin -from six import python_2_unicode_compatible - # Search is enabled by default to keep backwards compatibility. SEARCH_ENABLED = getattr(settings, 'DJANGOCMS_SNIPPET_SEARCH', False) # Stores the actual data -@python_2_unicode_compatible class Snippet(models.Model): """ A snippet of HTML or a Django template @@ -57,7 +51,6 @@ class Meta: # Plugin model - just a pointer to Snippet -@python_2_unicode_compatible class SnippetPtr(CMSPlugin): # Add an app namespace to related_name to avoid field name clashes # with any other plugins that have a field with the same name as the diff --git a/djangocms_snippet/templatetags/__init__.py b/djangocms_snippet/templatetags/__init__.py index 40a96afc..e69de29b 100644 --- a/djangocms_snippet/templatetags/__init__.py +++ b/djangocms_snippet/templatetags/__init__.py @@ -1 +0,0 @@ -# -*- coding: utf-8 -*- diff --git a/djangocms_snippet/templatetags/snippet_tags.py b/djangocms_snippet/templatetags/snippet_tags.py index 33a063e1..8a87fddb 100644 --- a/djangocms_snippet/templatetags/snippet_tags.py +++ b/djangocms_snippet/templatetags/snippet_tags.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- """ Snippet template tags """ @@ -7,9 +6,7 @@ from django import template from django.utils.html import escape from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ - -from six import string_types +from django.utils.translation import gettext_lazy as _ from djangocms_snippet.models import Snippet @@ -67,7 +64,7 @@ def render(self, context): snippet_instance = self.snippet_id_varname.resolve(context) # Assume this is slug with exceptionless(self.parse_until): - if isinstance(snippet_instance, string_types): + if isinstance(snippet_instance, str): snippet_instance = Snippet.objects.get(slug=snippet_instance) # Assume this is an id elif isinstance(snippet_instance, int): # pragma: no cover diff --git a/setup.py b/setup.py index 2218853c..c22a9e10 100644 --- a/setup.py +++ b/setup.py @@ -1,12 +1,11 @@ #!/usr/bin/env python -# -*- coding: utf-8 -*- from setuptools import find_packages, setup from djangocms_snippet import __version__ REQUIREMENTS = [ - 'django-cms>=3.4.5', + 'django-cms>=3.7', ] @@ -17,22 +16,19 @@ 'License :: OSI Approved :: BSD License', 'Operating System :: OS Independent', 'Programming Language :: Python', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', 'Framework :: Django', - 'Framework :: Django :: 1.11', - 'Framework :: Django :: 2.1', 'Framework :: Django :: 2.2', + 'Framework :: Django :: 3.0', + 'Framework :: Django :: 3.1', 'Framework :: Django CMS', - 'Framework :: Django CMS :: 3.4', - 'Framework :: Django CMS :: 3.5', 'Framework :: Django CMS :: 3.6', 'Framework :: Django CMS :: 3.7', + 'Framework :: Django CMS :: 3.8', 'Topic :: Internet :: WWW/HTTP', 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', 'Topic :: Software Development', @@ -46,10 +42,10 @@ author='Divio AG', author_email='info@divio.ch', url='https://github.com/divio/djangocms-snippet', - license='BSD', + license='BSD-3-Clause', description='Adds snippet plugin to django CMS.', long_description=open('README.rst').read(), - packages=find_packages(exclude=['tests']), + packages=find_packages(), include_package_data=True, zip_safe=False, install_requires=REQUIREMENTS, diff --git a/tests/__init__.py b/tests/__init__.py index 40a96afc..e69de29b 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1 +0,0 @@ -# -*- coding: utf-8 -*- diff --git a/tests/settings.py b/tests/settings.py index 36198c76..5656cebe 100644 --- a/tests/settings.py +++ b/tests/settings.py @@ -1,5 +1,4 @@ #!/usr/bin/env python -# -*- coding: utf-8 -*- HELPER_SETTINGS = { 'INSTALLED_APPS': [ 'tests.utils', diff --git a/tests/test_migrations.py b/tests/test_migrations.py index 071e0799..9cdc8dbf 100644 --- a/tests/test_migrations.py +++ b/tests/test_migrations.py @@ -1,12 +1,10 @@ -# -*- coding: utf-8 -*- # original from # http://tech.octopus.energy/news/2016/01/21/testing-for-missing-migrations-in-django.html +from ui import StringIO + from django.core.management import call_command from django.test import TestCase, override_settings -from six import text_type -from six.moves import StringIO - class MigrationTestCase(TestCase): @@ -23,7 +21,7 @@ def test_for_missing_migrations(self): try: call_command('makemigrations', **options) except SystemExit as e: - status_code = text_type(e) + status_code = str(e) else: # the "no changes" exit code is 0 status_code = '0' diff --git a/tests/test_models.py b/tests/test_models.py index 0a438606..077e0010 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- from django.test import TestCase from djangocms_snippet.models import SEARCH_ENABLED, Snippet, SnippetPtr diff --git a/tests/test_plugins.py b/tests/test_plugins.py index cf96a09c..6e4e6767 100644 --- a/tests/test_plugins.py +++ b/tests/test_plugins.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- from cms.api import add_plugin, create_page from cms.test_utils.testcases import CMSTestCase diff --git a/tests/test_templatetags.py b/tests/test_templatetags.py index 19c2a404..b1bb45b5 100644 --- a/tests/test_templatetags.py +++ b/tests/test_templatetags.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- from django.core.exceptions import ObjectDoesNotExist from django.template import Context, Template from django.template.exceptions import TemplateSyntaxError diff --git a/tox.ini b/tox.ini index d8f606a3..f6a62fad 100644 --- a/tox.ini +++ b/tox.ini @@ -2,9 +2,9 @@ envlist = flake8 isort - py{27,34,35,36}-dj111-cms{34,35,36} - py{27,35,36}-dj111-cms37 - py{35,36,37}-dj{21,22}-cms{36,37} + py{35,36,37,38}-dj{22}-cms{37,38} + py{36,37,38}-dj{30}-cms{37,38} + py{36,37,38}-dj{31}-cms{38} skip_missing_interpreters=True @@ -40,14 +40,11 @@ known_django = django [testenv] deps = -r{toxinidir}/tests/requirements.txt - dj111: Django>=1.11,<2.0 - dj111: django-formtools>=2.0,<2.1 - dj21: Django>=2.1,<2.2 dj22: Django>=2.2,<3.0 - cms34: django-cms>=3.4,<3.5 - cms35: django-cms>=3.5,<3.6 - cms36: django-cms>=3.6,<3.7 + dj30: Django>=3.0,<3.1 + dj31: Django>=3.1,<3.2 cms37: django-cms>=3.7,<3.8 + cms38: django-cms>=3.8,<3.9 commands = {envpython} --version {env:COMMAND:coverage} erase From b71301774433e7fd617e58a87f47e394320d1327 Mon Sep 17 00:00:00 2001 From: Angelo Dini Date: Tue, 18 Aug 2020 14:50:12 +0200 Subject: [PATCH 2/5] fix typo --- tests/test_migrations.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_migrations.py b/tests/test_migrations.py index 9cdc8dbf..29c4a94b 100644 --- a/tests/test_migrations.py +++ b/tests/test_migrations.py @@ -1,6 +1,6 @@ # original from # http://tech.octopus.energy/news/2016/01/21/testing-for-missing-migrations-in-django.html -from ui import StringIO +from io import StringIO from django.core.management import call_command from django.test import TestCase, override_settings From 45ab9aaf09bdb5d326f131c0df57bac6c88b00d4 Mon Sep 17 00:00:00 2001 From: Angelo Dini Date: Fri, 21 Aug 2020 10:46:02 +0200 Subject: [PATCH 3/5] remove not supported version --- setup.py | 1 - 1 file changed, 1 deletion(-) diff --git a/setup.py b/setup.py index c22a9e10..df1d6b97 100644 --- a/setup.py +++ b/setup.py @@ -26,7 +26,6 @@ 'Framework :: Django :: 3.0', 'Framework :: Django :: 3.1', 'Framework :: Django CMS', - 'Framework :: Django CMS :: 3.6', 'Framework :: Django CMS :: 3.7', 'Framework :: Django CMS :: 3.8', 'Topic :: Internet :: WWW/HTTP', From 9ff9aec727d7ac5ac0a387a5565d81e81870bc4d Mon Sep 17 00:00:00 2001 From: Angelo Dini Date: Wed, 26 Aug 2020 14:13:38 +0200 Subject: [PATCH 4/5] rename license file --- LICENSE.txt => LICENSE | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename LICENSE.txt => LICENSE (100%) diff --git a/LICENSE.txt b/LICENSE similarity index 100% rename from LICENSE.txt rename to LICENSE From 8f5cf00c0b8443bc9ff70e83a13d31cd5146808e Mon Sep 17 00:00:00 2001 From: Angelo Dini Date: Wed, 26 Aug 2020 14:26:55 +0200 Subject: [PATCH 5/5] also adapt manifest file --- MANIFEST.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MANIFEST.in b/MANIFEST.in index 1f43104a..2ef81de1 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,4 +1,4 @@ -include LICENSE.txt +include LICENSE include README.rst recursive-include djangocms_snippet/locale * recursive-include djangocms_snippet/templates *