Fix deprecated Django 3.0 function usage (#1054)
* Replace force_text -> force_str * Replace smart_text -> smart_str * Add Django 3 to Travis CI pipeline
This commit is contained in:
parent
b76c0940a1
commit
aa9284fac6
|
@ -25,6 +25,9 @@ env:
|
|||
- DJANGO="Django==2.2.*" IMPORT_EXPORT_TEST_TYPE=postgres
|
||||
- DJANGO="Django==2.2.*" IMPORT_EXPORT_TEST_TYPE=mysql-innodb
|
||||
- DJANGO="Django==2.2.*" IMPORT_EXPORT_TEST_TYPE=sqlite
|
||||
- DJANGO="Django==3.0.*" IMPORT_EXPORT_TEST_TYPE=postgres
|
||||
- DJANGO="Django==3.0.*" IMPORT_EXPORT_TEST_TYPE=mysql-innodb
|
||||
- DJANGO="Django==3.0.*" IMPORT_EXPORT_TEST_TYPE=sqlite
|
||||
- DJANGO="https://github.com/django/django/archive/master.tar.gz" IMPORT_EXPORT_TEST_TYPE=postgres
|
||||
- DJANGO="https://github.com/django/django/archive/master.tar.gz" IMPORT_EXPORT_TEST_TYPE=mysql-innodb
|
||||
- DJANGO="https://github.com/django/django/archive/master.tar.gz" IMPORT_EXPORT_TEST_TYPE=sqlite
|
||||
|
@ -36,6 +39,12 @@ matrix:
|
|||
env: DJANGO="https://github.com/django/django/archive/master.tar.gz" IMPORT_EXPORT_TEST_TYPE=sqlite
|
||||
- python: "3.5"
|
||||
env: DJANGO="https://github.com/django/django/archive/master.tar.gz" IMPORT_EXPORT_TEST_TYPE=mysql-innodb
|
||||
- python: "3.5"
|
||||
env: DJANGO="Django==3.0.*" IMPORT_EXPORT_TEST_TYPE=postgres
|
||||
- python: "3.5"
|
||||
env: DJANGO="Django==3.0.*" IMPORT_EXPORT_TEST_TYPE=sqlite
|
||||
- python: "3.5"
|
||||
env: DJANGO="Django==3.0.*" IMPORT_EXPORT_TEST_TYPE=mysql-innodb
|
||||
install:
|
||||
- pip install -q $DJANGO
|
||||
- pip install tablib==0.12.1
|
||||
|
|
|
@ -13,7 +13,7 @@ from django.http import HttpResponse, HttpResponseRedirect
|
|||
from django.template.response import TemplateResponse
|
||||
from django.urls import reverse
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.encoding import force_str
|
||||
from django.utils.module_loading import import_string
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.views.decorators.http import require_POST
|
||||
|
@ -143,7 +143,7 @@ class ImportMixin(ImportExportMixinBase):
|
|||
tmp_storage = self.get_tmp_storage_class()(name=confirm_form.cleaned_data['import_file_name'])
|
||||
data = tmp_storage.read(input_format.get_read_mode())
|
||||
if not input_format.is_binary() and self.from_encoding:
|
||||
data = force_text(data, self.from_encoding)
|
||||
data = force_str(data, self.from_encoding)
|
||||
dataset = input_format.create_dataset(data)
|
||||
|
||||
result = self.process_dataset(dataset, confirm_form, request, *args, **kwargs)
|
||||
|
@ -292,7 +292,7 @@ class ImportMixin(ImportExportMixinBase):
|
|||
try:
|
||||
data = tmp_storage.read(input_format.get_read_mode())
|
||||
if not input_format.is_binary() and self.from_encoding:
|
||||
data = force_text(data, self.from_encoding)
|
||||
data = force_str(data, self.from_encoding)
|
||||
dataset = input_format.create_dataset(data)
|
||||
except UnicodeDecodeError as e:
|
||||
return HttpResponse(_(u"<h1>Imported file has a wrong encoding: %s</h1>" % e))
|
||||
|
|
|
@ -21,7 +21,7 @@ from django.db.transaction import (
|
|||
savepoint_commit,
|
||||
savepoint_rollback
|
||||
)
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.encoding import force_str
|
||||
from django.utils.safestring import mark_safe
|
||||
|
||||
from . import widgets
|
||||
|
@ -177,7 +177,7 @@ class Diff:
|
|||
for v1, v2 in zip(self.left, self.right):
|
||||
if v1 != v2 and self.new:
|
||||
v1 = ""
|
||||
diff = dmp.diff_main(force_text(v1), force_text(v2))
|
||||
diff = dmp.diff_main(force_str(v1), force_str(v2))
|
||||
dmp.diff_cleanupSemantic(diff)
|
||||
html = dmp.diff_prettyHtml(diff)
|
||||
html = mark_safe(html)
|
||||
|
@ -382,7 +382,7 @@ class Resource(metaclass=DeclarativeMetaclass):
|
|||
self.import_field(field, obj, data)
|
||||
except ValueError as e:
|
||||
errors[field.attribute] = ValidationError(
|
||||
force_text(e), code="invalid")
|
||||
force_str(e), code="invalid")
|
||||
if errors:
|
||||
raise ValidationError(errors)
|
||||
|
||||
|
@ -528,7 +528,7 @@ class Resource(metaclass=DeclarativeMetaclass):
|
|||
self.save_m2m(instance, row, using_transactions, dry_run)
|
||||
# Add object info to RowResult for LogEntry
|
||||
row_result.object_id = instance.pk
|
||||
row_result.object_repr = force_text(instance)
|
||||
row_result.object_repr = force_str(instance)
|
||||
diff.compare_with(self, instance, dry_run)
|
||||
|
||||
row_result.diff = diff.as_html()
|
||||
|
@ -685,7 +685,7 @@ class Resource(metaclass=DeclarativeMetaclass):
|
|||
|
||||
def get_export_headers(self):
|
||||
headers = [
|
||||
force_text(field.column_name) for field in self.get_export_fields()]
|
||||
force_str(field.column_name) for field in self.get_export_fields()]
|
||||
return headers
|
||||
|
||||
def get_user_visible_fields(self):
|
||||
|
|
|
@ -6,7 +6,7 @@ from django.conf import settings
|
|||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.utils import datetime_safe, timezone
|
||||
from django.utils.dateparse import parse_duration
|
||||
from django.utils.encoding import force_text, smart_text
|
||||
from django.utils.encoding import force_str, smart_str
|
||||
|
||||
|
||||
class Widget:
|
||||
|
@ -38,7 +38,7 @@ class Widget:
|
|||
:meth:`~import_export.widgets.Widget.render` takes care of converting
|
||||
the object's field to a value that can be written to a spreadsheet.
|
||||
"""
|
||||
return force_text(value)
|
||||
return force_str(value)
|
||||
|
||||
|
||||
class NumberWidget(Widget):
|
||||
|
@ -94,7 +94,7 @@ class CharWidget(Widget):
|
|||
"""
|
||||
|
||||
def render(self, value, obj=None):
|
||||
return force_text(value)
|
||||
return force_str(value)
|
||||
|
||||
|
||||
class BooleanWidget(Widget):
|
||||
|
@ -416,5 +416,5 @@ class ManyToManyWidget(Widget):
|
|||
})
|
||||
|
||||
def render(self, value, obj=None):
|
||||
ids = [smart_text(getattr(obj, self.field)) for obj in value.all()]
|
||||
ids = [smart_str(getattr(obj, self.field)) for obj in value.all()]
|
||||
return self.separator.join(ids)
|
||||
|
|
|
@ -14,4 +14,4 @@ known_standard_library=tablib
|
|||
known_first_party=import_export
|
||||
multi_line_output=3
|
||||
line_length=100
|
||||
indent=4
|
||||
indent=4
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import os
|
||||
|
||||
from django.test import TestCase
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.encoding import force_str
|
||||
|
||||
from import_export.formats import base_formats
|
||||
|
||||
|
@ -65,7 +65,7 @@ class CSVTest(TestCase):
|
|||
'exports',
|
||||
'books-unicode.csv')
|
||||
with open(filename, self.format.get_read_mode()) as in_stream:
|
||||
data = force_text(in_stream.read())
|
||||
data = force_str(in_stream.read())
|
||||
base_formats.CSV().create_dataset(data)
|
||||
|
||||
|
||||
|
@ -93,5 +93,5 @@ class TSVTest(TestCase):
|
|||
'exports',
|
||||
'books-unicode.tsv')
|
||||
with open(filename, self.format.get_read_mode()) as in_stream:
|
||||
data = force_text(in_stream.read())
|
||||
data = force_str(in_stream.read())
|
||||
base_formats.TSV().create_dataset(data)
|
||||
|
|
|
@ -18,7 +18,7 @@ class FieldTest(TestCase):
|
|||
self.field = fields.Field(column_name='name', attribute='name')
|
||||
self.row = {
|
||||
'name': 'Foo',
|
||||
}
|
||||
}
|
||||
self.obj = Obj(name='Foo', date=date(2012, 8, 13))
|
||||
|
||||
def test_clean(self):
|
||||
|
@ -39,6 +39,7 @@ class FieldTest(TestCase):
|
|||
class name:
|
||||
class follow:
|
||||
me = 'bar'
|
||||
|
||||
test = Test()
|
||||
field = fields.Field(column_name='name', attribute='name__follow__me')
|
||||
row = {'name': 'foo'}
|
||||
|
@ -73,3 +74,8 @@ class FieldTest(TestCase):
|
|||
|
||||
self.field.save(self.obj, row)
|
||||
self.assertIsNone(self.obj.name)
|
||||
|
||||
def test_repr(self):
|
||||
self.assertEqual(repr(self.field), '<import_export.fields.Field: name>')
|
||||
self.field.column_name = None
|
||||
self.assertEqual(repr(self.field), '<import_export.fields.Field>')
|
||||
|
|
|
@ -12,7 +12,7 @@ from django.contrib.auth.models import User
|
|||
from django.db import DatabaseError, IntegrityError
|
||||
from django.db.models import Count
|
||||
from django.test import TestCase, TransactionTestCase, skipUnlessDBFeature
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.encoding import force_str
|
||||
from django.utils.html import strip_tags
|
||||
|
||||
from import_export import fields, resources, results, widgets
|
||||
|
@ -921,7 +921,7 @@ class ModelResourceTransactionTest(TransactionTestCase):
|
|||
|
||||
category_field = resource.fields['categories']
|
||||
categories_diff = row_diff[fields.index(category_field)]
|
||||
self.assertEqual(strip_tags(categories_diff), force_text(cat1.pk))
|
||||
self.assertEqual(strip_tags(categories_diff), force_str(cat1.pk))
|
||||
|
||||
# check that it is really rollbacked
|
||||
self.assertFalse(Book.objects.filter(name='FooBook'))
|
||||
|
|
Loading…
Reference in New Issue