# BUGS
- qual a diferenca entre md_to_html e md_to_html_review, parece desnecessario haver dois.
- servir imagens das perguntas
- hints nao funciona
- uniformizar question.py com a de aprendizations...
- permitir eliminar teste a decorrer
- eventos unfocus?
- servidor nao esta a lidar com eventos scroll/resize. ignorar?
# TODO
- cancelar teste no menu admin. Dado o numero de aluno remove teste e faz logout do aluno.
- decorador para user 0, evita o "if uid==0" em muitas funcoes.
- mathjax-node:
sudo pkg install node npm
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
- permitir varios testes, aluno escolhe qual o teste que quer fazer.
- se ocorrer um erro na correcçao avisar aluno para contactar o professor.
- abrir o teste numa janela maximizada e que nao permite que o aluno a redimensione/mova?
- detectar scroll e enviar posição para servidor (analise de scroll para detectar copianço? ou simplesmente para analisar como os alunos percorrem o teste)
- single page web no teste/correcçao. Página construída em javascript, obter perguntas com ajax (para practice?).
- aviso na pagina principal para quem usa browser da treta
- criar perguntas de outros tipos, e.g. associação, ordenação, varios textinput
- perguntas para professor corrigir mais tarde.
- fazer uma calculadora javascript e por no menu. surge como modal
- GeoIP?
- enviar logs para web?
# 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.
- Review de um teste que foi apagado rebenta.
- numeracao das perguntas do teste esta a contar com paineis informativos...
- markdown no teste nao funciona
- review de um teste nao funciona (hardcoded...)
- testar SSL
- text-numeric não está a gerar a pergunta. faltam templates?
- testar perguntas warning/warn
- qd user 0 faz logout rebenta.
- Quando grava JSON do teste deve usar 'path' tal como definido na configuração e não expandido. Isto porque em OSX /home é /Users e quando se muda de um sistema para outro não encontra os testes. Assim, usando ~ na configuração deveria funcionar sempre.
- configuração do teste não joga bem com o do aprendizations. Em particular os scripts não ficam com o mesmo path!!!
- configurar pf em freebsd, port forward 80 -> 8080. documentacao
- barras com notas em grade estão desalinhadas.
- erros nos generators devem ser ERROR e não WARNING.
- se directorio "logs" não existir no directorio actual aborta com mensagem de erro.
- se um teste tiver a mesma pergunta repetida (ref igual), rebenta na correcçao. As respostas são agregadas numa lista para cada ref. Ex: {'ref1': 'resposta1', 'ref2': ['resposta2a', 'resposta2b']}
- usar http://fontawesome.io/examples/ em vez dos do bootstrap3
- se pergunta tiver 'type:' errado, rebenta.
- se submeter um teste so com information, da divisao por zero.
- se save_answers nao existir, da warning que nao serao gravados, mas sao sempre gravados! pagina de administracao diz --not being saved--
- first login é INFO e não WARNING
- /review não mostra imagens porque precisa que teste esteja a decorrer...
- visualizar um teste ja realizado na página de administração
- Depois da correcção, mostra testes realizados que não foram realizados pelo próprio
- detectar se janela perde focus e alertar o prof (http://stackoverflow.com/questions/1060008/is-there-a-way-to-detect-if-a-browser-window-is-not-currently-active)
- server nao esta a receber eventos focus/blur dos utilizadores diferentes de '0', estranho...
- permitir adicionar imagens nas perguntas.
- detect_unfocus.js so funciona se estiver inline no html. porquê???
- inserir novo aluno /admin não fecha.
- se aluno desistir, ainda fica marcado como online
- give dá None em vez de 0.0
- debug mode: log levels not working
- Se aluno fizer logout, o teste não é gravado e ficamos sem registo do teste que o aluno viu.
- criar sqlalchemy sessions dentro de app de modo a estarem associadas a requests. ver se é facil usar with db:(...) para criar e fechar sessão.
- sqlalchemy queixa-se de threads.
- SQLAlchemy em vez da classe database.
- replace sys.exit calls
- if does not find questions, aborts silently
- argumentos da linha de comando a funcionar.
- configuracao dos logs cherrypy para se darem bem com os outros
- browser e ip usados gravado no test.
- botões allow all/deny all.
- mostrar botão de reset apenas no final da pagina, com edit para escrever o número.
- aluno faz login, mas fecha browser, ficando no estado (online,deny). Ao tentar login com outro browser está deny e o prof não consegue pô-lo em allow pois já não está na lista. => solucao é manter todos os alunos numa tabela.
- pagina de login nao esta a apresentar bem. parece que precisa de autorizacao para aceder a /static...
- Não mostrar Professor nos activos em /admin
- /admin mostrar actualizações automaticamente?
- se no teste uma das "ref" nao existir nos ficheiros de perguntas, rebenta.
- alunos podem estar online, mas browser perder sessao => nao conseguem mais entrar porque a App pensa que estão online. Permitir login e dar o mesmo teste.
- pagina de management dos alunos.
mostrar online ordenados por hora de login, offline por número.
permitir reset da pw e allow/disallow
- script de correcção pode enviar dicionario yaml com grade e comentarios. ex:
grade: 0.5
comments: Falhou na função xpto.
os comentários são guardados no teste (ficheiro) ou enviados para o browser no modo practice.
- testar regex na definicao das perguntas. como se faz rawstring em yaml?
singlequote? problemas de backslash??? sim... necessário fazer \\ em varios casos, mas não é claro! e.g. \n é convertido em espaço mas \w é convertido em \\ e w. Solução (http://stackoverflow.com/questions/10771163/python-interpreting-a-regex-from-a-yaml-config-file) é fazer
correct: !regex '^(yes|no)'