BUGS
- cookies existe um perguntations_user e um user. De onde vem o user?
- nao esta a mostrar imagens?? internal server error?
- JOBE correct async
- esta a corrigir código JOBE mesmo que nao tenha respondido???
QuestionCode falta reportar nos comments os vários erros que podem ocorrer (timeout, etc)
algumas vezes a base de dados guarda o mesmo teste em duplicado. ver se dois submits dao origem a duas correcções. talvez a base de dados devesse ter como chave do teste um id que fosse único desse teste particular (não um auto counter, nem ref do teste)
em caso de timeout na submissão (e.g. JOBE ou script nao responde) a correcção não termina e o teste não é guardado.
grade gives internal server error??
reload do teste recomeça a contagem no inicio do tempo.
em admin, quando scale_max não é 20, as cores das barras continuam a reflectir a escala 0,20. a tabela teste na DB não tem a escala desse teste.
em grade.html as barras estao normalizadas para os limites scale_min e max do teste actual e nao dos testes realizados no passado (tabela test devia guardar a escala).
codigo
hello world
nao esta a preservar o whitespace. O renderer de markdown gera a tag que não preserva whitespace. Necessario adicionar .mensagems de erro do assembler aparecem na mesma linha na correcao e nao fazerm rendering do
$t
, ver se servidor faz parse do markdown dessas mensagens.a revisao do teste não mostra as imagens.
Test.reset_answers() unused.
teste nao esta a mostrar imagens de vez em quando.???
testar as perguntas todas no início do teste como o aprendizations.
show-ref nao esta a funcionar na correccao (pelo menos)
TODO
- permitir remover alunos que estão online para poderem comecar de novo.
- guardar nota final grade truncado em zero e sem ser truncado (quando é necessário fazer correcções à mão às perguntas, é necessário o valor não truncado)
- stress tests. use https://locust.io
- wait for admin to start test. (students can be allowed earlier)
- impedir os eventos copy/paste. alunos usam isso para trazer codigo ja feito nos computadores. Obrigar a fazer reset? fazer um copy automaticamente?
- na pagina admin, mostrar com cor vermelha as horas de entrada dos alunos que ja tenham excedido o tempo
- retornar None quando nao ha alteracoes relativamente à última vez. ou usar push (websockets?)
- mudar ref do test para test_id (ref já é usado nas perguntas)
- servidor ntpd no x220 para configurar a data/hora dos portateis dell
- sala de espera: autorização dada, mas teste não disponível até que seja dada ordem para começar.
- alunos com necessidades especiais nao podem ter autosubmit. ter um autosubmit_exceptions: ['123', '456']
- submissao fazer um post ajax?
- adicionar opcao para eliminar um teste em curso.
- enviar resposta de cada pergunta individualmente.
- experimentar gerador de svg que inclua no markdown da pergunta e ver se funciona.
- 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: mostrar as horas a que o teste terminou para os testes terminados.
- admin: histograma das notas.
- admin: mostrar teste gerado para aluno (tipo review).
- fazer renderer para formulas com mathjax serverside (mathjax-node) ou usar katex.
- fazer renderer para imagens, com links /file?ref=xpto;name=zzz.jpg
- fazer renderer para linguagem assembly mips?
- cancelar teste no menu admin. Dado o numero de aluno remove teste e faz logout do aluno.
- 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)
- aviso na pagina principal para quem usa browser incompativel ou settings esquisitos... Apos login pode ser enviado e submetido um exemplo de teste para verificar se browser consegue submeter? ha alunos com javascript bloqueado?
- criar perguntas de outros tipos, e.g. associação, ordenação, varios textinput
- perguntas para professor corrigir mais tarde. permitir que review possa alterar as notas
- fazer uma calculadora javascript e por no menu. surge como modal
FIXED
- internal server error quando em --review, download csv detalhado.
- perguntas repetidas (mesma ref) dao asneira, porque a referencia é usada como chave em varios sitios e as chaves nao podem ser dupplicadas. da asneira pelo menos na funcao get_questions_csv. na base de dados tem de estar registado tb o numero da pergunta, caso contrario é impossível saber a qual corresponde.
- mostrar unfocus e window area em /admin
- CRITICAL se answer for
i<n
a revisão de provas mostra apenas i (interpreta<
como tag?) - botao de autorizar desliga-se, fazer debounce.
- link na pagina com a nota para voltar ao principio.
- default logger config mostrar horas com segundos
- test: mostrar duração do teste com progressbar no navbar.
- lidar com eventos unfocus.
- servidor nao esta a lidar com eventos resize.
- sock.bind(sockaddr) OSError: [Errno 48] Address already in use
- dizer quanto desconta em cada pergunta de escolha multipla
- se houver erros a abrir ficheiros .yaml de perguntas, depois dos testes diz "No errors found".
- se faltarem files na especificação do teste, o check não detecta e factory não gera para essas perguntas.
- nao esta a usar points das perguntas
- quando se clica no texto de uma opcao, salta para outro lado na pagina.
- 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.
- fazer package para instalar perguntations com pip.
- pymips: nao pode executar syscalls do spim.
- exception sqlalchemy relacionada com threads.
- acrescentar logger.conf que sirva de base.
- 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
- textarea foi modificado em aprendizations para receber cmd line args. corrigir aqui tb.
- usar npm para instalar javascript
- se aluno entrar com l12345 rebenta. numa funcao get_... ver imagem no ipad
- no test3 está contar 1.0 valores numa pergunta do tipo info? acontece para type: info, e não para type: information
- default correct in checkbox must be 1.0, so that the pairs (right,wrong) still work with
correct
left undefined. - textarea com codemirror
- decorador para user 0, evita o "if uid==0" em muitas funcoes.
- numeric interval deve converter respostas que usam virgulas para pontos decimais
- self.testapp.get_json_filename_of_test(test_id) retorna None quando test_id nao existe.
- o eventloop está a bloquear. correção do teste é blocking. usar threadpoolexecutor?
- substituir get_event_loop por get_runnint_loop (ver https://docs.python.org/3/library/asyncio-eventloop.html)
- review nao esta a funcionar
- servir imagens das perguntas não funciona. Necessario passar a ref da pergunta no link para poder ajustar o path no FileHandler.
- a primeira coluna da tabela admin deveria estar sempre ordenada.
- abortar depois de testar todas as perguntas, caso haja algum erro.
- imagens jpg/png nas perguntas.
- initdb está a inicializar com passwords iguais aos numeros. deveria ser vazio para alunos definirem.
- 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'