# BUGS - a revisao do teste não mostra as imagens. - 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?) - 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 - submissao faz um post ajax. - eventos unfocus? - servidor nao esta a lidar com eventos scroll/resize. ignorar? # TODO - decorador para user 0, evita o "if uid==0" em muitas funcoes. - gerar teste qd o prof autoriza? melhor nao, pode apagar o teste em curso. - enviar resposta de cada pergunta individualmente. - experimentar gerador de svg que inclua no markdown da pergunta e ver se funciona. - 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. <- se prof autoriza aluno que já esta a realizar teste pode fazer reset e destruir teste??? - 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. - 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 - 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)'