BUGS
- se aluno tem teste activo e é allowed uma segunda vez, deve manter o mesmo teste. adicionar opcao para eliminar um teste em curso.
- melhorar o botao de autorizar (desliga-se), usar antes um botao? e.g. retornar None quando nao ha alteracoes relativamente à última vez. ou usar push (websockets?)
- a primeira coluna da tabela admin deveria estar sempre ordenada.
- pymips: nao pode executar syscalls do spim.
- perguntas checkbox [right,wrong] com pelo menos uma opção correcta.
- questions.py textarea has a abspath which does not make sense! why is it there? not working for perguntations, but seems to work for aprendizations
- erro na password com ./initdb.py --db debug.db -u 1 "Miguel Barao" --pw q
- initdb está a inicializar com passwords iguais aos numeros. deveria ser vazio para alunos definirem.
- servir imagens das perguntas não funciona. Necessario passar a ref da pergunta no link para poder ajustar o path no FileHandler. Tem o problema do teste em JSON não conter a imagem.
- o eventloop está a bloquear. correção do teste é blocking. usar threadpoolexecutor?
- submissao faz um post ajax.
- eventos unfocus?
- servidor nao esta a lidar com eventos scroll/resize. ignorar?
TODO
- gerar teste qd o prof autoriza.
enviar resposta de cada pergunta individualmente.
experimentar gerador de svg que inclua no markdown da pergunta e ver se funciona.
imagens jpg/png nas perguntas.
suportar cotacao to teste diferente de 20 (e.g. para juntar perguntas em papel). opcao "points: 18" que normaliza total para 18 em vez de 20.
quando ha varias perguntas para escolher, escolher sucessivamente em vez de aleatoriamente.
como refrescar a tabela de admin sem fazer reload da pagina?
botao "testar resposta" que valida codigo relativamente a syntax, mas nao classifica. perguntas devem ter opcao validate: script.py. Aluno pressiona botao e codigo é enviado para servidor para validação, feedback é mostrado na pagina de teste.
test: 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.
test: Cada pergunta respondida é logo submetida.
test: calculadora javascript.
admin: histograma das notas.
admin: gerar os testes no momento em que são autorizados, e não no login.
admin: mostrar as horas a que o teste terminou para os testes terminados.
admin: histograma das notas.
admin: mostrar teste gerado para aluno (tipo review).
test: mostrar duração do teste com progressbar no navbar.
fazer renderer para formulas com mathjax serverside (mathjax-node).
fazer renderer para imagens, com links /file?ref=xpto;name=zzz.jpg
fazer renderer para linguagem assembly mips?
permitir eliminar teste a decorrer
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
- upgrade popper e fazer link.
- mover scripts js para head, com defer. ver todos os templates.
- update fontawesome to 5.
- mostrar comments e solution na revisao de prova.
- upgrade para tornado 5.0.
- ctrl-c should ask for confirmation before exiting.
- md_to_html() nao usa o segundo argumento q. pode retirar-se dos templates?
- config/logger.yaml ainda é do cherrypy...
- uniformizar question.py com a de aprendizations...
- qual a diferenca entre md_to_html e md_to_html_review, parece desnecessario haver dois.
- converter markdown para mistune.
- 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'