|
|
@@ -84,6 +84,7 @@ class LogoutHandler(BaseHandler):
|
|
|
self.redirect('/')
|
|
|
|
|
|
class StatsHandler(BaseHandler):
|
|
|
+ @tornado.web.authenticated
|
|
|
@tornado.gen.coroutine
|
|
|
def get(self, group_id, server_id):
|
|
|
group_id = int(group_id)
|
|
|
@@ -91,12 +92,29 @@ class StatsHandler(BaseHandler):
|
|
|
servers = yield self.db.get_servers(self.current_user['id'])
|
|
|
self.render('stats.html', group_id=group_id, api_key=api_key, servers=servers[group_id])
|
|
|
|
|
|
+class GroupsHandler(BaseHandler):
|
|
|
+ @tornado.web.authenticated
|
|
|
+ @tornado.gen.coroutine
|
|
|
+ def get(self):
|
|
|
+ user_id = self.current_user['id']
|
|
|
+ groups = yield self.db.get_groups(user_id)
|
|
|
+ self.render('groups.html', groups=groups)
|
|
|
+
|
|
|
class GroupCreateHandler(BaseHandler):
|
|
|
+ @tornado.web.authenticated
|
|
|
@tornado.gen.coroutine
|
|
|
def post(self):
|
|
|
yield self.db.create_group(self.current_user['id'], self.get_body_argument('name'))
|
|
|
self.redirect('/')
|
|
|
|
|
|
+class GroupInviteHandler(BaseHandler):
|
|
|
+ @tornado.web.authenticated
|
|
|
+ @tornado.gen.coroutine
|
|
|
+ def post(self):
|
|
|
+ group_id = int(self.get_body_argument('group'))
|
|
|
+ yield self.db.invite_user_group(self.get_body_argument('username'), group_id)
|
|
|
+ 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'
|
|
|
@@ -112,7 +130,9 @@ if __name__ == '__main__':
|
|
|
(r'/login', LoginHandler),
|
|
|
(r'/logout', LogoutHandler),
|
|
|
(r'/stats/(\d+)/(\d+)', StatsHandler),
|
|
|
+ (r'/groups', GroupsHandler),
|
|
|
(r'/groups/create', GroupCreateHandler),
|
|
|
+ (r'/groups/invite', GroupInviteHandler),
|
|
|
(r'/(css/.+)\.css', CSSHandler),
|
|
|
],
|
|
|
template_path=os.path.join(os.path.dirname(__file__), 'templates'),
|