-
Notifications
You must be signed in to change notification settings - Fork 4
/
db.py
209 lines (157 loc) · 8.29 KB
/
db.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
import os
import psycopg2
from flask import current_app, g
DATABASE_URL = os.environ['DATABASE_URL']
conn = psycopg2.connect(DATABASE_URL)
def initDB():
print("Criando todas as tabelas...")
with conn.cursor() as cursor:
cursor.execute(open("schema.sql", "r").read())
conn.commit()
conn.commit()
print("Banco de Dados pronto para o uso")
def qtdEditais(abertos=True):
code = "SELECT count(*) FROM vEditais_Abertos"
if not abertos:
code = "SELECT count(*) FROM vEditais_Fechados"
with conn.cursor() as cur:
cur.execute(code)
dados = cur.fetchone()
return int(dados[0])
def extra():
curs = conn.cursor()
curs.execute("ROLLBACK")
conn.commit()
def editaisDetalhes(id_ed):
with conn.cursor() as cur:
cur.execute("SELECT data_abertura, data_encerramento, tipo, titulo, codigo FROM edital WHERE codigo = %s;", [id_ed])
dado1 = cur.fetchone()
cur.execute("SELECT proponente FROM proponente WHERE codigo_edital = %s;", [id_ed])
dado2 = cur.fetchall()
cur.execute("SELECT bolsa FROM bolsa WHERE codigo_edital = %s;", [id_ed])
dado3 = cur.fetchall()
cur.execute("SELECT objetivo FROM objetivo WHERE codigo_edital = %s;", [id_ed])
dado4 = cur.fetchall()
cur.execute("SELECT atividade, data FROM cronograma WHERE codigo_edital = %s;", [id_ed])
dado5 = cur.fetchall()
cur.execute("SELECT disposicao FROM disposicoes_gerais WHERE codigo_edital = %s;", [id_ed])
dado6 = cur.fetchall()
return dado1, dado2, dado3, dado4, dado5, dado6
def editais(pagina = 0, abertos = True):
code = "SELECT * FROM vEditais_Abertos ORDER BY tempo_restante ASC, titulo LIMIT 15 OFFSET %s;"
if not abertos:
code = "SELECT * FROM vEditais_Fechados ORDER BY data_encerramento DESC, titulo LIMIT 15 OFFSET %s;"
with conn.cursor() as cur:
cur.execute(code, [pagina])
dados = cur.fetchall()
return dados
def checaPessoa(cpf):
with conn.cursor() as cur:
cur.execute("SELECT id_pessoa, nome FROM vCpfPassaporte WHERE cpfoupass = %s;", [cpf])
dados = cur.fetchone()
print(cpf, dados)
cur.execute("SELECT count(*) FROM CoordenadorCoordenaAtividade WHERE id_pessoa = %s;", [dados[0]])
coordena = cur.fetchone()
cur.execute("SELECT count(*) FROM PessoaServidor WHERE id_pessoa = %s;", [dados[0]])
servidor = cur.fetchone()
cur.execute("SELECT count(*) FROM PessoaGraduacao WHERE id_pessoa = %s;", [dados[0]])
graduacao = cur.fetchone()
cur.execute("SELECT count(*) FROM PessoaPosgraduacao WHERE id_pessoa = %s;", [dados[0]])
posgraduacao = cur.fetchone()
return dados, coordena, servidor, graduacao, posgraduacao
def criaPessoa(nome, cpf, senha, estado, cidade, bairro, rua, numero, funcao, num_UFSCar, dep):
curs = conn.cursor()
curs.execute("ROLLBACK")
conn.commit()
id_novo = -1
with conn.cursor() as cur:
cur.execute("INSERT INTO pessoa (nome, senha, uf, cidade, bairro, rua, numero) VALUES (%s, %s, %s, %s, %s, %s, %s) RETURNING id_pessoa;", [nome, senha, estado, cidade, bairro, rua, numero])
#cur.execute("SELECT id_pessoa FROM Pessoa WHERE nome = %s", [nome])
id_novo = cur.fetchone()[0]
cur.execute("INSERT INTO pessoabrasileira (cpf, id_pessoa) VALUES (%s, %s);", [cpf, id_novo])
if funcao == "Graduação":
cur.execute("INSERT INTO PessoaGraduacao (nro_ufscar, id_pessoa) VALUES (%s, %s);", [num_UFSCar, id_novo])
if funcao == "Pós-Graduação":
cur.execute("INSERT INTO PessoaPosGraduacao (nro_ufscar, id_pessoa) VALUES (%s, %s);", [num_UFSCar, id_novo])
if funcao == "Docente":
cur.execute("INSERT INTO PessoaServidor (id_pessoa, id_departamento, nro_ufscar, data_contratacao) VALUES (%s, %s, %s, current_date);", [id_novo, dep, num_UFSCar])
cur.execute("INSERT INTO PessoaServidorDocente (id_pessoa, id_departamento, titulo, cargo, setor, tipo) VALUES (%s, %s, %s, %s, %s, %s);", [id_novo, dep, "Senhor(a)", "Professor", "Computação", "Adjunto"])
if funcao == "Técnico":
cur.execute("INSERT INTO PessoaServidor (id_pessoa, id_departamento, nro_ufscar, data_contratacao) VALUES (%s, %s, %s, current_date);", [id_novo, dep, num_UFSCar])
cur.execute("INSERT INTO PessoaServidorTecnico (id_pessoa, id_departamento) VALUES (%s, %s);", [id_novo, dep])
conn.commit()
return id_novo
def listaDep():
cur = conn.cursor()
cur.execute("SELECT * FROM Departamento;")
return cur.fetchall()
def ListaAtividades(id_pessoa):
cur = conn.cursor()
cur.execute("SELECT * FROM vAtividades;")
dados = cur.fetchall()
resultados = []
if id_pessoa > 0:
for d in dados:
cur.callproc('VerificaInscricao', [id_pessoa, d[0]])
R = cur.fetchone()
resultados.append([d[0], R[0]])
return dados, resultados
# Inserida por Vitor
def atividadeComDetalhes(id_at):
cur = conn.cursor()
cur.execute("SELECT nro_extensao, publico_alvo, palavras_chave, resumo, inicio_real, fim_real, inicio_previsto, fim_previsto, data_aprovacao, tipo_atividade, titulo, status FROM AtividadeDeExtensao WHERE nro_extensao = %s;", [id_at])
dado1 = cur.fetchone()
cur.execute("SELECT nome_area FROM Area, AtividadeDeExtensao WHERE id_area = id_area_pr and nro_extensao = %s;", [id_at])
dado2 = cur.fetchall()
cur.execute("SELECT nome_area FROM Area, AtividadeDeExtensao WHERE id_area = id_area_se and nro_extensao = %s;", [id_at])
dado3 = cur.fetchall()
cur.execute("SELECT agencia FROM Financiador f, AtividadeDeExtensao a WHERE f.id_financiador = a.id_financiador and nro_extensao = %s;", [id_at])
dado4 = cur.fetchall()
cur.execute("SELECT a.titulo FROM ProgramaDeExtensao p, AtividadeDeExtensao a WHERE p.nro_extensao = a.nro_extensao_programa and a.nro_extensao = %s;", [id_at])
dado5 = cur.fetchall()
cur.execute("SELECT nro_extensao, horario_aulas, ementa, carga_horaria_prevista FROM Aciepe WHERE nro_extensao = %s;", [id_at])
dado6 = cur.fetchall()
cur.execute("SELECT nro_extensao, data, horario, local, campus FROM Aciepe_Encontros WHERE nro_extensao = %s;", [id_at])
dado7 = cur.fetchall()
return dado1, dado2, dado3, dado4, dado5, dado6, dado7
# Inserida por Vitor
def participantesInfos(id_atividade, id_part,):
cur = conn.cursor()
cur.execute("SELECT id_pessoa, nro_extensao, frequencia, avaliacao FROM Participante WHERE id_pessoa = %s and nro_extensao = %s;", [id_part, id_atividade])
dado1 = cur.fetchone()
cur.execute("SELECT titulo, status, resumo FROM AtividadeDeExtensao a WHERE a.nro_extensao = %s;",[id_atividade])
dado2 = cur.fetchone()
cur.execute("SELECT nome FROM Pessoa a WHERE a.id_pessoa = %s;",[id_part])
dado3 = cur.fetchone()
cur.execute("SELECT P.nome, E.email FROM Pessoa P, Pessoa_Email E, CoordenadorCoordenaAtividade C WHERE P.id_pessoa = E.id_pessoa and P.id_pessoa = C.id_pessoa and C.nro_extensao = %s;", [id_atividade])
dado4 = cur.fetchone()
return dado1, dado2, dado3, dado4
def getInformacoes(id_pessoa):
cur = conn.cursor()
cur.execute("SELECT titulo, cargo FROM PessoaServidorDocente WHERE id_pessoa = %s;", [id_pessoa])
tituloCargo = cur.fetchone()
cur.execute("SELECT id_departamento, nro_ufscar, data_contratacao FROM PessoaServidor WHERE id_pessoa = %s;", [id_pessoa])
iddepNroData = cur.fetchone()
if iddepNroData:
cur.execute("SELECT nome from Departamento WHERE id_departamento = %s;", [iddepNroData[0]])
nomeDep = cur.fetchone()
else:
nomeDep = ['--']
cur.execute("SELECT uf, cidade, bairro, rua, numero FROM Pessoa WHERE id_pessoa = %s;", [id_pessoa])
endereco = cur.fetchone()
cur.execute("SELECT email FROM Pessoa_Email WHERE id_pessoa = %s;", [id_pessoa])
emails = cur.fetchall()
cur.execute("SELECT ddi, ddd, fixo FROM Pessoa_Telefone WHERE id_pessoa = %s;", [id_pessoa])
telefones = cur.fetchall()
return tituloCargo, iddepNroData, nomeDep, endereco, emails, telefones
def getParticipacao(id_pessoa):
cur = conn.cursor()
cur.execute("SELECT P.titulo, S.id_selecao, S.declaracao_presenca, S.selecionado FROM Participante_participa_Selecao S, ProgramaDeExtensao P WHERE id_pessoa = %s and P.nro_extensao = S.nro_extensao;", [id_pessoa])
selecao = cur.fetchall()
cur.execute("SELECT P.titulo, P.nro_extensao FROM Participante Part, ProgramaDeExtensao P WHERE Part.id_pessoa = %s and P.nro_extensao = Part.nro_extensao;", [id_pessoa])
participacao = cur.fetchall()
return selecao, participacao
def inscreverAtividade(id_pessoa, id_atividade):
cur = conn.cursor()
cur.execute("INSERT INTO Participante (id_pessoa, nro_extensao, frequencia, avaliacao) VALUES (%s, %s, null, null);", [id_pessoa, id_atividade])
conn.commit()