/
handlers.py
55 lines (40 loc) · 1.25 KB
/
handlers.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
# -*- coding: utf-8 -*-
import json
import rethinkdb as r
from tornado.web import RequestHandler
from tornado.websocket import WebSocketHandler
from tornado.web import authenticated
from tornado.gen import coroutine
from .db import LISTENERS
from .utils import template
class BaseHandler(RequestHandler):
def initialize(self):
self.db = self.application.db
self.users = r.table('users')
def get_current_user(self):
username = self.get_secure_cookie("user")
if username:
return username.decode("utf-8")[1:-1]
return None
class BaseWebSocketHandler(WebSocketHandler):
def get_current_user(self):
username = self.get_secure_cookie("user")
if username:
return username[1:-1].decode("utf-8")[2:-1]
return None
class HomeHandler(BaseHandler):
@coroutine
def get(self):
self.render(template('home.html'),
user=self.get_current_user())
class DataSyncHandler(BaseWebSocketHandler):
@authenticated
@coroutine
def open(self):
LISTENERS.append(self)
@authenticated
def on_message(self, message):
self.write_message(json.dumps(message))
@authenticated
def on_close(self):
LISTENERS.remove(self)