Commit 29c8b4cb9768214b7f0bb03a19bb72b9dc100bab
1 parent
68528695
Exists in
master
and in
1 other branch
- fixed FileHandler
- fixed enter-submit issue
Showing
4 changed files
with
12 additions
and
18 deletions
Show diff stats
BUGS.md
1 | 1 | |
2 | 2 | BUGS: |
3 | 3 | |
4 | -- enter faz GET /question, que responde com json no ecran | |
4 | +- aumentar espaço a seguir às tabelas no texto | |
5 | +- guardar state cada vez que topico termina | |
5 | 6 | - tabs em textarea nao funcionam correctamente (insere 1 espaco em vez de 4) |
6 | 7 | - reportar comentarios após submeter. |
7 | -- os topicos locked devem estar inactivos no sidebar. | |
8 | 8 | - textarea deve mostrar no html os valores iniciais de ans, se existir |
9 | 9 | - detect questions in questions.yaml without ref -> error ou generate default. |
10 | 10 | - error if demo.yaml has no topics |
11 | -- guardar state cada vez que topico termina | |
12 | 11 | - session management. close after inactive time. |
13 | 12 | - implementar xsrf. Ver [http://www.tornadoweb.org/en/stable/guide/security.html#cross-site-request-forgery-protection]() |
14 | 13 | - titulos das perguntas não suportam markdown |
14 | +- generators not working: bcrypt (ver blog) | |
15 | 15 | |
16 | 16 | TODO: |
17 | 17 | |
18 | 18 | - pymips: activar/desactivar instruções |
19 | 19 | - implementar servidor http com redirect para https. |
20 | 20 | - usar codemirror no textarea |
21 | -- generators not working: bcrypt (ver blog) | |
22 | 21 | |
23 | 22 | FIXED: |
24 | 23 | |
24 | +- os topicos locked devem estar inactivos no sidebar. | |
25 | +- enter faz GET /question, que responde com json no ecran. (solution: disabled enter) | |
25 | 26 | - topicos no sidebar devem ser links para iniciar um topico acessivel. |
26 | 27 | - logs inicio de topico |
27 | 28 | - indicar o topico actual no sidebar | ... | ... |
knowledge.py
... | ... | @@ -88,12 +88,9 @@ class Knowledge(object): |
88 | 88 | # new question if answer is correct |
89 | 89 | if grade > 0.999: |
90 | 90 | self.finished_questions.append(q) |
91 | - print('questions: ', self.questions) | |
92 | - print('finished: ', self.finished_questions) | |
93 | 91 | try: |
94 | 92 | self.current_question = self.questions.pop(0) # FIXME empty? |
95 | 93 | except IndexError: |
96 | - print('no more questions!') | |
97 | 94 | self.current_question = None |
98 | 95 | self.state[self.current_topic] = { |
99 | 96 | 'level': 1.0, |
... | ... | @@ -103,10 +100,8 @@ class Knowledge(object): |
103 | 100 | else: |
104 | 101 | self.current_question['start_time'] = datetime.now() |
105 | 102 | else: |
106 | - # FIXME debug this | |
107 | 103 | factory = self.depgraph.node[self.current_topic]['factory'] |
108 | 104 | self.questions.append(factory[q['ref']].generate()) |
109 | - print([q['ref'] for q in self.questions]) | |
110 | 105 | |
111 | 106 | return q |
112 | 107 | |
... | ... | @@ -135,11 +130,6 @@ class Knowledge(object): |
135 | 130 | if t in self.state: |
136 | 131 | ts.append((t, self.state[t]['level'])) # already done |
137 | 132 | else: |
138 | - # deps = self.depgraph.predecessors(t) | |
139 | - # # print(t, deps) | |
140 | - # if all(d in self.state for d in deps): | |
141 | - # ts.append((t, 0.0)) # unlocked not yet done | |
142 | - # else: | |
143 | 133 | ts.append((t, None)) # locked |
144 | 134 | return ts |
145 | 135 | ... | ... |
serve.py
... | ... | @@ -134,11 +134,14 @@ class FileHandler(BaseHandler): |
134 | 134 | def get(self, filename): |
135 | 135 | uid = self.current_user |
136 | 136 | public_dir = self.learn.get_current_public_dir(uid) |
137 | + filepath = os.path.expanduser(os.path.join(public_dir, filename)) | |
137 | 138 | try: |
138 | - with open(os.path.join(public_dir, filename), 'rb') as f: | |
139 | - self.write(f.read()) | |
139 | + f = open(filepath, 'rb') | |
140 | 140 | except FileNotFoundError: |
141 | 141 | raise tornado.web.HTTPError(404) |
142 | + else: | |
143 | + self.write(f.read()) | |
144 | + f.close() | |
142 | 145 | |
143 | 146 | # ---------------------------------------------------------------------------- |
144 | 147 | # respond to AJAX to get a JSON question | ... | ... |
templates/learn.html
... | ... | @@ -165,9 +165,9 @@ function updateQuestion(response){ |
165 | 165 | |
166 | 166 | // enable shift+enter to submit and tab to spaces conversion |
167 | 167 | $("input:text, input:radio, input:checkbox").keydown(function (e) { |
168 | - if (e.keyCode == 13 && e.shiftKey) { | |
168 | + if (e.keyCode == 13) { | |
169 | 169 | e.preventDefault(); |
170 | - postQuestion(); | |
170 | + if (e.shiftKey) postQuestion(); | |
171 | 171 | return false; |
172 | 172 | } |
173 | 173 | }); | ... | ... |