|
|
@@ -23,10 +23,15 @@ class BaseHandler(tornado.web.RequestHandler):
|
|
|
return s.replace(b'\n', b'') # this is like Django's {% spaceless %}
|
|
|
|
|
|
def get_current_user(self):
|
|
|
- return self.get_secure_cookie('username')
|
|
|
-
|
|
|
- @tornado.gen.coroutine
|
|
|
- def create_session(self, username):
|
|
|
+ user_id = self.get_secure_cookie('user_id')
|
|
|
+ if user_id:
|
|
|
+ return {
|
|
|
+ 'id': int(user_id),
|
|
|
+ 'username': self.get_secure_cookie('username'),
|
|
|
+ }
|
|
|
+
|
|
|
+ def create_session(self, user_id, username):
|
|
|
+ self.set_secure_cookie('user_id', str(user_id))
|
|
|
self.set_secure_cookie('username', username)
|
|
|
|
|
|
@property
|
|
|
@@ -36,7 +41,10 @@ class BaseHandler(tornado.web.RequestHandler):
|
|
|
class MainHandler(BaseHandler):
|
|
|
@tornado.gen.coroutine
|
|
|
def get(self):
|
|
|
- self.render('home.html')
|
|
|
+ groups = None
|
|
|
+ if self.current_user:
|
|
|
+ groups = yield self.db.get_groups(self.current_user['id'])
|
|
|
+ self.render('home.html', groups=groups)
|
|
|
|
|
|
class RegisterHandler(BaseHandler):
|
|
|
@tornado.gen.coroutine
|
|
|
@@ -45,11 +53,11 @@ class RegisterHandler(BaseHandler):
|
|
|
|
|
|
@tornado.gen.coroutine
|
|
|
def post(self):
|
|
|
- username = self.get_argument("username", "")
|
|
|
- password = self.get_argument("password", "")
|
|
|
- yield self.db.create_user(username, password)
|
|
|
- self.create_session(username)
|
|
|
- self.redirect("/")
|
|
|
+ username = self.get_argument('username', '')
|
|
|
+ password = self.get_argument('password', '')
|
|
|
+ user_id = yield self.db.create_user(username, password)
|
|
|
+ self.create_session(user_id, username)
|
|
|
+ self.redirect('/')
|
|
|
|
|
|
class LoginHandler(BaseHandler):
|
|
|
@tornado.gen.coroutine
|
|
|
@@ -58,14 +66,14 @@ class LoginHandler(BaseHandler):
|
|
|
|
|
|
@tornado.gen.coroutine
|
|
|
def post(self):
|
|
|
- username = self.get_argument("username", "")
|
|
|
- password = self.get_argument("password", "")
|
|
|
+ username = self.get_argument('username', '')
|
|
|
+ password = self.get_argument('password', '')
|
|
|
user = yield self.db.check_user(username, password)
|
|
|
- if not user:
|
|
|
- self.render("login.html")
|
|
|
+ if user:
|
|
|
+ self.create_session(user['id'], user['username'])
|
|
|
+ self.redirect('/')
|
|
|
else:
|
|
|
- self.create_session(user['username'])
|
|
|
- self.redirect("/")
|
|
|
+ self.render('login.html')
|
|
|
|
|
|
class LogoutHandler(BaseHandler):
|
|
|
def get(self):
|
|
|
@@ -77,6 +85,12 @@ class StatsHandler(BaseHandler):
|
|
|
def get(self):
|
|
|
self.render('stats.html')
|
|
|
|
|
|
+class GroupCreateHandler(BaseHandler):
|
|
|
+ @tornado.gen.coroutine
|
|
|
+ def post(self):
|
|
|
+ yield self.db.create_group(self.current_user['id'], self.get_body_argument('name'))
|
|
|
+ self.redirect('/')
|
|
|
+
|
|
|
class CSSHandler(tornado.web.RequestHandler):
|
|
|
def get(self, css_path):
|
|
|
css_path = os.path.join(os.path.dirname(__file__), 'static', css_path) + '.ccss'
|
|
|
@@ -92,6 +106,7 @@ if __name__ == '__main__':
|
|
|
(r'/login', LoginHandler),
|
|
|
(r'/logout', LogoutHandler),
|
|
|
(r'/stats', StatsHandler),
|
|
|
+ (r'/groups/create', GroupCreateHandler),
|
|
|
(r'/(css/.+)\.css', CSSHandler),
|
|
|
],
|
|
|
template_path=os.path.join(os.path.dirname(__file__), 'templates'),
|