Merge lp:~soren/surveilr/user into lp:surveilr

Proposed by Soren Hansen
Status: Merged
Approved by: Soren Hansen
Approved revision: 10
Merged at revision: 9
Proposed branch: lp:~soren/surveilr/user
Merge into: lp:surveilr
Diff against target: 99 lines (+60/-0)
3 files modified
surveilr/api/server.py (+33/-0)
surveilr/models.py (+5/-0)
surveilr/tests/test_api_server.py (+22/-0)
To merge this branch: bzr merge lp:~soren/surveilr/user
Reviewer Review Type Date Requested Status
Soren Hansen Pending
Review via email: mp+83749@code.launchpad.net

Commit message

Add a basic user concept

To post a comment you must log in.
lp:~soren/surveilr/user updated
10. By Soren Hansen

Fix typo (s/service/user)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'surveilr/api/server.py'
2--- surveilr/api/server.py 2011-11-20 00:17:50 +0000
3+++ surveilr/api/server.py 2011-11-29 20:10:29 +0000
4@@ -39,6 +39,38 @@
5 from surveilr import utils
6
7
8+class UserController(object):
9+ """Routes style controller for actions related to users"""
10+
11+ def create(self, req):
12+ """Called for POST requests to /users
13+
14+ Creates the user, returns a JSON object with the ID assigned
15+ to the user"""
16+ data = json.loads(req.body)
17+ user = models.User(**data)
18+ user.save()
19+ response = {'id': user.key}
20+ return Response(json.dumps(response))
21+
22+ def show(self, req, id):
23+ """Called for GET requests to /users/{id}
24+
25+ Returns information for the given service"""
26+ try:
27+ user = models.User.get(id)
28+ return Response({'id': user.key})
29+ except riakalchemy.NoSuchObjectError:
30+ return HTTPNotFound()
31+
32+ def delete(self, req, id):
33+ """Called for DELETE requests to /users/{id}
34+
35+ Delete the given user"""
36+ models.User.get(id).delete()
37+ return Response('')
38+
39+
40 class ServiceController(object):
41 """Routes style controller for actions related to services"""
42
43@@ -105,6 +137,7 @@
44 map.resource("metric", "metrics", controller='MetricController',
45 path_prefix='/services/{service_name}')
46 map.resource("service", "services", controller='ServiceController')
47+ map.resource("user", "users", controller='UserController')
48
49 @wsgify
50 def __call__(self, req):
51
52=== modified file 'surveilr/models.py'
53--- surveilr/models.py 2011-11-20 00:17:50 +0000
54+++ surveilr/models.py 2011-11-29 20:10:29 +0000
55@@ -37,6 +37,11 @@
56 most_recent_log_entry = RelatedObjects()
57
58
59+class User(RiakObject):
60+ """A user of the service"""
61+ bucket_name = 'users'
62+
63+
64 class LogEntry(RiakObject):
65 """A log entry holding one or more metrics
66
67
68=== modified file 'surveilr/tests/test_api_server.py'
69--- surveilr/tests/test_api_server.py 2011-11-20 00:17:50 +0000
70+++ surveilr/tests/test_api_server.py 2011-11-29 20:10:29 +0000
71@@ -34,6 +34,28 @@
72 import riakalchemy
73 riakalchemy.connect()
74
75+ def test_create_retrieve_user(self):
76+ """Create, retrieve, delete, attempt to retrieve again"""
77+ req = Request.blank('/users',
78+ method='POST',
79+ POST=json.dumps({}))
80+ resp = application(req)
81+ self.assertEquals(resp.status_int, 200)
82+
83+ service_id = json.loads(resp.body)['id']
84+
85+ req = Request.blank('/users/%s' % service_id)
86+ resp = application(req)
87+ self.assertEquals(resp.status_int, 200)
88+
89+ req = Request.blank('/users/%s' % service_id, method='DELETE')
90+ resp = application(req)
91+ self.assertEquals(resp.status_int, 200)
92+
93+ req = Request.blank('/users/%s' % service_id)
94+ resp = application(req)
95+ self.assertEquals(resp.status_int, 404)
96+
97 def test_create_retrieve_service(self):
98 """Create, retrieve, delete, attempt to retrieve again"""
99 req = Request.blank('/services',

Subscribers

People subscribed via source and target branches

to all changes: