From c7e7279d979a346b5d1c950cc960183013799c41 Mon Sep 17 00:00:00 2001 From: Daniel Izquierdo Date: Mon, 20 Feb 2012 19:28:50 +0900 Subject: Update examples to use the new custom `reverse()' This fixes #167 except for the docs --- examples/blogpost/resources.py | 6 +++--- examples/blogpost/tests.py | 3 +-- examples/mixin/urls.py | 4 ++-- examples/objectstore/views.py | 6 +++--- examples/permissionsexample/views.py | 6 +++--- examples/pygments_api/views.py | 6 +++--- examples/resourceexample/views.py | 5 ++--- examples/sandbox/views.py | 16 ++++++++-------- 8 files changed, 25 insertions(+), 27 deletions(-) (limited to 'examples') diff --git a/examples/blogpost/resources.py b/examples/blogpost/resources.py index 5a3c1ce2..d4e0594d 100644 --- a/examples/blogpost/resources.py +++ b/examples/blogpost/resources.py @@ -1,5 +1,5 @@ -from django.core.urlresolvers import reverse from djangorestframework.resources import ModelResource +from djangorestframework.utils import reverse from blogpost.models import BlogPost, Comment @@ -12,7 +12,7 @@ class BlogPostResource(ModelResource): ordering = ('-created',) def comments(self, instance): - return reverse('comments', kwargs={'blogpost': instance.key}) + return reverse('comments', request, kwargs={'blogpost': instance.key}) class CommentResource(ModelResource): @@ -24,4 +24,4 @@ class CommentResource(ModelResource): ordering = ('-created',) def blogpost(self, instance): - return reverse('blog-post', kwargs={'key': instance.blogpost.key}) + return reverse('blog-post', request, kwargs={'key': instance.blogpost.key}) diff --git a/examples/blogpost/tests.py b/examples/blogpost/tests.py index 5aa4f89f..9f72e686 100644 --- a/examples/blogpost/tests.py +++ b/examples/blogpost/tests.py @@ -1,12 +1,11 @@ """Test a range of REST API usage of the example application. """ -from django.core.urlresolvers import reverse from django.test import TestCase -from django.core.urlresolvers import reverse from django.utils import simplejson as json from djangorestframework.compat import RequestFactory +from djangorestframework.utils import reverse from djangorestframework.views import InstanceModelView, ListOrCreateModelView from blogpost import models, urls diff --git a/examples/mixin/urls.py b/examples/mixin/urls.py index a3da3b2c..1f8c93b2 100644 --- a/examples/mixin/urls.py +++ b/examples/mixin/urls.py @@ -2,9 +2,9 @@ from djangorestframework.compat import View # Use Django 1.3's django.views.gen from djangorestframework.mixins import ResponseMixin from djangorestframework.renderers import DEFAULT_RENDERERS from djangorestframework.response import Response +from djangorestframework.utils import reverse from django.conf.urls.defaults import patterns, url -from django.core.urlresolvers import reverse class ExampleView(ResponseMixin, View): @@ -14,7 +14,7 @@ class ExampleView(ResponseMixin, View): def get(self, request): response = Response(200, {'description': 'Some example content', - 'url': reverse('mixin-view')}) + 'url': reverse('mixin-view', request)}) return self.render(response) diff --git a/examples/objectstore/views.py b/examples/objectstore/views.py index d85ed9f4..61d51b1b 100644 --- a/examples/objectstore/views.py +++ b/examples/objectstore/views.py @@ -1,6 +1,6 @@ from django.conf import settings -from django.core.urlresolvers import reverse +from djangorestframework.utils import reverse from djangorestframework.views import View from djangorestframework.response import Response from djangorestframework import status @@ -41,7 +41,7 @@ class ObjectStoreRoot(View): 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', kwargs={'key':key}) for key in ctime_sorted_basenames] + return [reverse('stored-object', request, kwargs={'key':key}) for key in ctime_sorted_basenames] def post(self, request): """ @@ -51,7 +51,7 @@ class ObjectStoreRoot(View): pathname = os.path.join(OBJECT_STORE_DIR, key) pickle.dump(self.CONTENT, open(pathname, 'wb')) remove_oldest_files(OBJECT_STORE_DIR, MAX_FILES) - return Response(status.HTTP_201_CREATED, self.CONTENT, {'Location': reverse('stored-object', kwargs={'key':key})}) + return Response(status.HTTP_201_CREATED, self.CONTENT, {'Location': reverse('stored-object', request, kwargs={'key':key})}) class StoredObject(View): diff --git a/examples/permissionsexample/views.py b/examples/permissionsexample/views.py index 86f458f8..83ef0fd9 100644 --- a/examples/permissionsexample/views.py +++ b/examples/permissionsexample/views.py @@ -1,6 +1,6 @@ from djangorestframework.views import View from djangorestframework.permissions import PerUserThrottling, IsAuthenticated -from django.core.urlresolvers import reverse +from djangorestframework.utils import reverse class PermissionsExampleView(View): @@ -12,11 +12,11 @@ class PermissionsExampleView(View): return [ { 'name': 'Throttling Example', - 'url': reverse('throttled-resource') + 'url': reverse('throttled-resource', request) }, { 'name': 'Logged in example', - 'url': reverse('loggedin-resource') + 'url': reverse('loggedin-resource', request) }, ] diff --git a/examples/pygments_api/views.py b/examples/pygments_api/views.py index ffea60ae..01710bd5 100644 --- a/examples/pygments_api/views.py +++ b/examples/pygments_api/views.py @@ -1,10 +1,10 @@ from __future__ import with_statement # for python 2.5 from django.conf import settings -from django.core.urlresolvers import reverse from djangorestframework.resources import FormResource from djangorestframework.response import Response from djangorestframework.renderers import BaseRenderer +from djangorestframework.utils import reverse from djangorestframework.views import View from djangorestframework import status @@ -61,7 +61,7 @@ class PygmentsRoot(View): Return a list of all currently existing snippets. """ unique_ids = [os.path.split(f)[1] for f in list_dir_sorted_by_ctime(HIGHLIGHTED_CODE_DIR)] - return [reverse('pygments-instance', args=[unique_id]) for unique_id in unique_ids] + return [reverse('pygments-instance', request, args=[unique_id]) for unique_id in unique_ids] def post(self, request): """ @@ -81,7 +81,7 @@ class PygmentsRoot(View): remove_oldest_files(HIGHLIGHTED_CODE_DIR, MAX_FILES) - return Response(status.HTTP_201_CREATED, headers={'Location': reverse('pygments-instance', args=[unique_id])}) + return Response(status.HTTP_201_CREATED, headers={'Location': reverse('pygments-instance', request, args=[unique_id])}) class PygmentsInstance(View): diff --git a/examples/resourceexample/views.py b/examples/resourceexample/views.py index e6b5eeb8..2f623c39 100644 --- a/examples/resourceexample/views.py +++ b/examples/resourceexample/views.py @@ -1,5 +1,4 @@ -from django.core.urlresolvers import reverse - +from djangorestframework.utils import reverse from djangorestframework.views import View from djangorestframework.response import Response from djangorestframework import status @@ -16,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', kwargs={'num':num}) for num in range(3)]} + return {"Some other resources": [reverse('another-example', request, kwargs={'num':num}) for num in range(3)]} class AnotherExampleView(View): diff --git a/examples/sandbox/views.py b/examples/sandbox/views.py index f7a3542d..3872b503 100644 --- a/examples/sandbox/views.py +++ b/examples/sandbox/views.py @@ -1,6 +1,6 @@ """The root view for the examples provided with Django REST framework""" -from django.core.urlresolvers import reverse +from djangorestframework.utils import reverse from djangorestframework.views import View @@ -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')}, - {'name': 'Simple ModelResource example', 'url': reverse('model-resource-root')}, - {'name': 'Simple Mixin-only example', 'url': reverse('mixin-view')}, - {'name': 'Object store API', 'url': reverse('object-store-root')}, - {'name': 'Code highlighting API', 'url': reverse('pygments-root')}, - {'name': 'Blog posts API', 'url': reverse('blog-posts-root')}, - {'name': 'Permissions example', 'url': reverse('permissions-example')} + 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)} ] -- cgit v1.2.3 From ca9465f11e3310b7b1e18cd893e96b69963f68c9 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Tue, 21 Feb 2012 20:47:55 +0000 Subject: reverse gets it's own module --- examples/blogpost/resources.py | 2 +- examples/blogpost/tests.py | 2 +- examples/mixin/urls.py | 2 +- examples/objectstore/views.py | 2 +- examples/permissionsexample/views.py | 2 +- examples/pygments_api/views.py | 2 +- examples/resourceexample/views.py | 2 +- examples/sandbox/views.py | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) (limited to 'examples') diff --git a/examples/blogpost/resources.py b/examples/blogpost/resources.py index d4e0594d..d11c5615 100644 --- a/examples/blogpost/resources.py +++ b/examples/blogpost/resources.py @@ -1,5 +1,5 @@ from djangorestframework.resources import ModelResource -from djangorestframework.utils import reverse +from djangorestframework.reverse import reverse from blogpost.models import BlogPost, Comment diff --git a/examples/blogpost/tests.py b/examples/blogpost/tests.py index 9f72e686..23f1ac21 100644 --- a/examples/blogpost/tests.py +++ b/examples/blogpost/tests.py @@ -5,7 +5,7 @@ from django.test import TestCase from django.utils import simplejson as json from djangorestframework.compat import RequestFactory -from djangorestframework.utils import reverse +from djangorestframework.reverse import reverse from djangorestframework.views import InstanceModelView, ListOrCreateModelView from blogpost import models, urls diff --git a/examples/mixin/urls.py b/examples/mixin/urls.py index 1f8c93b2..9652cfda 100644 --- a/examples/mixin/urls.py +++ b/examples/mixin/urls.py @@ -2,7 +2,7 @@ from djangorestframework.compat import View # Use Django 1.3's django.views.gen from djangorestframework.mixins import ResponseMixin from djangorestframework.renderers import DEFAULT_RENDERERS from djangorestframework.response import Response -from djangorestframework.utils import reverse +from djangorestframework.reverse import reverse from django.conf.urls.defaults import patterns, url diff --git a/examples/objectstore/views.py b/examples/objectstore/views.py index 61d51b1b..dd711482 100644 --- a/examples/objectstore/views.py +++ b/examples/objectstore/views.py @@ -1,6 +1,6 @@ from django.conf import settings -from djangorestframework.utils import reverse +from djangorestframework.reverse import reverse from djangorestframework.views import View from djangorestframework.response import Response from djangorestframework import status diff --git a/examples/permissionsexample/views.py b/examples/permissionsexample/views.py index 83ef0fd9..b0c1f02e 100644 --- a/examples/permissionsexample/views.py +++ b/examples/permissionsexample/views.py @@ -1,6 +1,6 @@ from djangorestframework.views import View from djangorestframework.permissions import PerUserThrottling, IsAuthenticated -from djangorestframework.utils import reverse +from djangorestframework.reverse import reverse class PermissionsExampleView(View): diff --git a/examples/pygments_api/views.py b/examples/pygments_api/views.py index 01710bd5..b5396681 100644 --- a/examples/pygments_api/views.py +++ b/examples/pygments_api/views.py @@ -4,7 +4,7 @@ from django.conf import settings from djangorestframework.resources import FormResource from djangorestframework.response import Response from djangorestframework.renderers import BaseRenderer -from djangorestframework.utils import reverse +from djangorestframework.reverse import reverse from djangorestframework.views import View from djangorestframework import status diff --git a/examples/resourceexample/views.py b/examples/resourceexample/views.py index 2f623c39..1b5b8e9c 100644 --- a/examples/resourceexample/views.py +++ b/examples/resourceexample/views.py @@ -1,4 +1,4 @@ -from djangorestframework.utils import reverse +from djangorestframework.reverse import reverse from djangorestframework.views import View from djangorestframework.response import Response from djangorestframework import status diff --git a/examples/sandbox/views.py b/examples/sandbox/views.py index 3872b503..78e00f46 100644 --- a/examples/sandbox/views.py +++ b/examples/sandbox/views.py @@ -1,6 +1,6 @@ """The root view for the examples provided with Django REST framework""" -from djangorestframework.utils import reverse +from djangorestframework.reverse import reverse from djangorestframework.views import View -- cgit v1.2.3 From 66eabe8bd1a539f92c3d677565d69edc29a1721b Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Tue, 21 Feb 2012 22:50:41 +0000 Subject: Remove staticviews. Use standard login/logout --- examples/urls.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'examples') diff --git a/examples/urls.py b/examples/urls.py index 33297b55..fda7942f 100644 --- a/examples/urls.py +++ b/examples/urls.py @@ -1,4 +1,4 @@ -from django.conf.urls.defaults import patterns, include +from django.conf.urls.defaults import patterns, include, url from sandbox.views import Sandbox try: from django.contrib.staticfiles.urls import staticfiles_urlpatterns @@ -15,8 +15,7 @@ urlpatterns = patterns('', (r'^pygments/', include('pygments_api.urls')), (r'^blog-post/', include('blogpost.urls')), (r'^permissions-example/', include('permissionsexample.urls')), - - (r'^', include('djangorestframework.urls')), + url(r'^restframework/', include('djangorestframework.urls', namespace='djangorestframework')), ) urlpatterns += staticfiles_urlpatterns() -- cgit v1.2.3 From 2b59df004a5bb7449aa4c07277ac846c330a79f7 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Thu, 23 Feb 2012 08:58:10 +0000 Subject: reverse takes request as a kwarg for compatibility with django's reverse --- examples/blogpost/resources.py | 8 +++-- examples/mixin/urls.py | 7 ++-- examples/modelresourceexample/models.py | 3 +- examples/modelresourceexample/resources.py | 1 + examples/modelresourceexample/urls.py | 2 +- examples/objectstore/views.py | 51 ++++++++++++++++++++---------- examples/pygments_api/views.py | 10 ++++-- examples/resourceexample/views.py | 2 +- examples/sandbox/views.py | 14 ++++---- 9 files changed, 63 insertions(+), 35 deletions(-) (limited to 'examples') 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[0-9]+)/$', InstanceModelView.as_view(resource=MyModelResource)), + url(r'^(?P[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)} ] -- cgit v1.2.3 From e15494a172f19d9388c0888fb566907aad95de0c Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Thu, 23 Feb 2012 09:21:01 +0000 Subject: Remove InstanceMixin auto-url magicks. --- examples/blogpost/models.py | 3 ++- examples/blogpost/resources.py | 5 +++++ examples/modelresourceexample/resources.py | 6 ++++++ examples/modelresourceexample/urls.py | 7 +++++-- examples/resourceexample/views.py | 6 +++++- 5 files changed, 23 insertions(+), 4 deletions(-) (limited to 'examples') diff --git a/examples/blogpost/models.py b/examples/blogpost/models.py index d77f530d..10732ab4 100644 --- a/examples/blogpost/models.py +++ b/examples/blogpost/models.py @@ -2,6 +2,7 @@ from django.db import models from django.template.defaultfilters import slugify import uuid + def uuid_str(): return str(uuid.uuid1()) @@ -14,6 +15,7 @@ RATING_CHOICES = ((0, 'Awful'), MAX_POSTS = 10 + class BlogPost(models.Model): key = models.CharField(primary_key=True, max_length=64, default=uuid_str, editable=False) title = models.CharField(max_length=128) @@ -37,4 +39,3 @@ class Comment(models.Model): comment = models.TextField() rating = models.IntegerField(blank=True, null=True, choices=RATING_CHOICES, help_text='How did you rate this post?') created = models.DateTimeField(auto_now_add=True) - diff --git a/examples/blogpost/resources.py b/examples/blogpost/resources.py index ac00a734..c3166bcf 100644 --- a/examples/blogpost/resources.py +++ b/examples/blogpost/resources.py @@ -11,6 +11,11 @@ class BlogPostResource(ModelResource): fields = ('created', 'title', 'slug', 'content', 'url', 'comments') ordering = ('-created',) + def url(self, instance): + return reverse('blog-post', + kwargs={'key': instance.key}, + request=self.request) + def comments(self, instance): return reverse('comments', kwargs={'blogpost': instance.key}, diff --git a/examples/modelresourceexample/resources.py b/examples/modelresourceexample/resources.py index 05090f8f..b74b0572 100644 --- a/examples/modelresourceexample/resources.py +++ b/examples/modelresourceexample/resources.py @@ -1,4 +1,5 @@ from djangorestframework.resources import ModelResource +from djangorestframework.reverse import reverse from modelresourceexample.models import MyModel @@ -6,3 +7,8 @@ class MyModelResource(ModelResource): model = MyModel fields = ('foo', 'bar', 'baz', 'url') ordering = ('created',) + + def url(self, instance): + return reverse('model-resource-instance', + kwargs={'id': instance.id}, + request=self.request) diff --git a/examples/modelresourceexample/urls.py b/examples/modelresourceexample/urls.py index c680dc65..c5e1f874 100644 --- a/examples/modelresourceexample/urls.py +++ b/examples/modelresourceexample/urls.py @@ -2,7 +2,10 @@ from django.conf.urls.defaults import patterns, url from djangorestframework.views import ListOrCreateModelView, InstanceModelView from modelresourceexample.resources import MyModelResource +my_model_list = ListOrCreateModelView.as_view(resource=MyModelResource) +my_model_instance = InstanceModelView.as_view(resource=MyModelResource) + urlpatterns = patterns('', - url(r'^$', ListOrCreateModelView.as_view(resource=MyModelResource), name='model-resource-root'), - url(r'^(?P[0-9]+)/$', InstanceModelView.as_view(resource=MyModelResource), name='model-resource-instance'), + url(r'^$', my_model_list, name='model-resource-root'), + url(r'^(?P[0-9]+)/$', my_model_instance, name='model-resource-instance'), ) diff --git a/examples/resourceexample/views.py b/examples/resourceexample/views.py index fcd0b273..0db23804 100644 --- a/examples/resourceexample/views.py +++ b/examples/resourceexample/views.py @@ -15,7 +15,11 @@ class ExampleView(View): """ Handle GET requests, returning a list of URLs pointing to 3 other views. """ - return {"Some other resources": [reverse('another-example', kwargs={'num':num}, request=request) for num in range(3)]} + resource_urls = [reverse('another-example', + kwargs={'num': num}, + request=request) + for num in range(3)] + return {"Some other resources": resource_urls} class AnotherExampleView(View): -- cgit v1.2.3 From 55317b03725dcfba5c3fd5b06b7c507fff69ff13 Mon Sep 17 00:00:00 2001 From: Marko Tibold Date: Wed, 29 Feb 2012 21:32:10 +0100 Subject: Fixes broken permissions-example. reverse takes `request` as a kwarg. --- examples/permissionsexample/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'examples') diff --git a/examples/permissionsexample/views.py b/examples/permissionsexample/views.py index b0c1f02e..5aeae7eb 100644 --- a/examples/permissionsexample/views.py +++ b/examples/permissionsexample/views.py @@ -12,11 +12,11 @@ class PermissionsExampleView(View): return [ { 'name': 'Throttling Example', - 'url': reverse('throttled-resource', request) + 'url': reverse('throttled-resource', request=request) }, { 'name': 'Logged in example', - 'url': reverse('loggedin-resource', request) + 'url': reverse('loggedin-resource', request=request) }, ] -- cgit v1.2.3 From e53c819cc7a5567f2c29375550e9ff62ec20d472 Mon Sep 17 00:00:00 2001 From: Marko Tibold Date: Tue, 27 Mar 2012 23:40:33 +0200 Subject: Fix broken pygments test. --- examples/pygments_api/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'examples') diff --git a/examples/pygments_api/views.py b/examples/pygments_api/views.py index 3dd55115..f41fa739 100644 --- a/examples/pygments_api/views.py +++ b/examples/pygments_api/views.py @@ -65,7 +65,7 @@ class PygmentsRoot(View): Return a list of all currently existing snippets. """ unique_ids = [os.path.split(f)[1] for f in list_dir_sorted_by_ctime(HIGHLIGHTED_CODE_DIR)] - return [reverse('pygments-instance', request, args=[unique_id]) for unique_id in unique_ids] + return [reverse('pygments-instance', request=request, args=[unique_id]) for unique_id in unique_ids] def post(self, request): """ @@ -85,7 +85,7 @@ class PygmentsRoot(View): remove_oldest_files(HIGHLIGHTED_CODE_DIR, MAX_FILES) - return Response(status.HTTP_201_CREATED, headers={'Location': reverse('pygments-instance', request, args=[unique_id])}) + return Response(status.HTTP_201_CREATED, headers={'Location': reverse('pygments-instance', request=request, args=[unique_id])}) class PygmentsInstance(View): -- cgit v1.2.3