summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Petrello <lists@ryanpetrello.com>2015-05-13 08:34:53 -0700
committerRyan Petrello <lists@ryanpetrello.com>2015-05-21 13:00:22 -0700
commit5e48da32acbc3fb6575981d7731d55e5931e9960 (patch)
tree38f471d547bb379ce35592bdcddbd04d3bf1a66d
parent26d1d59aec72d3123cbff8dc929f200a198457fb (diff)
downloadpecan-5e48da32acbc3fb6575981d7731d55e5931e9960.tar.gz
Update the `rest-api` scaffold to use generic controllers, *not* RestController
Closes-Bug #1413038 Change-Id: I6b91479d9af754b1833abf212a20112e8372a948
-rw-r--r--pecan/scaffolds/rest-api/+package+/controllers/root.py45
-rw-r--r--pecan/scaffolds/rest-api/+package+/tests/test_functional.py_tmpl4
2 files changed, 29 insertions, 20 deletions
diff --git a/pecan/scaffolds/rest-api/+package+/controllers/root.py b/pecan/scaffolds/rest-api/+package+/controllers/root.py
index 18ea5dc..f106bb2 100644
--- a/pecan/scaffolds/rest-api/+package+/controllers/root.py
+++ b/pecan/scaffolds/rest-api/+package+/controllers/root.py
@@ -1,5 +1,4 @@
from pecan import expose, response, abort
-from pecan.rest import RestController
people = {
1: 'Luke',
@@ -9,30 +8,40 @@ people = {
}
-class PeopleController(RestController):
+class PersonController(object):
- @expose('json')
- def get_all(self):
- return people
-
- @expose()
- def get_one(self, person_id):
- return people.get(int(person_id)) or abort(404)
+ def __init__(self, person_id):
+ self.person_id = person_id
- @expose()
- def post(self):
- # TODO: Create a new person
- response.status = 201
+ @expose(generic=True)
+ def index(self):
+ return people.get(self.person_id) or abort(404)
- @expose()
- def put(self, person_id):
+ @index.when(method='PUT')
+ def put(self):
# TODO: Idempotent PUT (returns 200 or 204)
response.status = 204
- @expose()
- def delete(self, person_id):
+ @index.when(method='DELETE')
+ def delete(self):
# TODO: Idempotent DELETE
- response.status = 200
+ response.status = 204
+
+
+class PeopleController(object):
+
+ @expose()
+ def _lookup(self, person_id, *remainder):
+ return PersonController(int(person_id)), remainder
+
+ @expose(generic=True, template='json')
+ def index(self):
+ return people
+
+ @index.when(method='POST', template='json')
+ def post(self):
+ # TODO: Create a new person
+ response.status = 201
class RootController(object):
diff --git a/pecan/scaffolds/rest-api/+package+/tests/test_functional.py_tmpl b/pecan/scaffolds/rest-api/+package+/tests/test_functional.py_tmpl
index 6f1b43b..db414db 100644
--- a/pecan/scaffolds/rest-api/+package+/tests/test_functional.py_tmpl
+++ b/pecan/scaffolds/rest-api/+package+/tests/test_functional.py_tmpl
@@ -22,11 +22,11 @@ class TestRootController(FunctionalTest):
assert response.status_int == 201
def test_put(self):
- response = self.app.put('/people/1')
+ response = self.app.put('/people/1/')
assert response.status_int == 204
def test_delete(self):
- response = self.app.delete('/people/1')
+ response = self.app.delete('/people/1/')
assert response.status_int == 204
def test_not_found(self):