Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
django-rest-framework
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
django-rest-framework
Commits
09e59f26
Commit
09e59f26
authored
Dec 04, 2014
by
Tymur Maryokhin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Removed custom python_2_unicode_compatible. Closes #2183
parent
f8fdfe5a
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
17 additions
and
34 deletions
+17
-34
rest_framework/authtoken/models.py
+4
-1
rest_framework/compat.py
+8
-26
rest_framework/utils/mediatypes.py
+2
-3
tests/test_description.py
+2
-3
tests/test_relations_generic.py
+1
-1
No files found.
rest_framework/authtoken/models.py
View file @
09e59f26
import
binascii
import
binascii
import
os
import
os
from
django.conf
import
settings
from
django.conf
import
settings
from
django.db
import
models
from
django.db
import
models
from
django.utils.encoding
import
python_2_unicode_compatible
# Prior to Django 1.5, the AUTH_USER_MODEL setting does not exist.
# Prior to Django 1.5, the AUTH_USER_MODEL setting does not exist.
...
@@ -11,6 +13,7 @@ from django.db import models
...
@@ -11,6 +13,7 @@ from django.db import models
AUTH_USER_MODEL
=
getattr
(
settings
,
'AUTH_USER_MODEL'
,
'auth.User'
)
AUTH_USER_MODEL
=
getattr
(
settings
,
'AUTH_USER_MODEL'
,
'auth.User'
)
@python_2_unicode_compatible
class
Token
(
models
.
Model
):
class
Token
(
models
.
Model
):
"""
"""
The default authorization token model.
The default authorization token model.
...
@@ -35,5 +38,5 @@ class Token(models.Model):
...
@@ -35,5 +38,5 @@ class Token(models.Model):
def
generate_key
(
self
):
def
generate_key
(
self
):
return
binascii
.
hexlify
(
os
.
urandom
(
20
))
.
decode
()
return
binascii
.
hexlify
(
os
.
urandom
(
20
))
.
decode
()
def
__
unicode
__
(
self
):
def
__
str
__
(
self
):
return
self
.
key
return
self
.
key
rest_framework/compat.py
View file @
09e59f26
...
@@ -6,11 +6,12 @@ versions of django/python, and compatibility wrappers around optional packages.
...
@@ -6,11 +6,12 @@ versions of django/python, and compatibility wrappers around optional packages.
# flake8: noqa
# flake8: noqa
from
__future__
import
unicode_literals
from
__future__
import
unicode_literals
import
inspect
from
django.core.exceptions
import
ImproperlyConfigured
from
django.core.exceptions
import
ImproperlyConfigured
from
django.conf
import
settings
from
django.conf
import
settings
from
django.utils
import
six
from
django.utils
import
six
import
django
import
django
import
inspect
# Handle django.utils.encoding rename in 1.5 onwards.
# Handle django.utils.encoding rename in 1.5 onwards.
...
@@ -49,7 +50,6 @@ try:
...
@@ -49,7 +50,6 @@ try:
except
ImportError
:
except
ImportError
:
django_filters
=
None
django_filters
=
None
if
django
.
VERSION
>=
(
1
,
6
):
if
django
.
VERSION
>=
(
1
,
6
):
def
clean_manytomany_helptext
(
text
):
def
clean_manytomany_helptext
(
text
):
return
text
return
text
...
@@ -123,7 +123,6 @@ else:
...
@@ -123,7 +123,6 @@ else:
return
[
m
.
upper
()
for
m
in
self
.
http_method_names
if
hasattr
(
self
,
m
)]
return
[
m
.
upper
()
for
m
in
self
.
http_method_names
if
hasattr
(
self
,
m
)]
# MinValueValidator, MaxValueValidator et al. only accept `message` in 1.8+
# MinValueValidator, MaxValueValidator et al. only accept `message` in 1.8+
if
django
.
VERSION
>=
(
1
,
8
):
if
django
.
VERSION
>=
(
1
,
8
):
from
django.core.validators
import
MinValueValidator
,
MaxValueValidator
from
django.core.validators
import
MinValueValidator
,
MaxValueValidator
...
@@ -187,6 +186,7 @@ if 'patch' not in View.http_method_names:
...
@@ -187,6 +186,7 @@ if 'patch' not in View.http_method_names:
# RequestFactory only provides `generic` from 1.5 onwards
# RequestFactory only provides `generic` from 1.5 onwards
from
django.test.client
import
RequestFactory
as
DjangoRequestFactory
from
django.test.client
import
RequestFactory
as
DjangoRequestFactory
from
django.test.client
import
FakePayload
from
django.test.client
import
FakePayload
try
:
try
:
# In 1.5 the test client uses force_bytes
# In 1.5 the test client uses force_bytes
from
django.utils.encoding
import
force_bytes
as
force_bytes_or_smart_bytes
from
django.utils.encoding
import
force_bytes
as
force_bytes_or_smart_bytes
...
@@ -194,6 +194,7 @@ except ImportError:
...
@@ -194,6 +194,7 @@ except ImportError:
# In 1.4 the test client just uses smart_str
# In 1.4 the test client just uses smart_str
from
django.utils.encoding
import
smart_str
as
force_bytes_or_smart_bytes
from
django.utils.encoding
import
smart_str
as
force_bytes_or_smart_bytes
class
RequestFactory
(
DjangoRequestFactory
):
class
RequestFactory
(
DjangoRequestFactory
):
def
generic
(
self
,
method
,
path
,
def
generic
(
self
,
method
,
path
,
data
=
''
,
content_type
=
'application/octet-stream'
,
**
extra
):
data
=
''
,
content_type
=
'application/octet-stream'
,
**
extra
):
...
@@ -287,10 +288,12 @@ try:
...
@@ -287,10 +288,12 @@ try:
import
provider
as
oauth2_provider
import
provider
as
oauth2_provider
from
provider
import
scope
as
oauth2_provider_scope
from
provider
import
scope
as
oauth2_provider_scope
from
provider
import
constants
as
oauth2_constants
from
provider
import
constants
as
oauth2_constants
if
oauth2_provider
.
__version__
in
(
'0.2.3'
,
'0.2.4'
):
if
oauth2_provider
.
__version__
in
(
'0.2.3'
,
'0.2.4'
):
# 0.2.3 and 0.2.4 are supported version that do not support
# 0.2.3 and 0.2.4 are supported version that do not support
# timezone aware datetimes
# timezone aware datetimes
import
datetime
import
datetime
provider_now
=
datetime
.
datetime
.
now
provider_now
=
datetime
.
datetime
.
now
else
:
else
:
# Any other supported version does use timezone aware datetimes
# Any other supported version does use timezone aware datetimes
...
@@ -301,7 +304,7 @@ except ImportError:
...
@@ -301,7 +304,7 @@ except ImportError:
oauth2_constants
=
None
oauth2_constants
=
None
provider_now
=
None
provider_now
=
None
# `sep
e
rators` argument to `json.dumps()` differs between 2.x and 3.x
# `sep
a
rators` argument to `json.dumps()` differs between 2.x and 3.x
# See: http://bugs.python.org/issue22767
# See: http://bugs.python.org/issue22767
if
six
.
PY3
:
if
six
.
PY3
:
SHORT_SEPARATORS
=
(
','
,
':'
)
SHORT_SEPARATORS
=
(
','
,
':'
)
...
@@ -316,30 +319,9 @@ from django.utils.functional import Promise
...
@@ -316,30 +319,9 @@ from django.utils.functional import Promise
if
six
.
PY3
:
if
six
.
PY3
:
def
is_non_str_iterable
(
obj
):
def
is_non_str_iterable
(
obj
):
if
(
isinstance
(
obj
,
str
)
or
if
isinstance
(
obj
,
str
)
or
(
isinstance
(
obj
,
Promise
)
and
obj
.
_delegate_text
):
(
isinstance
(
obj
,
Promise
)
and
obj
.
_delegate_text
)):
return
False
return
False
return
hasattr
(
obj
,
'__iter__'
)
return
hasattr
(
obj
,
'__iter__'
)
else
:
else
:
def
is_non_str_iterable
(
obj
):
def
is_non_str_iterable
(
obj
):
return
hasattr
(
obj
,
'__iter__'
)
return
hasattr
(
obj
,
'__iter__'
)
try
:
from
django.utils.encoding
import
python_2_unicode_compatible
except
ImportError
:
def
python_2_unicode_compatible
(
klass
):
"""
A decorator that defines __unicode__ and __str__ methods under Python 2.
Under Python 3 it does nothing.
To support Python 2 and 3 with a single code base, define a __str__ method
returning text and apply this decorator to the class.
"""
if
'__str__'
not
in
klass
.
__dict__
:
raise
ValueError
(
"@python_2_unicode_compatible cannot be applied "
"to
%
s because it doesn't define __str__()."
%
klass
.
__name__
)
klass
.
__unicode__
=
klass
.
__str__
klass
.
__str__
=
lambda
self
:
self
.
__unicode__
()
.
encode
(
'utf-8'
)
return
klass
rest_framework/utils/mediatypes.py
View file @
09e59f26
...
@@ -5,6 +5,7 @@ See http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7
...
@@ -5,6 +5,7 @@ See http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7
"""
"""
from
__future__
import
unicode_literals
from
__future__
import
unicode_literals
from
django.http.multipartparser
import
parse_header
from
django.http.multipartparser
import
parse_header
from
django.utils.encoding
import
python_2_unicode_compatible
from
rest_framework
import
HTTP_HEADER_ENCODING
from
rest_framework
import
HTTP_HEADER_ENCODING
...
@@ -43,6 +44,7 @@ def order_by_precedence(media_type_lst):
...
@@ -43,6 +44,7 @@ def order_by_precedence(media_type_lst):
return
[
media_types
for
media_types
in
ret
if
media_types
]
return
[
media_types
for
media_types
in
ret
if
media_types
]
@python_2_unicode_compatible
class
_MediaType
(
object
):
class
_MediaType
(
object
):
def
__init__
(
self
,
media_type_str
):
def
__init__
(
self
,
media_type_str
):
if
media_type_str
is
None
:
if
media_type_str
is
None
:
...
@@ -79,9 +81,6 @@ class _MediaType(object):
...
@@ -79,9 +81,6 @@ class _MediaType(object):
return
3
return
3
def
__str__
(
self
):
def
__str__
(
self
):
return
self
.
__unicode__
()
.
encode
(
'utf-8'
)
def
__unicode__
(
self
):
ret
=
"
%
s/
%
s"
%
(
self
.
main_type
,
self
.
sub_type
)
ret
=
"
%
s/
%
s"
%
(
self
.
main_type
,
self
.
sub_type
)
for
key
,
val
in
self
.
params
.
items
():
for
key
,
val
in
self
.
params
.
items
():
ret
+=
";
%
s=
%
s"
%
(
key
,
val
)
ret
+=
";
%
s=
%
s"
%
(
key
,
val
)
...
...
tests/test_description.py
View file @
09e59f26
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
from
__future__
import
unicode_literals
from
__future__
import
unicode_literals
from
django.test
import
TestCase
from
django.test
import
TestCase
from
django.utils.encoding
import
python_2_unicode_compatible
from
rest_framework.compat
import
apply_markdown
,
smart_text
from
rest_framework.compat
import
apply_markdown
,
smart_text
from
rest_framework.views
import
APIView
from
rest_framework.views
import
APIView
from
.description
import
ViewWithNonASCIICharactersInDocstring
from
.description
import
ViewWithNonASCIICharactersInDocstring
...
@@ -107,6 +108,7 @@ class TestViewNamesAndDescriptions(TestCase):
...
@@ -107,6 +108,7 @@ class TestViewNamesAndDescriptions(TestCase):
"""
"""
# use a mock object instead of gettext_lazy to ensure that we can't end
# use a mock object instead of gettext_lazy to ensure that we can't end
# up with a test case string in our l10n catalog
# up with a test case string in our l10n catalog
@python_2_unicode_compatible
class
MockLazyStr
(
object
):
class
MockLazyStr
(
object
):
def
__init__
(
self
,
string
):
def
__init__
(
self
,
string
):
self
.
s
=
string
self
.
s
=
string
...
@@ -114,9 +116,6 @@ class TestViewNamesAndDescriptions(TestCase):
...
@@ -114,9 +116,6 @@ class TestViewNamesAndDescriptions(TestCase):
def
__str__
(
self
):
def
__str__
(
self
):
return
self
.
s
return
self
.
s
def
__unicode__
(
self
):
return
self
.
s
class
MockView
(
APIView
):
class
MockView
(
APIView
):
__doc__
=
MockLazyStr
(
"a gettext string"
)
__doc__
=
MockLazyStr
(
"a gettext string"
)
...
...
tests/test_relations_generic.py
View file @
09e59f26
...
@@ -3,8 +3,8 @@ from django.contrib.contenttypes.models import ContentType
...
@@ -3,8 +3,8 @@ from django.contrib.contenttypes.models import ContentType
from
django.contrib.contenttypes.generic
import
GenericRelation
,
GenericForeignKey
from
django.contrib.contenttypes.generic
import
GenericRelation
,
GenericForeignKey
from
django.db
import
models
from
django.db
import
models
from
django.test
import
TestCase
from
django.test
import
TestCase
from
django.utils.encoding
import
python_2_unicode_compatible
from
rest_framework
import
serializers
from
rest_framework
import
serializers
from
rest_framework.compat
import
python_2_unicode_compatible
@python_2_unicode_compatible
@python_2_unicode_compatible
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment