From 2cdff1b01e3aca6c56cef433e786e3ae75362739 Mon Sep 17 00:00:00 2001 From: Sébastien Piquemal Date: Tue, 7 Feb 2012 16:52:15 +0200 Subject: modified examples, somethin' still broken, can't find what --- examples/objectstore/views.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'examples/objectstore/views.py') diff --git a/examples/objectstore/views.py b/examples/objectstore/views.py index d85ed9f4..47f5147a 100644 --- a/examples/objectstore/views.py +++ b/examples/objectstore/views.py @@ -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 Response([reverse('stored-object', kwargs={'key':key}) for key in ctime_sorted_basenames]) def post(self, request): """ @@ -51,7 +51,8 @@ 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})}) + self.headers['Location'] = reverse('stored-object', kwargs={'key':key}) + return Response(self.CONTENT, status=status.HTTP_201_CREATED) class StoredObject(View): @@ -67,7 +68,7 @@ class StoredObject(View): pathname = os.path.join(OBJECT_STORE_DIR, key) if not os.path.exists(pathname): return Response(status.HTTP_404_NOT_FOUND) - return pickle.load(open(pathname, 'rb')) + return Response(pickle.load(open(pathname, 'rb'))) def put(self, request, key): """ @@ -75,7 +76,7 @@ class StoredObject(View): """ pathname = os.path.join(OBJECT_STORE_DIR, key) pickle.dump(self.CONTENT, open(pathname, 'wb')) - return self.CONTENT + return Response(self.CONTENT) def delete(self, request, key): """ @@ -85,3 +86,4 @@ class StoredObject(View): if not os.path.exists(pathname): return Response(status.HTTP_404_NOT_FOUND) os.remove(pathname) + return Response() -- cgit v1.2.3 From b33579a7a18c2cbc6e3789d4a7dc78c82fb0fe80 Mon Sep 17 00:00:00 2001 From: Sébastien Piquemal Date: Fri, 10 Feb 2012 11:05:20 +0200 Subject: attempt at fixing the examples --- examples/objectstore/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'examples/objectstore/views.py') diff --git a/examples/objectstore/views.py b/examples/objectstore/views.py index 47f5147a..ae545394 100644 --- a/examples/objectstore/views.py +++ b/examples/objectstore/views.py @@ -67,7 +67,7 @@ class StoredObject(View): """ pathname = os.path.join(OBJECT_STORE_DIR, key) if not os.path.exists(pathname): - return Response(status.HTTP_404_NOT_FOUND) + return Response(status=status.HTTP_404_NOT_FOUND) return Response(pickle.load(open(pathname, 'rb'))) def put(self, request, key): @@ -84,6 +84,6 @@ class StoredObject(View): """ pathname = os.path.join(OBJECT_STORE_DIR, key) if not os.path.exists(pathname): - return Response(status.HTTP_404_NOT_FOUND) + return Response(status=status.HTTP_404_NOT_FOUND) os.remove(pathname) return Response() -- cgit v1.2.3 From af9e4f69d732cc643d6ec7ae13d4a19ac0332d44 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Tue, 21 Feb 2012 20:12:14 +0000 Subject: Merging master into develop --- examples/objectstore/views.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'examples/objectstore/views.py') diff --git a/examples/objectstore/views.py b/examples/objectstore/views.py index ae545394..a8bc249a 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 Response([reverse('stored-object', kwargs={'key':key}) for key in ctime_sorted_basenames]) + return Response([reverse('stored-object', request, kwargs={'key':key}) for key in ctime_sorted_basenames]) def post(self, request): """ @@ -51,8 +51,8 @@ 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) - self.headers['Location'] = reverse('stored-object', kwargs={'key':key}) - return Response(self.CONTENT, status=status.HTTP_201_CREATED) + url = reverse('stored-object', request, kwargs={'key':key}) + return Response(self.CONTENT, status.HTTP_201_CREATED, {'Location': url}) class StoredObject(View): -- cgit v1.2.3 From 5fd4c639d7c64572dd07dc31dcd627bed9469b05 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Tue, 21 Feb 2012 20:57:36 +0000 Subject: Merge master into develop --- examples/objectstore/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'examples/objectstore/views.py') diff --git a/examples/objectstore/views.py b/examples/objectstore/views.py index a8bc249a..b48bfac2 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 -- cgit v1.2.3 From 1cde31c86d9423e9b7a7409c2ef2ba7c0500e47f Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Sat, 25 Feb 2012 18:45:17 +0000 Subject: Massive merge --- examples/objectstore/views.py | 52 ++++++++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 16 deletions(-) (limited to 'examples/objectstore/views.py') diff --git a/examples/objectstore/views.py b/examples/objectstore/views.py index b48bfac2..a8889cd8 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,25 @@ 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 Response([reverse('stored-object', request, kwargs={'key':key}) for key in ctime_sorted_basenames]) + content = [get_file_url(key, request) + for key in ctime_sorted_basenames] + return Response(content) 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) - url = reverse('stored-object', request, kwargs={'key':key}) + url = get_file_url(key, request) return Response(self.CONTENT, status.HTTP_201_CREATED, {'Location': url}) @@ -60,30 +79,31 @@ 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=status.HTTP_404_NOT_FOUND) - return Response(pickle.load(open(pathname, 'rb'))) + return Response(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 Response(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=status.HTTP_404_NOT_FOUND) - os.remove(pathname) + os.remove(filename) return Response() -- cgit v1.2.3 From eea2aa04378d27d79e7aba12ce95c697148bd57e Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Wed, 29 Aug 2012 19:54:38 +0100 Subject: Remove examples (to be moved to a seperate project) --- examples/objectstore/views.py | 109 ------------------------------------------ 1 file changed, 109 deletions(-) delete mode 100644 examples/objectstore/views.py (limited to 'examples/objectstore/views.py') diff --git a/examples/objectstore/views.py b/examples/objectstore/views.py deleted file mode 100644 index a8889cd8..00000000 --- a/examples/objectstore/views.py +++ /dev/null @@ -1,109 +0,0 @@ -from django.conf import settings - -from djangorestframework.reverse import reverse -from djangorestframework.views import View -from djangorestframework.response import Response -from djangorestframework import status - -import pickle -import os -import uuid -import operator - -OBJECT_STORE_DIR = os.path.join(settings.MEDIA_ROOT, 'objectstore') -MAX_FILES = 10 - -if not os.path.exists(OBJECT_STORE_DIR): - os.makedirs(OBJECT_STORE_DIR) - - -def remove_oldest_files(dir, max_files): - """ - Remove the oldest files in a directory 'dir', leaving at most 'max_files' remaining. - We use this to limit the number of resources in the sandbox. - """ - filepaths = [os.path.join(dir, file) for file in os.listdir(dir) if not file.startswith('.')] - ctime_sorted_paths = [item[0] for item in sorted([(path, os.path.getctime(path)) for path in filepaths], - key=operator.itemgetter(1), reverse=True)] - [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. - Allows the client to get a complete list of all the stored objects, or to create a new stored object. - """ - - def get(self, request): - """ - 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('.')] - 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)] - content = [get_file_url(key, request) - for key in ctime_sorted_basenames] - return Response(content) - - def post(self, request): - """ - Create a new stored object, with a unique key. - """ - key = str(uuid.uuid1()) - filename = get_filename(key) - pickle.dump(self.CONTENT, open(filename, 'wb')) - - remove_oldest_files(OBJECT_STORE_DIR, MAX_FILES) - url = get_file_url(key, request) - return Response(self.CONTENT, status.HTTP_201_CREATED, {'Location': url}) - - -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. - """ - filename = get_filename(key) - if not os.path.exists(filename): - return Response(status=status.HTTP_404_NOT_FOUND) - return Response(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. - """ - filename = get_filename(key) - pickle.dump(self.CONTENT, open(filename, 'wb')) - return Response(self.CONTENT) - - def delete(self, request, key): - """ - Delete a stored object, by removing it's pickled file. - """ - filename = get_filename(key) - if not os.path.exists(filename): - return Response(status=status.HTTP_404_NOT_FOUND) - os.remove(filename) - return Response() -- cgit v1.2.3