/
server.py
59 lines (44 loc) · 1.31 KB
/
server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import json
import random
from bson.objectid import ObjectId
import pymongo
import web
from utils import *
# set MongoDB connection
connection = pymongo.Connection("localhost", 27017)
db = connection.test
urls = (
'/api/todos/([a-f0-9]+)', 'todos',
'/api/todos', 'todos',
'/', 'home',
)
app = web.application(urls, globals())
render = web.template.render('templates/')
web.config.debug = True
# session = web.session.Session(app, web.session.DiskStore('sessions'))
# customize 500 error
def internalerror():
return web.internalerror(json.dumps({'message': 'Internal server error.'}))
app.internalerror = internalerror
class home:
def GET(self):
return render.index()
class todos:
def GET(self):
raise json.response(web.ok, data=list(db.todos.find()))
def POST(self):
data = json.request()
db.todos.save(data, safe=True)
raise json.response(web.created, data=data)
# raise custom_error(json.dumps(
# { u'message': u'Custom Error raised' }
# ))
def PUT(self, _id):
data = json.request()
db.todos.save(data, safe=True, multi=False)
return web.no_content()
def DELETE(self, _id):
db.todos.remove(ObjectId(_id), safe=True)
return web.no_content()
if __name__ == "__main__":
app.run()