Permalink
Browse files

Urg, force update after hg-git ickyness

  • Loading branch information...
tomchristie committed Jul 1, 2011
1 parent 2ebcc9d commit c4fe5a920b3a123d86b82da5b86e118435b07050
Showing with 148 additions and 103 deletions.
  1. +23 −0 .gitignore
  2. +1 −0 AUTHORS
  3. +0 −99 README
  4. +120 −0 README.rst
  5. +4 −4 djangorestframework/serializer.py
View
@@ -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
View
@@ -9,6 +9,7 @@ Carles Barrobés <txels> - HEAD support.
Michael Fötsch <mfoetsch> - File format support.
David Larlet <david> - OAuth support.
Andrew Straw <astraw> - Bugfixes.
+<zeth> - Bugfixes.
THANKS TO:
View
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.
View
@@ -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 @@
from django.db import models
from django.db.models.query import QuerySet
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 inspect
@@ -177,7 +177,7 @@ def serialize_key(self, key):
Keys serialize to their string value,
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):
@@ -228,12 +228,12 @@ def serialize_model(self, instance):
# serialize each required field
for fname in fields:
- if hasattr(self, fname):
+ if hasattr(self, smart_str(fname)):
# check for a method 'fname' on self first
meth = getattr(self, fname)
if inspect.ismethod(meth) and len(inspect.getargspec(meth)[0]) == 2:
obj = meth(instance)
- elif hasattr(instance, fname):
+ elif hasattr(instance, smart_str(fname)):
# now check for an attribute 'fname' on the instance
obj = getattr(instance, fname)
elif fname in instance:

0 comments on commit c4fe5a9

Please sign in to comment.