BUGS.md 13.8 KB

BUGS

  • correct devia poder ser corrido mais que uma vez (por exemplo para alterar cotacoes, corrigir perguntas)
  • guardar testes em JSON assim que sao atribuidos aos alunos (ou guardados inicialmente com um certo nome, e atribuidos posteriormente ao aluno).
  • cookies existe um perguntations_user e um user. De onde vem o user?
  • 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.???
  • show-ref nao esta a funcionar na correccao (pelo menos)

TODO

  • JOBE correct async
  • esta a corrigir código JOBE mesmo que nao tenha respondido???
  • 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

  • testar as perguntas todas no início do teste como o aprendizations.
  • adicionar identificacao do aluno no jumbotron inicial do teste, para que ao imprimir para pdf a identificacao do aluno venha escrita no documento.
  • 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'