...
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
...
$ 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.
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:
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!
pessoa) e escolha o mais bem preenchido para ser mantidozeta:/home/sintetico/shell$ ./merge_pessoas.lua -h
usuario;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!);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);
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');
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;
O sistema deduz algumas informações do curso, mas outras precisam ser configuradas manualmente:
codigo_sau é a concatenação dos códigos do curso e da habilitação cadastradas no SAU; há cursos (Desenho Industrial, por exemplo) que tem algumas habilitações, então constam como cursos diferentes
nome_abreviado é o nome que aparece na Página Inicialgrupo indica os cursos que devem ser tratados como um só, sem transferência entre eles; há cursos (Desenho Industrial, por exemplo) que tem um mesmo grupo para evitar a transferência entre eles
grupo_transferencia indica se o curso oferece vagas para transferência interna (NULL significa que não oferece vagas).
É 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)v_formulario (id_processo, descricao, imprime, id_campo, valor)imprime do jeito que estão guardados no banco.v_pessoa_banca (id_pessoa, nome_ideal, titulacao, afiliacao, id_url_lattes)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:
Exportar Anexos e aguardar um pouco.http://www.ccpa.puc-rio.br/exportacao/nome_do_arquivo
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.
\o relatorioGRA.csv
\a
\f ';' -- o postgres se encarrega de colocar ';' entre as colunas
select
valor as "Período Letivo",
p.id as "Nº Requerimento",
u.nome as "Aluno",
(select valor from detalhe_processo where id_campo=34 and
id_processo=p.id) as "Disciplina",
(select valor from detalhe_processo where id_campo=32 and
id_processo=p.id) as "Turma"
from
processo p inner join
usuario u on (u.id=p.id_usuario) inner join
usuario_curso uc on (uc.id_usuario=u.id) inner join
curso c on (c.id=uc.id_curso) inner join detalhe_processo dp on
(dp.id_processo=p.id and dp.tipo_processo=p.tipo_processo and
dp.id_campo=9)
where
p.tipo_processo=13 and -- COLOQUE AQUI O TIPO DE REQUERIMENTO
id_nivel=4 and
c.nome ilike 'COMUNICACAO%' and -- COLOQUE AQUI O NOME DO CURSO
status in (1,4,5) and
estado = 5 and
valor in ('2012.2') -- COLOQUE AQUI O PERIODO
order by valor,u.nome, p.id;
Programa de Pós-Graduação
|
Curso de Graduação |
Programa de Pós-Graduação
|
Curso de Graduação |
Programa de Pós-Graduação
|
Graduação
|
Pós-Graduação
|
Graduação
|
Perfil I
|
Perfil II
|