mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-05-16 13:53:44 +03:00
Merge pull request #4824 from auvipy/newv
new matrix for python 3.6 and django 1.11
This commit is contained in:
commit
5e9249f429
16
.travis.yml
16
.travis.yml
|
@ -2,7 +2,6 @@ language: python
|
||||||
|
|
||||||
python:
|
python:
|
||||||
- "2.7"
|
- "2.7"
|
||||||
- "3.3"
|
|
||||||
- "3.4"
|
- "3.4"
|
||||||
- "3.5"
|
- "3.5"
|
||||||
|
|
||||||
|
@ -12,6 +11,7 @@ env:
|
||||||
- DJANGO=1.8
|
- DJANGO=1.8
|
||||||
- DJANGO=1.9
|
- DJANGO=1.9
|
||||||
- DJANGO=1.10
|
- DJANGO=1.10
|
||||||
|
- DJANGO=1.11
|
||||||
- DJANGO=master
|
- DJANGO=master
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
|
@ -19,19 +19,23 @@ matrix:
|
||||||
include:
|
include:
|
||||||
- python: "3.6"
|
- python: "3.6"
|
||||||
env: DJANGO=master
|
env: DJANGO=master
|
||||||
|
- python: "3.6"
|
||||||
|
env: DJANGO=1.11
|
||||||
|
- python: "3.3"
|
||||||
|
env: DJANGO=1.18
|
||||||
- python: "2.7"
|
- python: "2.7"
|
||||||
env: TOXENV="lint"
|
env: TOXENV="lint"
|
||||||
- python: "2.7"
|
- python: "2.7"
|
||||||
env: TOXENV="docs"
|
env: TOXENV="docs"
|
||||||
exclude:
|
exclude:
|
||||||
- python: "3.3"
|
- python: "2.7"
|
||||||
env: DJANGO=1.9
|
|
||||||
- python: "3.3"
|
|
||||||
env: DJANGO=1.10
|
|
||||||
- python: "3.3"
|
|
||||||
env: DJANGO=master
|
env: DJANGO=master
|
||||||
|
- python: "3.4"
|
||||||
|
env: DJANGO=master
|
||||||
|
|
||||||
allow_failures:
|
allow_failures:
|
||||||
- env: DJANGO=master
|
- env: DJANGO=master
|
||||||
|
- env: DJANGO=1.11
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- pip install tox tox-travis
|
- pip install tox tox-travis
|
||||||
|
|
|
@ -312,3 +312,12 @@ def set_many(instance, field, value):
|
||||||
else:
|
else:
|
||||||
field = getattr(instance, field)
|
field = getattr(instance, field)
|
||||||
field.set(value)
|
field.set(value)
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
# A `utc` instance is available in Django 1.11+
|
||||||
|
from django.utils.timezone import utc
|
||||||
|
except ImportError:
|
||||||
|
# A `UTC` class is available in older versions
|
||||||
|
from django.utils.timezone import UTC
|
||||||
|
utc = UTC()
|
||||||
|
|
|
@ -32,7 +32,7 @@ from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from rest_framework import ISO_8601
|
from rest_framework import ISO_8601
|
||||||
from rest_framework.compat import (
|
from rest_framework.compat import (
|
||||||
get_remote_field, unicode_repr, unicode_to_repr, value_from_object
|
get_remote_field, unicode_repr, unicode_to_repr, utc, value_from_object
|
||||||
)
|
)
|
||||||
from rest_framework.exceptions import ErrorDetail, ValidationError
|
from rest_framework.exceptions import ErrorDetail, ValidationError
|
||||||
from rest_framework.settings import api_settings
|
from rest_framework.settings import api_settings
|
||||||
|
@ -1104,7 +1104,7 @@ class DateTimeField(Field):
|
||||||
if (field_timezone is not None) and not timezone.is_aware(value):
|
if (field_timezone is not None) and not timezone.is_aware(value):
|
||||||
return timezone.make_aware(value, field_timezone)
|
return timezone.make_aware(value, field_timezone)
|
||||||
elif (field_timezone is None) and timezone.is_aware(value):
|
elif (field_timezone is None) and timezone.is_aware(value):
|
||||||
return timezone.make_naive(value, timezone.UTC())
|
return timezone.make_naive(value, utc)
|
||||||
return value
|
return value
|
||||||
|
|
||||||
def default_timezone(self):
|
def default_timezone(self):
|
||||||
|
|
|
@ -8,10 +8,11 @@ from decimal import Decimal
|
||||||
import pytest
|
import pytest
|
||||||
from django.http import QueryDict
|
from django.http import QueryDict
|
||||||
from django.test import TestCase, override_settings
|
from django.test import TestCase, override_settings
|
||||||
from django.utils import six, timezone
|
from django.utils import six
|
||||||
|
|
||||||
import rest_framework
|
import rest_framework
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
from rest_framework.compat import utc
|
||||||
from rest_framework.fields import is_simple_callable
|
from rest_framework.fields import is_simple_callable
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -1129,13 +1130,13 @@ class TestDateTimeField(FieldValues):
|
||||||
Valid and invalid values for `DateTimeField`.
|
Valid and invalid values for `DateTimeField`.
|
||||||
"""
|
"""
|
||||||
valid_inputs = {
|
valid_inputs = {
|
||||||
'2001-01-01 13:00': datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()),
|
'2001-01-01 13:00': datetime.datetime(2001, 1, 1, 13, 00, tzinfo=utc),
|
||||||
'2001-01-01T13:00': datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()),
|
'2001-01-01T13:00': datetime.datetime(2001, 1, 1, 13, 00, tzinfo=utc),
|
||||||
'2001-01-01T13:00Z': datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()),
|
'2001-01-01T13:00Z': datetime.datetime(2001, 1, 1, 13, 00, tzinfo=utc),
|
||||||
datetime.datetime(2001, 1, 1, 13, 00): datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()),
|
datetime.datetime(2001, 1, 1, 13, 00): datetime.datetime(2001, 1, 1, 13, 00, tzinfo=utc),
|
||||||
datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()): datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()),
|
datetime.datetime(2001, 1, 1, 13, 00, tzinfo=utc): datetime.datetime(2001, 1, 1, 13, 00, tzinfo=utc),
|
||||||
# Django 1.4 does not support timezone string parsing.
|
# Django 1.4 does not support timezone string parsing.
|
||||||
'2001-01-01T13:00Z': datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC())
|
'2001-01-01T13:00Z': datetime.datetime(2001, 1, 1, 13, 00, tzinfo=utc)
|
||||||
}
|
}
|
||||||
invalid_inputs = {
|
invalid_inputs = {
|
||||||
'abc': ['Datetime has wrong format. Use one of these formats instead: YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HH:MM|-HH:MM|Z].'],
|
'abc': ['Datetime has wrong format. Use one of these formats instead: YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HH:MM|-HH:MM|Z].'],
|
||||||
|
@ -1144,13 +1145,13 @@ class TestDateTimeField(FieldValues):
|
||||||
}
|
}
|
||||||
outputs = {
|
outputs = {
|
||||||
datetime.datetime(2001, 1, 1, 13, 00): '2001-01-01T13:00:00',
|
datetime.datetime(2001, 1, 1, 13, 00): '2001-01-01T13:00:00',
|
||||||
datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()): '2001-01-01T13:00:00Z',
|
datetime.datetime(2001, 1, 1, 13, 00, tzinfo=utc): '2001-01-01T13:00:00Z',
|
||||||
'2001-01-01T00:00:00': '2001-01-01T00:00:00',
|
'2001-01-01T00:00:00': '2001-01-01T00:00:00',
|
||||||
six.text_type('2016-01-10T00:00:00'): '2016-01-10T00:00:00',
|
six.text_type('2016-01-10T00:00:00'): '2016-01-10T00:00:00',
|
||||||
None: None,
|
None: None,
|
||||||
'': None,
|
'': None,
|
||||||
}
|
}
|
||||||
field = serializers.DateTimeField(default_timezone=timezone.UTC())
|
field = serializers.DateTimeField(default_timezone=utc)
|
||||||
|
|
||||||
|
|
||||||
class TestCustomInputFormatDateTimeField(FieldValues):
|
class TestCustomInputFormatDateTimeField(FieldValues):
|
||||||
|
@ -1158,13 +1159,13 @@ class TestCustomInputFormatDateTimeField(FieldValues):
|
||||||
Valid and invalid values for `DateTimeField` with a custom input format.
|
Valid and invalid values for `DateTimeField` with a custom input format.
|
||||||
"""
|
"""
|
||||||
valid_inputs = {
|
valid_inputs = {
|
||||||
'1:35pm, 1 Jan 2001': datetime.datetime(2001, 1, 1, 13, 35, tzinfo=timezone.UTC()),
|
'1:35pm, 1 Jan 2001': datetime.datetime(2001, 1, 1, 13, 35, tzinfo=utc),
|
||||||
}
|
}
|
||||||
invalid_inputs = {
|
invalid_inputs = {
|
||||||
'2001-01-01T20:50': ['Datetime has wrong format. Use one of these formats instead: hh:mm[AM|PM], DD [Jan-Dec] YYYY.']
|
'2001-01-01T20:50': ['Datetime has wrong format. Use one of these formats instead: hh:mm[AM|PM], DD [Jan-Dec] YYYY.']
|
||||||
}
|
}
|
||||||
outputs = {}
|
outputs = {}
|
||||||
field = serializers.DateTimeField(default_timezone=timezone.UTC(), input_formats=['%I:%M%p, %d %b %Y'])
|
field = serializers.DateTimeField(default_timezone=utc, input_formats=['%I:%M%p, %d %b %Y'])
|
||||||
|
|
||||||
|
|
||||||
class TestCustomOutputFormatDateTimeField(FieldValues):
|
class TestCustomOutputFormatDateTimeField(FieldValues):
|
||||||
|
@ -1196,7 +1197,7 @@ class TestNaiveDateTimeField(FieldValues):
|
||||||
Valid and invalid values for `DateTimeField` with naive datetimes.
|
Valid and invalid values for `DateTimeField` with naive datetimes.
|
||||||
"""
|
"""
|
||||||
valid_inputs = {
|
valid_inputs = {
|
||||||
datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()): datetime.datetime(2001, 1, 1, 13, 00),
|
datetime.datetime(2001, 1, 1, 13, 00, tzinfo=utc): datetime.datetime(2001, 1, 1, 13, 00),
|
||||||
'2001-01-01 13:00': datetime.datetime(2001, 1, 1, 13, 00),
|
'2001-01-01 13:00': datetime.datetime(2001, 1, 1, 13, 00),
|
||||||
}
|
}
|
||||||
invalid_inputs = {}
|
invalid_inputs = {}
|
||||||
|
|
7
tox.ini
7
tox.ini
|
@ -5,7 +5,8 @@ addopts=--tb=short
|
||||||
envlist =
|
envlist =
|
||||||
{py27,py33,py34,py35}-django18,
|
{py27,py33,py34,py35}-django18,
|
||||||
{py27,py34,py35}-django{19,110},
|
{py27,py34,py35}-django{19,110},
|
||||||
{py27,py34,py35,py36}-djangomaster,
|
{py27,py34,py35,py36}-django111,
|
||||||
|
{py35,py36}-djangomaster
|
||||||
lint,docs
|
lint,docs
|
||||||
|
|
||||||
[travis:env]
|
[travis:env]
|
||||||
|
@ -13,6 +14,7 @@ DJANGO =
|
||||||
1.8: django18
|
1.8: django18
|
||||||
1.9: django19
|
1.9: django19
|
||||||
1.10: django110
|
1.10: django110
|
||||||
|
1.11: django111
|
||||||
master: djangomaster
|
master: djangomaster
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
|
@ -22,8 +24,9 @@ setenv =
|
||||||
PYTHONWARNINGS=once
|
PYTHONWARNINGS=once
|
||||||
deps =
|
deps =
|
||||||
django18: Django>=1.8,<1.9
|
django18: Django>=1.8,<1.9
|
||||||
django19: Django>=1.9,<.1.10
|
django19: Django>=1.9,<1.10
|
||||||
django110: Django>=1.10,<1.11
|
django110: Django>=1.10,<1.11
|
||||||
|
django111: Django>=1.11a1,<2.0
|
||||||
djangomaster: https://github.com/django/django/archive/master.tar.gz
|
djangomaster: https://github.com/django/django/archive/master.tar.gz
|
||||||
-rrequirements/requirements-testing.txt
|
-rrequirements/requirements-testing.txt
|
||||||
-rrequirements/requirements-optionals.txt
|
-rrequirements/requirements-optionals.txt
|
||||||
|
|
Loading…
Reference in New Issue
Block a user