Commit dda6f8384e5034d172ae6a5a2f56fc619065cfee

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

- fixed error on empty answer for questions of type radio

Showing 4 changed files with 18 additions and 12 deletions   Show diff stats
1 1
2 BUGS: 2 BUGS:
3 3
4 -- indentação da primeira linha de código não funciona.  
5 -- submeter questoes radio, da erro se nao escolher nenhuma opção.  
6 - gravar evolucao na bd no final de cada topico. 4 - gravar evolucao na bd no final de cada topico.
7 - servir imagens/ficheiros. 5 - servir imagens/ficheiros.
8 - topicos virtuais nao deveriam aparecer. na construção da árvore os sucessores seriam ligados directamente aos predecessores. 6 - topicos virtuais nao deveriam aparecer. na construção da árvore os sucessores seriam ligados directamente aos predecessores.
9 7
10 8
11 - reportar comentarios após submeter. 9 - reportar comentarios após submeter.
12 -- cada topico tem uma pagina begin e uma end 10 +- cada topico tem uma pagina begin e uma end?
13 - pertuntas tipo tristate: (sim, não, não sei) 11 - pertuntas tipo tristate: (sim, não, não sei)
14 - animação no final de cada topico para se perceber a transição 12 - animação no final de cada topico para se perceber a transição
15 - aumentar espaço a seguir às tabelas no texto 13 - aumentar espaço a seguir às tabelas no texto
@@ -31,6 +29,8 @@ TODO: @@ -31,6 +29,8 @@ TODO:
31 29
32 FIXED: 30 FIXED:
33 31
  32 +- submeter questoes radio, da erro se nao escolher nenhuma opção.
  33 +- indentação da primeira linha de código não funciona.
34 - markdown com o mistune. 34 - markdown com o mistune.
35 - change password in maintopics.html, falta menu para lançar modal 35 - change password in maintopics.html, falta menu para lançar modal
36 - ver documentacao de migracao para networkx 2.0 https://networkx.github.io/documentation/stable/release/migration_guide_from_1.x_to_2.0.html 36 - ver documentacao de migracao para networkx 2.0 https://networkx.github.io/documentation/stable/release/migration_guide_from_1.x_to_2.0.html
@@ -113,14 +113,7 @@ class StudentKnowledge(object): @@ -113,14 +113,7 @@ class StudentKnowledge(object):
113 113
114 q = self.current_question 114 q = self.current_question
115 115
116 - # answers are returned from tornado in a list  
117 - if q['type'] in ('success', 'information', 'info'): # FIXME danger...  
118 - q['answer'] = None  
119 - elif q['type'] != 'checkbox':  
120 - q['answer'] = answer[0]  
121 - else:  
122 - q['answer'] = answer  
123 - 116 + q['answer'] = answer
124 q['finish_time'] = datetime.now() 117 q['finish_time'] = datetime.now()
125 grade = q.correct() 118 grade = q.correct()
126 logger.debug(f'Grade = {grade:.2} ({q["ref"]})') 119 logger.debug(f'Grade = {grade:.2} ({q["ref"]})')
@@ -207,6 +207,10 @@ class LearnApp(object): @@ -207,6 +207,10 @@ class LearnApp(object):
207 return self.online[uid]['state'].get_current_question() # dict 207 return self.online[uid]['state'].get_current_question() # dict
208 208
209 # ------------------------------------------------------------------------ 209 # ------------------------------------------------------------------------
  210 + def get_student_question_type(self, uid):
  211 + return self.online[uid]['state'].get_current_question()['type']
  212 +
  213 + # ------------------------------------------------------------------------
210 def get_student_topic(self, uid): 214 def get_student_topic(self, uid):
211 return self.online[uid]['state'].get_current_topic() # str 215 return self.online[uid]['state'].get_current_topic() # str
212 216
@@ -229,7 +229,16 @@ class QuestionHandler(BaseHandler): @@ -229,7 +229,16 @@ class QuestionHandler(BaseHandler):
229 229
230 # check answer and get next question (same, new or None) 230 # check answer and get next question (same, new or None)
231 answer = self.get_body_arguments('answer') # list 231 answer = self.get_body_arguments('answer') # list
232 - print(answer) 232 + if not answer:
  233 + answer = None
  234 + else:
  235 + # answers returned in a list. fix depending on question type
  236 + qtype = self.learn.get_student_question_type(user)
  237 + if qtype in ('success', 'information', 'info'): # FIXME danger...
  238 + answer = None
  239 + elif qtype != 'checkbox': # radio, text, textarea, ...
  240 + answer = answer[0]
  241 +
233 grade = self.learn.check_answer(user, answer) 242 grade = self.learn.check_answer(user, answer)
234 question = self.learn.get_student_question(user) 243 question = self.learn.get_student_question(user)
235 244