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
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
21 additions
and
38 deletions
+21
-38
rest_framework/authtoken/models.py
+4
-1
rest_framework/compat.py
+12
-30
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
os
from
django.conf
import
settings
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.
...
...
@@ -11,6 +13,7 @@ from django.db import models
AUTH_USER_MODEL
=
getattr
(
settings
,
'AUTH_USER_MODEL'
,
'auth.User'
)
@python_2_unicode_compatible
class
Token
(
models
.
Model
):
"""
The default authorization token model.
...
...
@@ -35,5 +38,5 @@ class Token(models.Model):
def
generate_key
(
self
):
return
binascii
.
hexlify
(
os
.
urandom
(
20
))
.
decode
()
def
__
unicode
__
(
self
):
def
__
str
__
(
self
):
return
self
.
key
rest_framework/compat.py
View file @
09e59f26
...
...
@@ -6,11 +6,12 @@ versions of django/python, and compatibility wrappers around optional packages.
# flake8: noqa
from
__future__
import
unicode_literals
import
inspect
from
django.core.exceptions
import
ImproperlyConfigured
from
django.conf
import
settings
from
django.utils
import
six
import
django
import
inspect
# Handle django.utils.encoding rename in 1.5 onwards.
...
...
@@ -49,7 +50,6 @@ try:
except
ImportError
:
django_filters
=
None
if
django
.
VERSION
>=
(
1
,
6
):
def
clean_manytomany_helptext
(
text
):
return
text
...
...
@@ -123,7 +123,6 @@ else:
return
[
m
.
upper
()
for
m
in
self
.
http_method_names
if
hasattr
(
self
,
m
)]
# MinValueValidator, MaxValueValidator et al. only accept `message` in 1.8+
if
django
.
VERSION
>=
(
1
,
8
):
from
django.core.validators
import
MinValueValidator
,
MaxValueValidator
...
...
@@ -187,6 +186,7 @@ if 'patch' not in View.http_method_names:
# RequestFactory only provides `generic` from 1.5 onwards
from
django.test.client
import
RequestFactory
as
DjangoRequestFactory
from
django.test.client
import
FakePayload
try
:
# In 1.5 the test client uses force_bytes
from
django.utils.encoding
import
force_bytes
as
force_bytes_or_smart_bytes
...
...
@@ -194,21 +194,22 @@ except ImportError:
# In 1.4 the test client just uses smart_str
from
django.utils.encoding
import
smart_str
as
force_bytes_or_smart_bytes
class
RequestFactory
(
DjangoRequestFactory
):
def
generic
(
self
,
method
,
path
,
data
=
''
,
content_type
=
'application/octet-stream'
,
**
extra
):
parsed
=
urlparse
.
urlparse
(
path
)
data
=
force_bytes_or_smart_bytes
(
data
,
settings
.
DEFAULT_CHARSET
)
r
=
{
'PATH_INFO'
:
self
.
_get_path
(
parsed
),
'QUERY_STRING'
:
force_text
(
parsed
[
4
]),
'PATH_INFO'
:
self
.
_get_path
(
parsed
),
'QUERY_STRING'
:
force_text
(
parsed
[
4
]),
'REQUEST_METHOD'
:
six
.
text_type
(
method
),
}
if
data
:
r
.
update
({
'CONTENT_LENGTH'
:
len
(
data
),
'CONTENT_TYPE'
:
six
.
text_type
(
content_type
),
'wsgi.input'
:
FakePayload
(
data
),
'CONTENT_TYPE'
:
six
.
text_type
(
content_type
),
'wsgi.input'
:
FakePayload
(
data
),
})
elif
django
.
VERSION
<=
(
1
,
4
):
# For 1.3 we need an empty WSGI payload
...
...
@@ -287,10 +288,12 @@ try:
import
provider
as
oauth2_provider
from
provider
import
scope
as
oauth2_provider_scope
from
provider
import
constants
as
oauth2_constants
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
# timezone aware datetimes
import
datetime
provider_now
=
datetime
.
datetime
.
now
else
:
# Any other supported version does use timezone aware datetimes
...
...
@@ -301,7 +304,7 @@ except ImportError:
oauth2_constants
=
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
if
six
.
PY3
:
SHORT_SEPARATORS
=
(
','
,
':'
)
...
...
@@ -316,30 +319,9 @@ from django.utils.functional import Promise
if
six
.
PY3
:
def
is_non_str_iterable
(
obj
):
if
(
isinstance
(
obj
,
str
)
or
(
isinstance
(
obj
,
Promise
)
and
obj
.
_delegate_text
)):
if
isinstance
(
obj
,
str
)
or
(
isinstance
(
obj
,
Promise
)
and
obj
.
_delegate_text
):
return
False
return
hasattr
(
obj
,
'__iter__'
)
else
:
def
is_non_str_iterable
(
obj
):
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
"""
from
__future__
import
unicode_literals
from
django.http.multipartparser
import
parse_header
from
django.utils.encoding
import
python_2_unicode_compatible
from
rest_framework
import
HTTP_HEADER_ENCODING
...
...
@@ -43,6 +44,7 @@ def order_by_precedence(media_type_lst):
return
[
media_types
for
media_types
in
ret
if
media_types
]
@python_2_unicode_compatible
class
_MediaType
(
object
):
def
__init__
(
self
,
media_type_str
):
if
media_type_str
is
None
:
...
...
@@ -79,9 +81,6 @@ class _MediaType(object):
return
3
def
__str__
(
self
):
return
self
.
__unicode__
()
.
encode
(
'utf-8'
)
def
__unicode__
(
self
):
ret
=
"
%
s/
%
s"
%
(
self
.
main_type
,
self
.
sub_type
)
for
key
,
val
in
self
.
params
.
items
():
ret
+=
";
%
s=
%
s"
%
(
key
,
val
)
...
...
tests/test_description.py
View file @
09e59f26
...
...
@@ -2,6 +2,7 @@
from
__future__
import
unicode_literals
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.views
import
APIView
from
.description
import
ViewWithNonASCIICharactersInDocstring
...
...
@@ -107,6 +108,7 @@ class TestViewNamesAndDescriptions(TestCase):
"""
# 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
@python_2_unicode_compatible
class
MockLazyStr
(
object
):
def
__init__
(
self
,
string
):
self
.
s
=
string
...
...
@@ -114,9 +116,6 @@ class TestViewNamesAndDescriptions(TestCase):
def
__str__
(
self
):
return
self
.
s
def
__unicode__
(
self
):
return
self
.
s
class
MockView
(
APIView
):
__doc__
=
MockLazyStr
(
"a gettext string"
)
...
...
tests/test_relations_generic.py
View file @
09e59f26
...
...
@@ -3,8 +3,8 @@ from django.contrib.contenttypes.models import ContentType
from
django.contrib.contenttypes.generic
import
GenericRelation
,
GenericForeignKey
from
django.db
import
models
from
django.test
import
TestCase
from
django.utils.encoding
import
python_2_unicode_compatible
from
rest_framework
import
serializers
from
rest_framework.compat
import
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