Commit d4fa55fc2eb09dffa1498a46c2897bd7c6f6915d
1 parent
32311fb1
Exists in
master
and in
1 other branch
login and correction are now async
Showing
1 changed file
with
17 additions
and
12 deletions
Show diff stats
serve.py
1 | #!/usr/bin/env python3 | 1 | #!/usr/bin/env python3 |
2 | 2 | ||
3 | -# base | 3 | +# python standard library |
4 | from os import path | 4 | from os import path |
5 | import sys | 5 | import sys |
6 | -import argparse | ||
7 | -import logging.config | ||
8 | -import json | ||
9 | import base64 | 6 | import base64 |
10 | import uuid | 7 | import uuid |
8 | +import logging.config | ||
9 | +import argparse | ||
11 | import mimetypes | 10 | import mimetypes |
12 | import signal | 11 | import signal |
12 | +import asyncio | ||
13 | +import json | ||
13 | 14 | ||
14 | -# packages | 15 | +# user installed libraries |
15 | import tornado.ioloop | 16 | import tornado.ioloop |
16 | import tornado.web | 17 | import tornado.web |
17 | import tornado.httpserver | 18 | import tornado.httpserver |
18 | from tornado import template, gen | 19 | from tornado import template, gen |
19 | 20 | ||
20 | -# project | ||
21 | -from tools import load_yaml, md_to_html | 21 | +# this project |
22 | from app import App, AppException | 22 | from app import App, AppException |
23 | +from tools import load_yaml, md_to_html | ||
23 | 24 | ||
24 | 25 | ||
25 | class WebApplication(tornado.web.Application): | 26 | class WebApplication(tornado.web.Application): |
@@ -69,14 +70,16 @@ class LoginHandler(BaseHandler): | @@ -69,14 +70,16 @@ class LoginHandler(BaseHandler): | ||
69 | def get(self): | 70 | def get(self): |
70 | self.render('login.html', error='') | 71 | self.render('login.html', error='') |
71 | 72 | ||
72 | - # @gen.coroutine | ||
73 | - def post(self): | 73 | + async def post(self): |
74 | uid = self.get_body_argument('uid') | 74 | uid = self.get_body_argument('uid') |
75 | if uid.startswith('l'): # remove prefix 'l' | 75 | if uid.startswith('l'): # remove prefix 'l' |
76 | uid = uid[1:] | 76 | uid = uid[1:] |
77 | pw = self.get_body_argument('pw') | 77 | pw = self.get_body_argument('pw') |
78 | 78 | ||
79 | - if self.testapp.login(uid, pw): | 79 | + loop = asyncio.get_event_loop() |
80 | + login_ok = await loop.run_in_executor(None, self.testapp.login, uid, pw) | ||
81 | + | ||
82 | + if login_ok: | ||
80 | self.set_secure_cookie("user", str(uid), expires_days=30) | 83 | self.set_secure_cookie("user", str(uid), expires_days=30) |
81 | self.redirect(self.get_argument("next", "/")) | 84 | self.redirect(self.get_argument("next", "/")) |
82 | else: | 85 | else: |
@@ -206,7 +209,7 @@ class TestHandler(BaseHandler): | @@ -206,7 +209,7 @@ class TestHandler(BaseHandler): | ||
206 | 209 | ||
207 | # POST | 210 | # POST |
208 | @tornado.web.authenticated | 211 | @tornado.web.authenticated |
209 | - def post(self): | 212 | + async def post(self): |
210 | uid = self.current_user | 213 | uid = self.current_user |
211 | 214 | ||
212 | # self.request.arguments = {'answered-0': [b'on'], '0': [b'13.45']} | 215 | # self.request.arguments = {'answered-0': [b'on'], '0': [b'13.45']} |
@@ -229,7 +232,9 @@ class TestHandler(BaseHandler): | @@ -229,7 +232,9 @@ class TestHandler(BaseHandler): | ||
229 | 'numeric-interval'): | 232 | 'numeric-interval'): |
230 | ans[i] = ans[i][0] | 233 | ans[i] = ans[i][0] |
231 | 234 | ||
232 | - self.testapp.correct_test(uid, ans) | 235 | + loop = asyncio.get_event_loop() |
236 | + await loop.run_in_executor(None, self.testapp.correct_test, uid, ans) | ||
237 | + | ||
233 | self.testapp.logout(uid) | 238 | self.testapp.logout(uid) |
234 | self.clear_cookie('user') | 239 | self.clear_cookie('user') |
235 | 240 |