From f52daf6b5fdfa5eaff82758bbed4e8a8d3488bee Mon Sep 17 00:00:00 2001 From: Massimo Scamarcia Date: Tue, 20 Mar 2018 17:06:20 +0100 Subject: [PATCH 1/4] Fix Django 1.10 and 2.0 compatibility - Handle "aggregate_select" deprecated method from django.db.sql.query.Query. - Import "reverse" compatible with both versions 1.10 and 2.0. --- django_tablib/admin/__init__.py | 9 ++++++++- django_tablib/datasets.py | 5 ++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/django_tablib/admin/__init__.py b/django_tablib/admin/__init__.py index 60b9d51..173e682 100644 --- a/django_tablib/admin/__init__.py +++ b/django_tablib/admin/__init__.py @@ -5,7 +5,14 @@ import django from distutils.version import LooseVersion from django.contrib import admin -from django.core.urlresolvers import reverse + +try: + # Django <= 1.10 + from django.core.urlresolvers import reverse +except ImportError: + # Django >= 2.0 + from django.urls import reverse + from django.http import Http404 diff --git a/django_tablib/datasets.py b/django_tablib/datasets.py index c683dee..cd68cf9 100644 --- a/django_tablib/datasets.py +++ b/django_tablib/datasets.py @@ -20,7 +20,10 @@ def __init__(self, queryset, headers=None, encoding='utf-8'): # django < 1.9 field_names = v_qs.field_names headers.extend(field_names) - headers.extend(v_qs.query.aggregate_select) + + if hasattr(v_qs.query, 'aggregate_select'): + # Django < 1.10 + headers.extend(v_qs.query.aggregate_select) self.header_list = headers self.attr_list = headers From f581b91879037b381425be442e5baa45336ae5a1 Mon Sep 17 00:00:00 2001 From: Massimo Scamarcia Date: Sun, 13 May 2018 20:15:28 +0200 Subject: [PATCH 2/4] Add Django >= 1.10 "annotation_select" support. --- django_tablib/datasets.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/django_tablib/datasets.py b/django_tablib/datasets.py index cd68cf9..32f3947 100644 --- a/django_tablib/datasets.py +++ b/django_tablib/datasets.py @@ -20,10 +20,13 @@ def __init__(self, queryset, headers=None, encoding='utf-8'): # django < 1.9 field_names = v_qs.field_names headers.extend(field_names) - + if hasattr(v_qs.query, 'aggregate_select'): # Django < 1.10 headers.extend(v_qs.query.aggregate_select) + elif hasattr(v_qs.query, 'annotation_select'): + # Django >= 1.10 + headers.extend(v_qs.query.annotation_select) self.header_list = headers self.attr_list = headers From ac9140f84bf42b87a6f0cf324fc85ed69364fde5 Mon Sep 17 00:00:00 2001 From: Massimo Scamarcia Date: Sun, 13 May 2018 20:23:29 +0200 Subject: [PATCH 3/4] Update tablib to 0.12.1 --- testproject/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testproject/requirements.txt b/testproject/requirements.txt index e649f97..e1b1fe2 100644 --- a/testproject/requirements.txt +++ b/testproject/requirements.txt @@ -1,2 +1,2 @@ Django==1.6 -tablib==0.9.11 +tablib==0.12.1 From 52508025a209d6f55015b14492cc24b6235c6286 Mon Sep 17 00:00:00 2001 From: Massimo Scamarcia Date: Sun, 13 May 2018 20:31:07 +0200 Subject: [PATCH 4/4] Update testproject's Django to 1.8 for Python 3.5 support --- testproject/requirements.txt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/testproject/requirements.txt b/testproject/requirements.txt index e1b1fe2..8521981 100644 --- a/testproject/requirements.txt +++ b/testproject/requirements.txt @@ -1,2 +1,12 @@ -Django==1.6 +Django==1.8 +django-tablib==3.2 +et-xmlfile==1.0.1 +jdcal==1.4 +odfpy==1.3.6 +openpyxl==2.5.3 +PyYAML==3.12 +six==1.11.0 tablib==0.12.1 +unicodecsv==0.14.1 +xlrd==1.1.0 +xlwt==1.3.0