From 3d24dd0fb7fc8416ff0a151889991c16819112a1 Mon Sep 17 00:00:00 2001 From: Miguel Barao Date: Thu, 26 Oct 2017 22:19:34 +0100 Subject: [PATCH] - configuration of logger system to support --debug --- BUGS.md | 10 ++++++---- config/server.conf | 21 --------------------- serve.py | 40 ++++++++++++++-------------------------- 3 files changed, 20 insertions(+), 51 deletions(-) delete mode 100644 config/server.conf diff --git a/BUGS.md b/BUGS.md index 2b9e22a..ff46be1 100644 --- a/BUGS.md +++ b/BUGS.md @@ -1,14 +1,11 @@ # BUGS -- total do teste aparece negativo. -- espaco no final das tabelas. - qual a diferenca entre md_to_html e md_to_html_review, parece desnecessario haver dois. - servir imagens das perguntas -- como alterar configuracao para mostrar logs de debug? - hints nao funciona - uniformizar question.py com a de aprendizations... -- permitir eliminar teste a decorrer de modo a que o aluno possa recomeçar (e.g. noutro browser) +- permitir eliminar teste a decorrer - servidor nao esta a lidar com eventos scroll/resize. ignorar? # TODO @@ -20,6 +17,8 @@ npm install mathjax-node mathjax-node-cli # pacotes em ~/node_modules node_modules/mathjax-node-cli/bin/tex2svg '\sqrt{x}' usar isto para gerar svg que passa a fazer parte do texto da pergunta (markdown suporta tags svg?) + fazer funçao tex() que recebe formula e converte para svg. exemplo: + fr'''A formula é {tex(\sqrt{x]})}''' - Gerar pdf's com todos os testes no final (pdfkit). - manter registo dos unfocus durante o teste e de qual a pergunta visivel nesse momento @@ -37,6 +36,9 @@ # FIXED +- como alterar configuracao para mostrar logs de debug? +- espaco no final das tabelas. +- total do teste aparece negativo. - reset password nao funciona no admin - reload a intervalos não funciona. - allow/deny nao funciona no /admin. diff --git a/config/server.conf b/config/server.conf deleted file mode 100644 index e3cdf9a..0000000 --- a/config/server.conf +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- - -[global] -environment= 'production' - -; number of threads running -server.thread_pool= 10 - -; Host address and port -; set socket_port = 443 if SSL is enabled below, 8080 otherwise -; if port is 443 then the server should be run as root. SSL also works on 8080. -server.socket_host = '0.0.0.0' -server.socket_port = 8080 - -; Uncomment to enable SSL (ssl_module = 'builtin' or 'pyopenssl') -; server.ssl_module = 'builtin' -; server.ssl_certificate = 'certs/webserver.crt' -; server.ssl_private_key = 'certs/webserver.key' - -; not required for snakeoil: -; server.ssl_certificate_chain = 'ca_certs.crt' diff --git a/serve.py b/serve.py index 9a84392..bff5983 100755 --- a/serve.py +++ b/serve.py @@ -59,6 +59,7 @@ class BaseHandler(tornado.web.RequestHandler): if cookie: return cookie.decode('utf-8') + # ------------------------------------------------------------------------- # /login and /logout # ------------------------------------------------------------------------- @@ -75,7 +76,9 @@ class LoginHandler(BaseHandler): self.set_secure_cookie("user", str(uid), expires_days=30) self.redirect(self.get_argument("next", "/")) else: - self.render("login.html", error='Não autorizado ou número/senha inválido') + self.render("login.html", + error='Não autorizado ou número/senha inválido') + # ------------------------------------------------------------------------- class LogoutHandler(BaseHandler): @@ -85,6 +88,7 @@ class LogoutHandler(BaseHandler): self.clear_cookie('user') self.redirect('/') + # ------------------------------------------------------------------------- # FIXME checkit class FileHandler(BaseHandler): @@ -101,6 +105,7 @@ class FileHandler(BaseHandler): self.write(f.read()) f.close() + # ------------------------------------------------------------------------- # FIXME images missing, needs testing # ------------------------------------------------------------------------- @@ -128,7 +133,6 @@ class TestHandler(BaseHandler): t = self.testapp.get_test(uid) or self.testapp.generate_test(uid) self.render('test.html', t=t, md=md_to_html, templ=self.templates) - # POST @tornado.web.authenticated def post(self): @@ -150,7 +154,8 @@ class TestHandler(BaseHandler): ans[i] = None else: ans[i] = ans[i][0] - elif q['type'] in ('text', 'text-regex', 'textarea', 'numeric-interval'): + elif q['type'] in ('text', 'text-regex', 'textarea', + 'numeric-interval'): ans[i] = ans[i][0] self.testapp.correct_test(uid, ans) @@ -235,9 +240,8 @@ class RootHandler(BaseHandler): self.redirect('/test') -# ---------------------------------------------------------------------------- +# ------------------------------------------------------------------------- class AdminHandler(BaseHandler): - @tornado.web.authenticated def get(self): if self.current_user != '0': @@ -264,7 +268,6 @@ class AdminHandler(BaseHandler): else: self.render('admin.html') - @tornado.web.authenticated def post(self): if self.current_user != '0': @@ -290,28 +293,10 @@ class AdminHandler(BaseHandler): logging.error(f'Unknown command in post: "{cmd}"') - -# # ============================================================================ -# # Student webservice -# # ============================================================================ -# class StudentWebService(object): - -# @cherrypy.tools.accept(media='application/json') # FIXME -# def POST(self, **args): -# # uid = cherrypy.session.get(SESSION_KEY) -# if args['cmd'] == 'focus': -# v = json.loads(args['value']) -# self.app.set_student_focus(uid=args['number'], value=v) - - - # ------------------------------------------------------------------------- # Tornado web server # ------------------------------------------------------------------------- def main(): - SERVER_PATH = path.dirname(path.realpath(__file__)) - LOGGER_CONF = path.join(SERVER_PATH, 'config/logger.yaml') - # --- Commandline argument parsing argparser = argparse.ArgumentParser(description='Server for online tests. Enrolled students and tests have to be previously configured. Please read the documentation included with this software before running the server.') argparser.add_argument('--debug', action='store_true', @@ -321,6 +306,10 @@ def main(): arg = argparser.parse_args() # --- Setup logging + logger_file = 'logger-debug.yaml' if arg.debug else 'logger.yaml' + SERVER_PATH = path.dirname(path.realpath(__file__)) + LOGGER_CONF = path.join(SERVER_PATH, f'config/{logger_file}') + try: logging.config.dictConfig(load_yaml(LOGGER_CONF)) except: @@ -349,7 +338,7 @@ def main(): ssl_options={ "certfile": "certs/cert.crt", "keyfile": "certs/cert.key" - }) + }) http_server.listen(8443) # --- run webserver @@ -365,4 +354,3 @@ def main(): # ------------------------------------------------------------------------- if __name__ == "__main__": main() - -- libgit2 0.21.2