Commit b0c36401956182207b3adaf7e87bfd3f9d9863d3

Authored by Miguel Barão
1 parent d2d98e81
Exists in master and in 1 other branch dev

- disabled FileHandler because its not working

BUGS.md
1 1  
2 2 # BUGS
3 3  
4   -- upgrade para tornado 5.0.
5   -- servir imagens das perguntas
  4 +- servir imagens das perguntas não funciona. Necessario passar a ref da pergunta no link para poder ajustar o path no FileHandler
6 5 - o eventloop está a bloquear. correção do teste é blocking. usar threadpoolexecutor?
7 6 - se submissão falhar (aluno desconectado da rede) nao pode sair da página para nao perder o teste. possiveis solucoes:
8 7 - botao submeter valida se esta online com um post willing_to_submit, se estiver online, mostra mensagem de confirmacao, caso contrario avisa que nao esta online.
... ... @@ -46,6 +45,7 @@
46 45  
47 46 # FIXED
48 47  
  48 +- upgrade para tornado 5.0.
49 49 - ctrl-c should ask for confirmation before exiting.
50 50 - md_to_html() nao usa o segundo argumento q. pode retirar-se dos templates?
51 51 - config/logger.yaml ainda é do cherrypy...
... ...
serve.py
... ... @@ -88,7 +88,6 @@ class LoginHandler(BaseHandler):
88 88 class LogoutHandler(BaseHandler):
89 89 @tornado.web.authenticated
90 90 def get(self):
91   - # self.testapp.logout(self.current_user)
92 91 self.clear_cookie('user')
93 92 self.redirect('/')
94 93  
... ... @@ -104,36 +103,45 @@ class FileHandler(BaseHandler):
104 103 chunk_size = 4 * 1024 * 1024 # serve up to 4 MiB multiple times
105 104  
106 105 @tornado.web.authenticated
107   - async def get(self, filename):
  106 + def get(self, filename):
108 107 uid = self.current_user
109   - # public_dir = self.learn.get_current_public_dir(uid)
110   - filepath = path.expanduser(path.join(public_dir, filename))
  108 + # ref = self.get_query_argument('ref')
  109 + # print(ref)
  110 + # questions_path = self.testapp.get_questions_path()
  111 + # p = path.join(questions_path, ref, 'public', filename)
  112 + # print(p)
  113 + logging.error(f'{uid} requested file but FileHandler is not working!!!')
  114 + self.write('image')
111 115  
112   - try:
113   - f = open(filepath, 'rb')
114   - except FileNotFoundError:
115   - logging.error(f'File not found: {filepath}')
116   - except PermissionError:
117   - logging.error(f'No permission: {filepath}')
118   - else:
119   - content_type = mimetypes.guess_type(filename)
120   - self.set_header("Content-Type", content_type[0])
121 116  
122   - # divide the file into chunks and write one chunk at a time, so
123   - # that the write does not block the ioloop for very long.
124   - with f:
125   - chunk = f.read(self.chunk_size)
126   - while chunk:
127   - try:
128   - self.write(chunk) # write the cunk to response
129   - await self.flush() # flush the current chunk to socket
130   - except iostream.StreamClosedError:
131   - break # client closed the connection
132   - finally:
133   - del chunk
134   - await gen.sleep(0.000000001) # 1 nanosecond (hack)
135   - # FIXME in the upcomming tornado 5.0 use `await asyncio.sleep(0)` instead
136   - chunk = f.read(self.chunk_size)
  117 + # # public_dir = self.learn.get_current_public_dir(uid)
  118 + # filepath = path.expanduser(path.join(public_dir, filename))
  119 +
  120 + # try:
  121 + # f = open(filepath, 'rb')
  122 + # except FileNotFoundError:
  123 + # logging.error(f'File not found: {filepath}')
  124 + # except PermissionError:
  125 + # logging.error(f'No permission: {filepath}')
  126 + # else:
  127 + # content_type = mimetypes.guess_type(filename)
  128 + # self.set_header("Content-Type", content_type[0])
  129 +
  130 + # # divide the file into chunks and write one chunk at a time, so
  131 + # # that the write does not block the ioloop for very long.
  132 + # with f:
  133 + # chunk = f.read(self.chunk_size)
  134 + # while chunk:
  135 + # try:
  136 + # self.write(chunk) # write the cunk to response
  137 + # await self.flush() # flush the current chunk to socket
  138 + # except iostream.StreamClosedError:
  139 + # break # client closed the connection
  140 + # finally:
  141 + # del chunk
  142 + # await gen.sleep(0.000000001) # 1 nanosecond (hack)
  143 + # # FIXME in the upcomming tornado 5.0 use `await asyncio.sleep(0)` instead
  144 + # chunk = f.read(self.chunk_size)
137 145 # -------------------------------------------------------------------------
138 146 # FIXME checkit
139 147 # class FileHandler(BaseHandler):
... ...
templates/question.html
... ... @@ -22,7 +22,7 @@
22 22 </small>
23 23 </p>
24 24 </div>
25   -
  25 +
26 26 {% if show_ref %}
27 27 <div class="card-footer">
28 28 <code>{{ q['ref'] }}</code>
... ...
tools.py
... ... @@ -128,7 +128,7 @@ class HighlightRenderer(mistune.Renderer):
128 128  
129 129 markdown = MarkdownWithMath(HighlightRenderer(escape=True)) # hard_wrap=True to insert <br> on newline
130 130  
131   -def md_to_html(text, q=None):
  131 +def md_to_html(text):
132 132 return markdown(text)
133 133  
134 134 # ---------------------------------------------------------------------------
... ...