Equipe CCPA
voltar

Procedimentos SAPOLIO
Inspecionando acesso ao banco em um script
Testes em linha de comando
Script de avisos automáticos
Cadastro participante externo
Cadastro orientador externo
Cadastro de curso novo
Correção de participante de banca
Geração de pacote com arquivos das inscrições
Correção de caracteres UTF-8 nos textos das defesas
SQL
Inspecionando acesso ao banco em um script
...
local conn = dado.connect ('prod', '...')
-- Redefinição da `assertexec' para logar todos os acessos ao banco
local old_exec = dado.assertexec
dado.assertexec = function (self, stmt)
    local f2 = debug and debug.getinfo (2, "n").name or "?" -- nome da função
    local f3 = debug and debug.getinfo (3, "n").name or "?" -- nome da função
    local s = stmt:gsub("%%", "%%"):gsub("[\r\n]", ""):gsub("\t", " ")
    cgilua.errorlog ("++ ("..f3.."->"..f2.."):"..s, "warn")
    return old_exec (self, stmt)
end
...
     
Testes em linha de comando
$ lua -lluarocks.require -ldado -e "package.path='/home/sapolio/modulos/?.lua;/home/sapolio/modulos/?/init.lua;'..package.path" -i
> require"sapolio"
> conn = dado.connect('prod','sapolio')
> = sapolio.varios_programas(conn, 12)
false
> require"sapolio.bau"
> = sapolio.bau.dados_usuario(conn, 1)
Administrador	01	info-rpa@ccpa.puc-rio.br	123.456.789-00	nil	nil	nil	Funcionario	nil	0
     

Explicações:

-l<modulo> Carrega o módulo indicado
-e "<chunk>" Executa o trecho de código
-i Modo interativo

O trecho de código (depois da opção -e) serve para incluir o PATH do diretório de módulos da aplicação.

Script de avisos automáticos

O script /home/sapolio/shell/avisos.lua é o responsável pelo envio de avisos automáticos do Sapolio. Ele envia e-mail para todos os processos que:

Para evitar uso indevido, ele só envia mensagens se o parâmetro -e for especificado. Seus argumentos são:

-nome
nome_arq.." [OPÇÕES]*",
-motivo
"Exibe o motivo do aviso",
-debug
"Mostra as mensagens e não envia",
-motivo
"Mostra testes dos motivos",
-e
"Envia e-mails",
-envia
"Envia e-mails",
-h
"list",
-help
"list",
-ontem
"Assume a data de ontem como atual", -- não funciona direito
-ids
"Mostra os ids dos requerimentos afetados",
-p
{
-t
"Teste: execução simulada",
-test
"Teste: execução simulada",
-u
{

Um caso interessante é usar

./avisos.lua -p X -debug

Assim a gente pode ver exatamente qual foram as mensagens relacionadas ao processo de número X que foram enviadas.

IMPORTANTE: o script calcula as pendências relativas ao dia atual, então nem sempre dá para reproduzir a situação de um outor dia qualquer!

Cadastro participante externo Banca
  1. Verifique se o usuário enviou todos os dados necessários, caso contrério indique para ele onde as informações obrigatórias estão: na página de seleção de participantes de bancas ao clicar no link "Membro da banca não tem currículo Lattes?".
  2. Os dados obrigatórios são: Nome completo, Afiliação, Titulação de maior nível, País da titulação, Universidade da titulação, Sigla da Universidade de titulação, Ano da titulação
  3. Conferir se o cadastro já existe:
    1. Acessar o sistema de requerimentos acadêmicos com a conta admin
    2. Clique no link Gerência para ir à página de Gerência de Pessoas
    3. Procure pela pessoa (experimente grafias ligeiramente diferentes)
  4. Decidir o que fazer:
    • Se a pessoa tem mais de um cadastro, o melhor é juntá-los todos em um só cadastro:
      1. Descubra os identificadores dos diversos cadastros (na tabela pessoa) e escolha o mais bem preenchido para ser mantido
      2. Junte, um a um, os cadastros através do script:
        zeta:/home/sintetico/shell$ ./merge_pessoas.lua -h
    • Se a pessoa tem um cadastro, o solicitante deve poder fazer a atualização deste cadastro através do link Atualizar a partir do CV Lattes (se o usuário tiver acesso à página de Gerência de Pessoas, terá acesso a este link).
    • Se a pessoa não tem cadastro, nós temos que fazer o cadastro manualmente:
      • em alfa:/sap/conf, clique no link "Cadastrar Participante Externo" e preencha os campos.
      • Verifique no nome da instituição se aparece a sigla depois do apostrofo. Caso não aparecça voc¿ pode cadastrar a sigla diretamente no banco (UPDATE instituicao SET sigla=XXX WHERE id_instituicao=YYY)
      Atenção para o fato de que nem todas as instituições estão pré-cadastradas; ainda não temos uma ferramenta para facilitar este cadastramento.
      Algumas consultas bem comuns neste processo são:
      • Procurar a instituição: SELECT id_instituicao, nome, sigla
        FROM instituicao
        WHERE sigla ilike '%XXX%' OR nome ilike '%XXX%';
      • Procurar o id_pais do pais da instituição: SELECT id_pais
        FROM pais
        WHERE nome ilke '%XXX%';
      • Inserir novo registro da instituição: INSERT INTO instituicao (id_pais, sigla, nome)
        values (XXX,'YYY','ZZZ');
Cadastro orientador externo
  1. Peça para a(o) secretária(o) interessado que crie uma proposta de banca com um "orientador falso" (que depois será substituído) e informe o id deste processo;
  2. Verifique se já existe um cadastro para o(a) orientador(a) externo na tabela usuario;
    1. select id, matricula, nome, comentario, id_pessoa from usuario where tipo = 7 order by matricula;
      
      se não houver, descubra o cadastro do professor externo na tabela pessoa (se não houver, peça para fazerem o cadastro, preferencialmente através do código do CV Lattes!);
      copie o Nome da Pessoa e o ID_PESSOA_ORIENTADOR;
    2. Descubra um id de usuário que não esteja sendo usado (select u.id from usuario u where not exists (select true from usuario u2 where u2.id = u.id+1) and u.id not in (1, -1, -3) order by 1 limit 2; deve ajudar);
    3. Descubra uma string que sirva para um número de matrícula falso (pode ser a letra seguinte ao resultado desta consulta: select matricula from usuario where tipo = 7 order by matricula desc limit 1;);
      begin;
      insert into usuario (id, matricula, nome, tipo, comentario, id_pessoa) values (ID_USUARIO_NOVO, 'Letra da matrícula falsa', 'Nome da Pessoa', 7, 'Orientador externo', ID_PESSOA_ORIENTADOR);
      insert into professor (id_professor, categoria) values (ID_USUARIO_NOVO, 'Orientador externo');
      
  3. Atualize o orientador do aluno nas tabelas aluno e processo:
    update aluno set id_orientador = ID_USUARIO_NOVO where id_aluno = ID_ALUNO;
    update processo set id_professor = ID_USUARIO_NOVO where id = ID_PROPOSTA_BANCA;
    
Cadastro de curso novo no banco de dados

O sistema deduz algumas informações do curso, mas outras precisam ser configuradas manualmente:

Correção de participante de banca

É pouco comum pedirem a substituição de membros de bancas, mas quando pedem, a CCPG (Célia) pode mandar a banca de volta para o início para que sua composição seja alterada. Neste caso, qualquer alteração pode ser feita, até porque o trâmite vai recomeçar do zero.

O problema acontece quando pedem uma troca muito perto da data da defesa, pois esse procedimento pode demorar mais do que o desejado. Nestes casos, a CCPG nos pede para fazer a correção diretamente no banco.

Temos algumas visões para auxiliar:

v_form (id_processo, campo, valor)
Mostra todos os campos (nome e id_campo juntos em uma única coluna) e valores, do jeito que estão guardados no banco.
v_formulario (id_processo, descricao, imprime, id_campo, valor)
Mostra todos os campos (nome e id_campo separados em colunas), valores e o flag imprime do jeito que estão guardados no banco.
v_pessoa_banca (id_pessoa, nome_ideal, titulacao, afiliacao, id_url_lattes)
Mostra os dados de uma pessoa que são guardados nas tabelas Lua que representam as listas de participantes (co-orientadores, membros titulares e suplentes).
Geração de pacote com arquivos das inscrições

Os arquivos enviados pelos candidatos à pós-graduação não fazem parte da planilha gerada pela ferramenta de exportação das inscrições (botão Configurar Exportação. Temos uma ferramenta para gerar um pacote com todos os arquivos, mas como eles são grandes, mesmo compactados produzem um pacote grande demais para se mandar por e-mail. Além disso, a ferramenta demora para executar, então não achamos conveniente deixá-la disponível para usuários, para evitar que acionem muitas vezes e até mesmo concorrentemente, o que poderia atolar o servidor. Então o que fazemos é gerar através do administrador e mandar o link para o arquivo para quem pediu.

Passo-a-passo:

  1. Corrigir as permissões do administrador (ou usuário que for executar o procedimento)
    Consultar Inscrições - nível Curso - Associar apenas aos cursos que devem ser considerados nesta exportação.
  2. Fazer o login com o administrador
  3. Seguir o link "Inscrição Pós" (que leve à página de configuração do formulário)
  4. Clicar no botão Exportar Anexos e aguardar um pouco.
    Deverá aparecer uma outra janela com uma mensagem de onde o arquivo foi gerado
  5. Mover qualquer arquivo antigo para o diretório "exportacoes_antigas"
  6. Renomear o arquivo para incluir o ano e o mês em que foi gerado
  7. Enviar e-mail para o solicitante informando a URL, que deve ser no formato: http://www.ccpa.puc-rio.br/exportacao/nome_do_arquivo
Correção de caracteres UTF-8 em campos de texto das defesas

Enquanto não passarmos a usar a ferramenta de geração de PDFs desenvolvida pelo LabLua, precisamos corrigir caracteres UTF-8 que forem inseridos nos campos de texto das defesas trocando-os por outros caracteres que não atrapalhem a geração dos documentos em RTF e em PDF (através da PDFLib).

Comandos de correção:

begin;
update detalhe_processo_real set valor = replace (valor, '–', '-') where id_campo = 24 and id_processo = XX;
select campo,valor from v_form where id_processo = XX;

Troque XX pelo número do requerimento.

Selects comuns
Alteração nas tabelas
Delete
Controle de Permissões
voltar