diff --git a/releasenotes/notes/django20-support-fd32553ded354e56.yaml b/releasenotes/notes/django20-support-fd32553ded354e56.yaml new file mode 100644 index 0000000..5598259 --- /dev/null +++ b/releasenotes/notes/django20-support-fd32553ded354e56.yaml @@ -0,0 +1,7 @@ +--- +upgrade: + - | + Django 2.0 is now supported and Django versions older than 1.11 are no + longer supported aligning with Django versions supported by horizon. + Note that Django 1.11 is still supported and this is the only version + when you use python 2.7. diff --git a/tox.ini b/tox.ini index 355ffc4..efc7b47 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] minversion = 1.6 -envlist = py27,pep8,py27dj18 +envlist = py27,pep8 skipsdist = True [testenv] @@ -22,20 +22,9 @@ commands = flake8 [testenv:venv] commands = {posargs} -# Django-1.8 is LTS -[testenv:py27dj18] -basepython = python2.7 -commands = pip install django>=1.8,<1.9 - /bin/bash run_tests.sh -N --no-pep8 {posargs} - -[testenv:py27dj19] -basepython = python2.7 -commands = pip install django>=1.9,<1.10 - /bin/bash run_tests.sh -N --no-pep8 {posargs} - -[testenv:py27dj110] -basepython = python2.7 -commands = pip install django>=1.10,<1.11 +[testenv:py35dj20] +basepython = python3.5 +commands = pip install django>=2.0,<2.1 /bin/bash run_tests.sh -N --no-pep8 {posargs} [testenv:py27integration] diff --git a/trove_dashboard/content/database_backups/tables.py b/trove_dashboard/content/database_backups/tables.py index 1e05b8c..f77df2d 100644 --- a/trove_dashboard/content/database_backups/tables.py +++ b/trove_dashboard/content/database_backups/tables.py @@ -13,8 +13,8 @@ # under the License. from django.conf import settings -from django.core.urlresolvers import reverse from django.template import defaultfilters as d_filters +from django.urls import reverse from django.utils.translation import pgettext_lazy from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ungettext_lazy diff --git a/trove_dashboard/content/database_backups/tests.py b/trove_dashboard/content/database_backups/tests.py index 08bedbf..8f4f39b 100644 --- a/trove_dashboard/content/database_backups/tests.py +++ b/trove_dashboard/content/database_backups/tests.py @@ -12,8 +12,8 @@ # License for the specific language governing permissions and limitations # under the License. -from django.core.urlresolvers import reverse from django import http +from django.urls import reverse from django.utils.translation import ugettext_lazy as _ from mox3.mox import IsA # noqa import six diff --git a/trove_dashboard/content/database_backups/views.py b/trove_dashboard/content/database_backups/views.py index d2fe462..2da80d6 100644 --- a/trove_dashboard/content/database_backups/views.py +++ b/trove_dashboard/content/database_backups/views.py @@ -15,7 +15,7 @@ """ Views for displaying database backups. """ -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils.translation import ugettext_lazy as _ from horizon import exceptions diff --git a/trove_dashboard/content/database_clusters/forms.py b/trove_dashboard/content/database_clusters/forms.py index c7149b4..d66bddb 100644 --- a/trove_dashboard/content/database_clusters/forms.py +++ b/trove_dashboard/content/database_clusters/forms.py @@ -16,7 +16,7 @@ import collections import uuid -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils.translation import ugettext_lazy as _ from django.views.decorators.debug import sensitive_variables # noqa diff --git a/trove_dashboard/content/database_clusters/tables.py b/trove_dashboard/content/database_clusters/tables.py index c99133b..3cf8426 100644 --- a/trove_dashboard/content/database_clusters/tables.py +++ b/trove_dashboard/content/database_clusters/tables.py @@ -14,9 +14,9 @@ # License for the specific language governing permissions and limitations # under the License. -from django.core import urlresolvers from django import shortcuts from django.template.defaultfilters import title # noqa +from django import urls from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ungettext_lazy @@ -111,7 +111,7 @@ class ResetPassword(tables.LinkAction): def get_link_url(self, datum): cluster_id = self.table.get_object_id(datum) - return urlresolvers.reverse(self.url, args=[cluster_id]) + return urls.reverse(self.url, args=[cluster_id]) class UpdateRow(tables.Row): @@ -300,7 +300,7 @@ class ClusterGrowAddInstance(tables.LinkAction): classes = ("ajax-modal",) def get_link_url(self): - return urlresolvers.reverse( + return urls.reverse( self.url, args=[self.table.kwargs['cluster_id']]) @@ -413,7 +413,7 @@ class ClusterGrowAction(tables.Action): finally: cluster_manager.delete(cluster_id) - return shortcuts.redirect(urlresolvers.reverse( + return shortcuts.redirect(urls.reverse( "horizon:project:database_clusters:index")) diff --git a/trove_dashboard/content/database_clusters/tests.py b/trove_dashboard/content/database_clusters/tests.py index 8028661..b4e777d 100644 --- a/trove_dashboard/content/database_clusters/tests.py +++ b/trove_dashboard/content/database_clusters/tests.py @@ -16,8 +16,8 @@ import logging -from django.core.urlresolvers import reverse from django import http +from django.urls import reverse from mox3.mox import IsA # noqa diff --git a/trove_dashboard/content/database_clusters/views.py b/trove_dashboard/content/database_clusters/views.py index 662f09a..f0e47f5 100644 --- a/trove_dashboard/content/database_clusters/views.py +++ b/trove_dashboard/content/database_clusters/views.py @@ -19,8 +19,8 @@ Views for managing database clusters. """ from collections import OrderedDict -from django.core.urlresolvers import reverse -from django.core.urlresolvers import reverse_lazy +from django.urls import reverse +from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ import six diff --git a/trove_dashboard/content/database_configurations/forms.py b/trove_dashboard/content/database_configurations/forms.py index 2f41e13..2be959d 100644 --- a/trove_dashboard/content/database_configurations/forms.py +++ b/trove_dashboard/content/database_configurations/forms.py @@ -12,7 +12,7 @@ # License for the specific language governing permissions and limitations # under the License. -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils.translation import ugettext_lazy as _ import six diff --git a/trove_dashboard/content/database_configurations/tables.py b/trove_dashboard/content/database_configurations/tables.py index 2e89f1d..ffb7db8 100644 --- a/trove_dashboard/content/database_configurations/tables.py +++ b/trove_dashboard/content/database_configurations/tables.py @@ -12,8 +12,8 @@ # License for the specific language governing permissions and limitations # under the License. -from django.core import urlresolvers from django import shortcuts +from django import urls from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ungettext_lazy @@ -91,7 +91,7 @@ class AddParameter(tables.LinkAction): def get_link_url(self, datum=None): configuration_id = self.table.kwargs['configuration_id'] - return urlresolvers.reverse(self.url, args=[configuration_id]) + return urls.reverse(self.url, args=[configuration_id]) class ApplyChanges(tables.Action): diff --git a/trove_dashboard/content/database_configurations/tests.py b/trove_dashboard/content/database_configurations/tests.py index ea0c291..1e2f7ba 100644 --- a/trove_dashboard/content/database_configurations/tests.py +++ b/trove_dashboard/content/database_configurations/tests.py @@ -17,8 +17,8 @@ import six import django from django.conf import settings -from django.core.urlresolvers import reverse from django import http +from django.urls import reverse from mox3.mox import IsA # noqa from trove_dashboard import api diff --git a/trove_dashboard/content/database_configurations/views.py b/trove_dashboard/content/database_configurations/views.py index 04ec842..c1f4201 100644 --- a/trove_dashboard/content/database_configurations/views.py +++ b/trove_dashboard/content/database_configurations/views.py @@ -12,8 +12,8 @@ # License for the specific language governing permissions and limitations # under the License. -from django.core.urlresolvers import reverse -from django.core.urlresolvers import reverse_lazy +from django.urls import reverse +from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ from horizon import exceptions diff --git a/trove_dashboard/content/databases/forms.py b/trove_dashboard/content/databases/forms.py index 19e2db5..1422af3 100644 --- a/trove_dashboard/content/databases/forms.py +++ b/trove_dashboard/content/databases/forms.py @@ -12,8 +12,8 @@ # License for the specific language governing permissions and limitations # under the License. -from django.core.urlresolvers import reverse from django.forms import ValidationError # noqa +from django.urls import reverse from django.utils.translation import ugettext_lazy as _ import six diff --git a/trove_dashboard/content/databases/logs/tables.py b/trove_dashboard/content/databases/logs/tables.py index 7decdd0..b7cb3cd 100644 --- a/trove_dashboard/content/databases/logs/tables.py +++ b/trove_dashboard/content/databases/logs/tables.py @@ -12,7 +12,7 @@ # License for the specific language governing permissions and limitations # under the License. -from django.core import urlresolvers +from django import urls from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ungettext_lazy @@ -129,9 +129,7 @@ class ViewLog(tables.LinkAction): def get_link_url(self, datum): instance_id = self.table.kwargs['instance_id'] - return urlresolvers.reverse(self.url, - args=(instance_id, - datum.name)) + return urls.reverse(self.url, args=(instance_id, datum.name)) def allowed(self, request, datum=None): if datum: diff --git a/trove_dashboard/content/databases/logs/tests.py b/trove_dashboard/content/databases/logs/tests.py index cb8a03d..70e8c87 100644 --- a/trove_dashboard/content/databases/logs/tests.py +++ b/trove_dashboard/content/databases/logs/tests.py @@ -14,8 +14,8 @@ import logging -from django.core.urlresolvers import reverse from django import http +from django.urls import reverse from mox3 import mox from mox3.mox import IsA # noqa diff --git a/trove_dashboard/content/databases/tables.py b/trove_dashboard/content/databases/tables.py index 4c6df78..cf25d80 100644 --- a/trove_dashboard/content/databases/tables.py +++ b/trove_dashboard/content/databases/tables.py @@ -13,8 +13,8 @@ # under the License. from django.conf import settings -from django.core import urlresolvers from django.template import defaultfilters as d_filters +from django import urls from django.utils.translation import pgettext_lazy from django.utils.translation import ugettext_lazy as _ @@ -132,7 +132,7 @@ class PromoteToReplicaSource(tables.LinkAction): def get_link_url(self, datum): instance_id = self.table.get_object_id(datum) - return urlresolvers.reverse(self.url, args=[instance_id]) + return urls.reverse(self.url, args=[instance_id]) class EjectReplicaSource(tables.BatchAction): @@ -270,9 +270,9 @@ class ManageAccess(tables.LinkAction): def get_link_url(self, datum): user = datum - return urlresolvers.reverse(self.url, args=[user.instance.id, - user.name, - user.host]) + return urls.reverse(self.url, args=[user.instance.id, + user.name, + user.host]) class CreateUser(tables.LinkAction): @@ -289,7 +289,7 @@ class CreateUser(tables.LinkAction): def get_link_url(self, datum=None): instance_id = self.table.kwargs['instance_id'] - return urlresolvers.reverse(self.url, args=[instance_id]) + return urls.reverse(self.url, args=[instance_id]) class EditUser(tables.LinkAction): @@ -306,9 +306,9 @@ class EditUser(tables.LinkAction): def get_link_url(self, datum): user = datum - return urlresolvers.reverse(self.url, args=[user.instance.id, - user.name, - user.host]) + return urls.reverse(self.url, args=[user.instance.id, + user.name, + user.host]) def has_user_add_perm(request): @@ -355,7 +355,7 @@ class CreateDatabase(tables.LinkAction): def get_link_url(self, datum=None): instance_id = self.table.kwargs['instance_id'] - return urlresolvers.reverse(self.url, args=[instance_id]) + return urls.reverse(self.url, args=[instance_id]) def has_database_add_perm(request): @@ -411,7 +411,7 @@ class CreateBackup(tables.LinkAction): request.user.has_perm('openstack.services.object-store')) def get_link_url(self, datam): - url = urlresolvers.reverse(self.url) + url = urls.reverse(self.url) return url + "?instance=%s" % datam.id @@ -426,7 +426,7 @@ class ResizeVolume(tables.LinkAction): def get_link_url(self, datum): instance_id = self.table.get_object_id(datum) - return urlresolvers.reverse(self.url, args=[instance_id]) + return urls.reverse(self.url, args=[instance_id]) class ResizeInstance(tables.LinkAction): @@ -441,7 +441,7 @@ class ResizeInstance(tables.LinkAction): def get_link_url(self, datum): instance_id = self.table.get_object_id(datum) - return urlresolvers.reverse(self.url, args=[instance_id]) + return urls.reverse(self.url, args=[instance_id]) class AttachConfiguration(tables.LinkAction): @@ -525,7 +525,7 @@ class ManageRoot(tables.LinkAction): def get_link_url(self, datum=None): instance_id = self.table.get_object_id(datum) - return urlresolvers.reverse(self.url, args=[instance_id]) + return urls.reverse(self.url, args=[instance_id]) class ManageRootTable(tables.DataTable): diff --git a/trove_dashboard/content/databases/tests.py b/trove_dashboard/content/databases/tests.py index fc70a9f..b1f27d0 100644 --- a/trove_dashboard/content/databases/tests.py +++ b/trove_dashboard/content/databases/tests.py @@ -16,8 +16,8 @@ import logging import django -from django.core.urlresolvers import reverse from django import http +from django.urls import reverse import unittest from mox3.mox import IsA # noqa diff --git a/trove_dashboard/content/databases/urls.py b/trove_dashboard/content/databases/urls.py index 1cd548b..4c0fe39 100644 --- a/trove_dashboard/content/databases/urls.py +++ b/trove_dashboard/content/databases/urls.py @@ -47,5 +47,5 @@ urlpatterns = [ name='attach_config'), url(INSTANCES % 'manage_root', views.ManageRootView.as_view(), name='manage_root'), - url(BASEINSTANCES % 'logs/', include(logs_urls, namespace='logs')), + url(BASEINSTANCES % 'logs/', include((logs_urls, 'logs'))), ] diff --git a/trove_dashboard/content/databases/views.py b/trove_dashboard/content/databases/views.py index 8f68879..244fd61 100644 --- a/trove_dashboard/content/databases/views.py +++ b/trove_dashboard/content/databases/views.py @@ -17,8 +17,8 @@ Views for managing database instances. """ from collections import OrderedDict -from django.core.urlresolvers import reverse -from django.core.urlresolvers import reverse_lazy +from django.urls import reverse +from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ import six diff --git a/trove_dashboard/content/databases/workflows/create_instance.py b/trove_dashboard/content/databases/workflows/create_instance.py index 4f120ba..6f11a23 100644 --- a/trove_dashboard/content/databases/workflows/create_instance.py +++ b/trove_dashboard/content/databases/workflows/create_instance.py @@ -13,7 +13,7 @@ # under the License. from django.conf import settings -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils.translation import ugettext_lazy as _ from horizon import exceptions