mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-22 01:26:53 +03:00
Urg, force update after hg-git ickyness
This commit is contained in:
parent
2ebcc9d3dd
commit
c4fe5a920b
23
.gitignore
vendored
Normal file
23
.gitignore
vendored
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
*.pyc
|
||||||
|
*.db
|
||||||
|
assetplatform.egg-info/*
|
||||||
|
*~
|
||||||
|
coverage.xml
|
||||||
|
env
|
||||||
|
docs/build
|
||||||
|
html
|
||||||
|
htmlcov
|
||||||
|
examples/media/pygments/[A-Za-z0-9]*
|
||||||
|
examples/media/objectstore/[A-Za-z0-9]*
|
||||||
|
build/*
|
||||||
|
dist/*
|
||||||
|
xmlrunner/*
|
||||||
|
djangorestframework.egg-info/*
|
||||||
|
MANIFEST
|
||||||
|
.project
|
||||||
|
.pydevproject
|
||||||
|
.settings
|
||||||
|
.cache
|
||||||
|
.coverage
|
||||||
|
.tox
|
||||||
|
.DS_Store
|
1
AUTHORS
1
AUTHORS
|
@ -9,6 +9,7 @@ Carles Barrobés <txels> - HEAD support.
|
||||||
Michael Fötsch <mfoetsch> - File format support.
|
Michael Fötsch <mfoetsch> - File format support.
|
||||||
David Larlet <david> - OAuth support.
|
David Larlet <david> - OAuth support.
|
||||||
Andrew Straw <astraw> - Bugfixes.
|
Andrew Straw <astraw> - Bugfixes.
|
||||||
|
<zeth> - Bugfixes.
|
||||||
|
|
||||||
THANKS TO:
|
THANKS TO:
|
||||||
|
|
||||||
|
|
99
README
99
README
|
@ -1,99 +0,0 @@
|
||||||
General Notes
|
|
||||||
-------------
|
|
||||||
|
|
||||||
To install django-rest-framework in a virtualenv environment
|
|
||||||
|
|
||||||
hg clone https://tomchristie@bitbucket.org/tomchristie/django-rest-framework
|
|
||||||
cd django-rest-framework/
|
|
||||||
virtualenv --no-site-packages --distribute --python=python2.6 env
|
|
||||||
source ./env/bin/activate
|
|
||||||
pip install -r requirements.txt # django, coverage
|
|
||||||
|
|
||||||
|
|
||||||
To run the tests
|
|
||||||
|
|
||||||
export PYTHONPATH=. # Ensure djangorestframework is on the PYTHONPATH
|
|
||||||
python djangorestframework/runtests/runtests.py
|
|
||||||
|
|
||||||
|
|
||||||
To run the test coverage report
|
|
||||||
|
|
||||||
export PYTHONPATH=. # Ensure djangorestframework is on the PYTHONPATH
|
|
||||||
python djangorestframework/runtests/runcoverage.py
|
|
||||||
|
|
||||||
|
|
||||||
To run the examples
|
|
||||||
|
|
||||||
pip install -r examples/requirements.txt # pygments, httplib2, markdown
|
|
||||||
cd examples
|
|
||||||
export PYTHONPATH=..
|
|
||||||
python manage.py syncdb
|
|
||||||
python manage.py runserver
|
|
||||||
|
|
||||||
|
|
||||||
To build the documentation
|
|
||||||
|
|
||||||
pip install -r docs/requirements.txt # sphinx
|
|
||||||
sphinx-build -c docs -b html -d docs/build docs html
|
|
||||||
|
|
||||||
|
|
||||||
To run the tests against the full set of supported configurations
|
|
||||||
|
|
||||||
deactivate # Ensure we are not currently running in a virtualenv
|
|
||||||
tox
|
|
||||||
|
|
||||||
|
|
||||||
To create the sdist packages
|
|
||||||
|
|
||||||
python setup.py sdist --formats=gztar,zip
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Release Notes
|
|
||||||
=============
|
|
||||||
|
|
||||||
0.2.3
|
|
||||||
|
|
||||||
* Fix some throttling bugs
|
|
||||||
* X-Throttle header on throttling
|
|
||||||
* Support for nesting resources on related models
|
|
||||||
|
|
||||||
0.2.2
|
|
||||||
|
|
||||||
* Throttling support complete
|
|
||||||
|
|
||||||
0.2.1
|
|
||||||
|
|
||||||
* Couple of simple bugfixes over 0.2.0
|
|
||||||
|
|
||||||
0.2.0
|
|
||||||
|
|
||||||
* Big refactoring changes since 0.1.0, ask on the discussion group if anything isn't clear.
|
|
||||||
The public API has been massively cleaned up. Expect it to be fairly stable from here on in.
|
|
||||||
|
|
||||||
* `Resource` becomes decoupled into `View` and `Resource`, your views should now inherit from `View`, not `Resource`.
|
|
||||||
|
|
||||||
* The handler functions on views .get() .put() .post() etc, no longer have the `content` and `auth` args.
|
|
||||||
Use `self.CONTENT` inside a view to access the deserialized, validated content.
|
|
||||||
Use `self.user` inside a view to access the authenticated user.
|
|
||||||
|
|
||||||
* `allowed_methods` and `anon_allowed_methods` are now defunct. if a method is defined, it's available.
|
|
||||||
The `permissions` attribute on a `View` is now used to provide generic permissions checking.
|
|
||||||
Use permission classes such as `FullAnonAccess`, `IsAuthenticated` or `IsUserOrIsAnonReadOnly` to set the permissions.
|
|
||||||
|
|
||||||
* The `authenticators` class becomes `authentication`. Class names change to Authentication.
|
|
||||||
|
|
||||||
* The `emitters` class becomes `renderers`. Class names change to Renderers.
|
|
||||||
|
|
||||||
* `ResponseException` becomes `ErrorResponse`.
|
|
||||||
|
|
||||||
* The mixin classes have been nicely refactored, the basic mixins are now `RequestMixin`, `ResponseMixin`, `AuthMixin`, and `ResourceMixin`
|
|
||||||
You can reuse these mixin classes individually without using the `View` class.
|
|
||||||
|
|
||||||
0.1.1
|
|
||||||
|
|
||||||
* Final build before pulling in all the refactoring changes for 0.2, in case anyone needs to hang on to 0.1.
|
|
||||||
|
|
||||||
0.1.0
|
|
||||||
|
|
||||||
* Initial release.
|
|
120
README.rst
Normal file
120
README.rst
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
Django REST framework
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Django REST framework makes it easy to build well-connected, self-describing RESTful Web APIs.
|
||||||
|
|
||||||
|
Full documentation for the project is available at http://django-rest-framework.org
|
||||||
|
|
||||||
|
Issue tracking is on `GitHub <https://github.com/tomchristie/django-rest-framework/issues>`_.
|
||||||
|
General questions should be taken to the `discussion group <http://groups.google.com/group/django-rest-framework>`_.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Installation Notes
|
||||||
|
==================
|
||||||
|
|
||||||
|
To clone the project from GitHub using git::
|
||||||
|
|
||||||
|
git clone git@github.com:tomchristie/django-rest-framework.git
|
||||||
|
|
||||||
|
|
||||||
|
To clone the project from Bitbucket using mercurial::
|
||||||
|
|
||||||
|
hg clone https://tomchristie@bitbucket.org/tomchristie/django-rest-framework
|
||||||
|
|
||||||
|
|
||||||
|
To install django-rest-framework in a virtualenv environment::
|
||||||
|
|
||||||
|
cd django-rest-framework
|
||||||
|
virtualenv --no-site-packages --distribute --python=python2.6 env
|
||||||
|
source env/bin/activate
|
||||||
|
pip install -r requirements.txt # django, coverage
|
||||||
|
|
||||||
|
|
||||||
|
To run the tests::
|
||||||
|
|
||||||
|
export PYTHONPATH=. # Ensure djangorestframework is on the PYTHONPATH
|
||||||
|
python djangorestframework/runtests/runtests.py
|
||||||
|
|
||||||
|
|
||||||
|
To run the test coverage report::
|
||||||
|
|
||||||
|
export PYTHONPATH=. # Ensure djangorestframework is on the PYTHONPATH
|
||||||
|
python djangorestframework/runtests/runcoverage.py
|
||||||
|
|
||||||
|
|
||||||
|
To run the examples::
|
||||||
|
|
||||||
|
pip install -r examples/requirements.txt # pygments, httplib2, markdown
|
||||||
|
cd examples
|
||||||
|
export PYTHONPATH=..
|
||||||
|
python manage.py syncdb
|
||||||
|
python manage.py runserver
|
||||||
|
|
||||||
|
|
||||||
|
To build the documentation::
|
||||||
|
|
||||||
|
pip install -r docs/requirements.txt # sphinx
|
||||||
|
sphinx-build -c docs -b html -d docs/build docs html
|
||||||
|
|
||||||
|
|
||||||
|
To run the tests against the full set of supported configurations::
|
||||||
|
|
||||||
|
deactivate # Ensure we are not currently running in a virtualenv
|
||||||
|
tox
|
||||||
|
|
||||||
|
|
||||||
|
To create the sdist packages::
|
||||||
|
|
||||||
|
python setup.py sdist --formats=gztar,zip
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Release Notes
|
||||||
|
=============
|
||||||
|
|
||||||
|
0.2.3
|
||||||
|
|
||||||
|
* Fix some throttling bugs.
|
||||||
|
* X-Throttle header on throttling.
|
||||||
|
* Support for nesting resources on related models.
|
||||||
|
|
||||||
|
0.2.2
|
||||||
|
|
||||||
|
* Throttling support complete.
|
||||||
|
|
||||||
|
0.2.1
|
||||||
|
|
||||||
|
* Couple of simple bugfixes over 0.2.0
|
||||||
|
|
||||||
|
0.2.0
|
||||||
|
|
||||||
|
* Big refactoring changes since 0.1.0, ask on the discussion group if anything isn't clear.
|
||||||
|
The public API has been massively cleaned up. Expect it to be fairly stable from here on in.
|
||||||
|
|
||||||
|
* `Resource` becomes decoupled into `View` and `Resource`, your views should now inherit from `View`, not `Resource`.
|
||||||
|
|
||||||
|
* The handler functions on views .get() .put() .post() etc, no longer have the `content` and `auth` args.
|
||||||
|
Use `self.CONTENT` inside a view to access the deserialized, validated content.
|
||||||
|
Use `self.user` inside a view to access the authenticated user.
|
||||||
|
|
||||||
|
* `allowed_methods` and `anon_allowed_methods` are now defunct. if a method is defined, it's available.
|
||||||
|
The `permissions` attribute on a `View` is now used to provide generic permissions checking.
|
||||||
|
Use permission classes such as `FullAnonAccess`, `IsAuthenticated` or `IsUserOrIsAnonReadOnly` to set the permissions.
|
||||||
|
|
||||||
|
* The `authenticators` class becomes `authentication`. Class names change to Authentication.
|
||||||
|
|
||||||
|
* The `emitters` class becomes `renderers`. Class names change to Renderers.
|
||||||
|
|
||||||
|
* `ResponseException` becomes `ErrorResponse`.
|
||||||
|
|
||||||
|
* The mixin classes have been nicely refactored, the basic mixins are now `RequestMixin`, `ResponseMixin`, `AuthMixin`, and `ResourceMixin`
|
||||||
|
You can reuse these mixin classes individually without using the `View` class.
|
||||||
|
|
||||||
|
0.1.1
|
||||||
|
|
||||||
|
* Final build before pulling in all the refactoring changes for 0.2, in case anyone needs to hang on to 0.1.
|
||||||
|
|
||||||
|
0.1.0
|
||||||
|
|
||||||
|
* Initial release.
|
|
@ -4,7 +4,7 @@ Customizable serialization.
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models.query import QuerySet
|
from django.db.models.query import QuerySet
|
||||||
from django.db.models.fields.related import RelatedField
|
from django.db.models.fields.related import RelatedField
|
||||||
from django.utils.encoding import smart_unicode, is_protected_type
|
from django.utils.encoding import smart_unicode, is_protected_type, smart_str
|
||||||
|
|
||||||
import decimal
|
import decimal
|
||||||
import inspect
|
import inspect
|
||||||
|
@ -177,7 +177,7 @@ class Serializer(object):
|
||||||
Keys serialize to their string value,
|
Keys serialize to their string value,
|
||||||
unless they exist in the `rename` dict.
|
unless they exist in the `rename` dict.
|
||||||
"""
|
"""
|
||||||
return getattr(self.rename, key, key)
|
return getattr(self.rename, smart_str(key), smart_str(key))
|
||||||
|
|
||||||
|
|
||||||
def serialize_val(self, key, obj):
|
def serialize_val(self, key, obj):
|
||||||
|
@ -228,12 +228,12 @@ class Serializer(object):
|
||||||
|
|
||||||
# serialize each required field
|
# serialize each required field
|
||||||
for fname in fields:
|
for fname in fields:
|
||||||
if hasattr(self, fname):
|
if hasattr(self, smart_str(fname)):
|
||||||
# check for a method 'fname' on self first
|
# check for a method 'fname' on self first
|
||||||
meth = getattr(self, fname)
|
meth = getattr(self, fname)
|
||||||
if inspect.ismethod(meth) and len(inspect.getargspec(meth)[0]) == 2:
|
if inspect.ismethod(meth) and len(inspect.getargspec(meth)[0]) == 2:
|
||||||
obj = meth(instance)
|
obj = meth(instance)
|
||||||
elif hasattr(instance, fname):
|
elif hasattr(instance, smart_str(fname)):
|
||||||
# now check for an attribute 'fname' on the instance
|
# now check for an attribute 'fname' on the instance
|
||||||
obj = getattr(instance, fname)
|
obj = getattr(instance, fname)
|
||||||
elif fname in instance:
|
elif fname in instance:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user