aboutsummaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorTom Christie2012-02-23 08:58:10 +0000
committerTom Christie2012-02-23 08:58:10 +0000
commit2b59df004a5bb7449aa4c07277ac846c330a79f7 (patch)
tree3a5e20948d3cd0ea1ca4d25ff35d970646722a30 /examples
parent8e0b9e55ecb0733369918d4562ba38ba505cdfe8 (diff)
downloaddjango-rest-framework-2b59df004a5bb7449aa4c07277ac846c330a79f7.tar.bz2
reverse takes request as a kwarg for compatibility with django's reverse
Diffstat (limited to 'examples')
-rw-r--r--examples/blogpost/resources.py8
-rw-r--r--examples/mixin/urls.py7
-rw-r--r--examples/modelresourceexample/models.py3
-rw-r--r--examples/modelresourceexample/resources.py1
-rw-r--r--examples/modelresourceexample/urls.py2
-rw-r--r--examples/objectstore/views.py51
-rw-r--r--examples/pygments_api/views.py10
-rw-r--r--examples/resourceexample/views.py2
-rw-r--r--examples/sandbox/views.py14
9 files changed, 63 insertions, 35 deletions
diff --git a/examples/blogpost/resources.py b/examples/blogpost/resources.py
index d11c5615..ac00a734 100644
--- a/examples/blogpost/resources.py
+++ b/examples/blogpost/resources.py
@@ -12,7 +12,9 @@ class BlogPostResource(ModelResource):
ordering = ('-created',)
def comments(self, instance):
- return reverse('comments', request, kwargs={'blogpost': instance.key})
+ return reverse('comments',
+ kwargs={'blogpost': instance.key},
+ request=self.request)
class CommentResource(ModelResource):
@@ -24,4 +26,6 @@ class CommentResource(ModelResource):
ordering = ('-created',)
def blogpost(self, instance):
- return reverse('blog-post', request, kwargs={'key': instance.blogpost.key})
+ return reverse('blog-post',
+ kwargs={'key': instance.blogpost.key},
+ request=self.request)
diff --git a/examples/mixin/urls.py b/examples/mixin/urls.py
index 9652cfda..900c532e 100644
--- a/examples/mixin/urls.py
+++ b/examples/mixin/urls.py
@@ -9,16 +9,17 @@ from django.conf.urls.defaults import patterns, url
class ExampleView(ResponseMixin, View):
"""An example view using Django 1.3's class based views.
- Uses djangorestframework's RendererMixin to provide support for multiple output formats."""
+ Uses djangorestframework's RendererMixin to provide support for multiple
+ output formats."""
renderers = DEFAULT_RENDERERS
def get(self, request):
+ url = reverse('mixin-view', request=request)
response = Response(200, {'description': 'Some example content',
- 'url': reverse('mixin-view', request)})
+ 'url': url})
return self.render(response)
urlpatterns = patterns('',
url(r'^$', ExampleView.as_view(), name='mixin-view'),
)
-
diff --git a/examples/modelresourceexample/models.py b/examples/modelresourceexample/models.py
index ff0179c8..11f3eae2 100644
--- a/examples/modelresourceexample/models.py
+++ b/examples/modelresourceexample/models.py
@@ -2,6 +2,7 @@ from django.db import models
MAX_INSTANCES = 10
+
class MyModel(models.Model):
foo = models.BooleanField()
bar = models.IntegerField(help_text='Must be an integer.')
@@ -15,5 +16,3 @@ class MyModel(models.Model):
super(MyModel, self).save(*args, **kwargs)
while MyModel.objects.all().count() > MAX_INSTANCES:
MyModel.objects.all().order_by('-created')[0].delete()
-
-
diff --git a/examples/modelresourceexample/resources.py b/examples/modelresourceexample/resources.py
index 634ea6b3..05090f8f 100644
--- a/examples/modelresourceexample/resources.py
+++ b/examples/modelresourceexample/resources.py
@@ -1,6 +1,7 @@
from djangorestframework.resources import ModelResource
from modelresourceexample.models import MyModel
+
class MyModelResource(ModelResource):
model = MyModel
fields = ('foo', 'bar', 'baz', 'url')
diff --git a/examples/modelresourceexample/urls.py b/examples/modelresourceexample/urls.py
index b6a16542..c680dc65 100644
--- a/examples/modelresourceexample/urls.py
+++ b/examples/modelresourceexample/urls.py
@@ -4,5 +4,5 @@ from modelresourceexample.resources import MyModelResource
urlpatterns = patterns('',
url(r'^$', ListOrCreateModelView.as_view(resource=MyModelResource), name='model-resource-root'),
- url(r'^(?P<pk>[0-9]+)/$', InstanceModelView.as_view(resource=MyModelResource)),
+ url(r'^(?P<id>[0-9]+)/$', InstanceModelView.as_view(resource=MyModelResource), name='model-resource-instance'),
)
diff --git a/examples/objectstore/views.py b/examples/objectstore/views.py
index dd711482..880bd3fc 100644
--- a/examples/objectstore/views.py
+++ b/examples/objectstore/views.py
@@ -28,6 +28,20 @@ def remove_oldest_files(dir, max_files):
[os.remove(path) for path in ctime_sorted_paths[max_files:]]
+def get_filename(key):
+ """
+ Given a stored object's key returns the file's path.
+ """
+ return os.path.join(OBJECT_STORE_DIR, key)
+
+
+def get_file_url(key, request):
+ """
+ Given a stored object's key returns the URL for the object.
+ """
+ return reverse('stored-object', kwargs={'key': key}, request=request)
+
+
class ObjectStoreRoot(View):
"""
Root of the Object Store API.
@@ -38,20 +52,24 @@ class ObjectStoreRoot(View):
"""
Return a list of all the stored object URLs. (Ordered by creation time, newest first)
"""
- filepaths = [os.path.join(OBJECT_STORE_DIR, file) for file in os.listdir(OBJECT_STORE_DIR) if not file.startswith('.')]
+ filepaths = [os.path.join(OBJECT_STORE_DIR, file)
+ for file in os.listdir(OBJECT_STORE_DIR)
+ if not file.startswith('.')]
ctime_sorted_basenames = [item[0] for item in sorted([(os.path.basename(path), os.path.getctime(path)) for path in filepaths],
key=operator.itemgetter(1), reverse=True)]
- return [reverse('stored-object', request, kwargs={'key':key}) for key in ctime_sorted_basenames]
+ return [get_file_url(key, request) for key in ctime_sorted_basenames]
def post(self, request):
"""
Create a new stored object, with a unique key.
"""
key = str(uuid.uuid1())
- pathname = os.path.join(OBJECT_STORE_DIR, key)
- pickle.dump(self.CONTENT, open(pathname, 'wb'))
+ filename = get_filename(key)
+ pickle.dump(self.CONTENT, open(filename, 'wb'))
+
remove_oldest_files(OBJECT_STORE_DIR, MAX_FILES)
- return Response(status.HTTP_201_CREATED, self.CONTENT, {'Location': reverse('stored-object', request, kwargs={'key':key})})
+ url = get_file_url(key, request)
+ return Response(status.HTTP_201_CREATED, self.CONTENT, {'Location': url})
class StoredObject(View):
@@ -59,29 +77,30 @@ class StoredObject(View):
Represents a stored object.
The object may be any picklable content.
"""
-
def get(self, request, key):
"""
- Return a stored object, by unpickling the contents of a locally stored file.
+ Return a stored object, by unpickling the contents of a locally
+ stored file.
"""
- pathname = os.path.join(OBJECT_STORE_DIR, key)
- if not os.path.exists(pathname):
+ filename = get_filename(key)
+ if not os.path.exists(filename):
return Response(status.HTTP_404_NOT_FOUND)
- return pickle.load(open(pathname, 'rb'))
+ return pickle.load(open(filename, 'rb'))
def put(self, request, key):
"""
- Update/create a stored object, by pickling the request content to a locally stored file.
+ Update/create a stored object, by pickling the request content to a
+ locally stored file.
"""
- pathname = os.path.join(OBJECT_STORE_DIR, key)
- pickle.dump(self.CONTENT, open(pathname, 'wb'))
+ filename = get_filename(key)
+ pickle.dump(self.CONTENT, open(filename, 'wb'))
return self.CONTENT
def delete(self, request, key):
"""
Delete a stored object, by removing it's pickled file.
"""
- pathname = os.path.join(OBJECT_STORE_DIR, key)
- if not os.path.exists(pathname):
+ filename = get_filename(key)
+ if not os.path.exists(filename):
return Response(status.HTTP_404_NOT_FOUND)
- os.remove(pathname)
+ os.remove(filename)
diff --git a/examples/pygments_api/views.py b/examples/pygments_api/views.py
index b5396681..3dd55115 100644
--- a/examples/pygments_api/views.py
+++ b/examples/pygments_api/views.py
@@ -30,9 +30,13 @@ def list_dir_sorted_by_ctime(dir):
"""
Return a list of files sorted by creation time
"""
- filepaths = [os.path.join(dir, file) for file in os.listdir(dir) if not file.startswith('.')]
- return [item[0] for item in sorted( [(path, os.path.getctime(path)) for path in filepaths],
- key=operator.itemgetter(1), reverse=False) ]
+ filepaths = [os.path.join(dir, file)
+ for file in os.listdir(dir)
+ if not file.startswith('.')]
+ ctimes = [(path, os.path.getctime(path)) for path in filepaths]
+ ctimes = sorted(ctimes, key=operator.itemgetter(1), reverse=False)
+ return [filepath for filepath, ctime in ctimes]
+
def remove_oldest_files(dir, max_files):
"""
diff --git a/examples/resourceexample/views.py b/examples/resourceexample/views.py
index 1b5b8e9c..fcd0b273 100644
--- a/examples/resourceexample/views.py
+++ b/examples/resourceexample/views.py
@@ -15,7 +15,7 @@ class ExampleView(View):
"""
Handle GET requests, returning a list of URLs pointing to 3 other views.
"""
- return {"Some other resources": [reverse('another-example', request, kwargs={'num':num}) for num in range(3)]}
+ return {"Some other resources": [reverse('another-example', kwargs={'num':num}, request=request) for num in range(3)]}
class AnotherExampleView(View):
diff --git a/examples/sandbox/views.py b/examples/sandbox/views.py
index 78e00f46..8e3b3a10 100644
--- a/examples/sandbox/views.py
+++ b/examples/sandbox/views.py
@@ -27,11 +27,11 @@ class Sandbox(View):
Please feel free to browse, create, edit and delete the resources in these examples."""
def get(self, request):
- return [{'name': 'Simple Resource example', 'url': reverse('example-resource', request)},
- {'name': 'Simple ModelResource example', 'url': reverse('model-resource-root', request)},
- {'name': 'Simple Mixin-only example', 'url': reverse('mixin-view', request)},
- {'name': 'Object store API', 'url': reverse('object-store-root', request)},
- {'name': 'Code highlighting API', 'url': reverse('pygments-root', request)},
- {'name': 'Blog posts API', 'url': reverse('blog-posts-root', request)},
- {'name': 'Permissions example', 'url': reverse('permissions-example', request)}
+ return [{'name': 'Simple Resource example', 'url': reverse('example-resource', request=request)},
+ {'name': 'Simple ModelResource example', 'url': reverse('model-resource-root', request=request)},
+ {'name': 'Simple Mixin-only example', 'url': reverse('mixin-view', request=request)},
+ {'name': 'Object store API', 'url': reverse('object-store-root', request=request)},
+ {'name': 'Code highlighting API', 'url': reverse('pygments-root', request=request)},
+ {'name': 'Blog posts API', 'url': reverse('blog-posts-root', request=request)},
+ {'name': 'Permissions example', 'url': reverse('permissions-example', request=request)}
]