ifms-conselho/connect.py
2023-03-27 14:55:54 -04:00

515 lines
64 KiB
Python

# coding: utf8
# ---introdução----------------------
# 1-justificativa
# 2-apresentação
# 3-ação
# ---justificativa----------------------
# 1 - tornar a experiência do conselho agradável?
# 2 - coletar informações precisas do desempenho dos estudantes e turmas ?
# 3 - fazer a informação colhida não se perca, mas cumpra seu objetivo?
# 4 - fornecer um canal aberto em tempo real entre: professores, cordenação, e equipe pedagógica?
# ---fim----------------------
# 1. email de boas vindas
# 2. tela inicial e escolha da turmas / disciplina
# 3. ok / alerta / participa
# 4. relatorio / report do estudante
# 5. relatorio / report da turma
# -------------------------
# 1. ideia da estrutura para o conselho
# 2. sugestões
# 3.
# -------------------------
from libx import *
# ----------------------------------------------------------------------------------------------
app = Flask(__name__)
app.secret_key = APP_SECRET_KEY
app.permanent_session_lifetime = timedelta(days=APP_SESSION_DAYS)
# ----------------------------------------------------------------------------------------------
print("-"*40)
print("HOST_ADDRESS = ", HOST_ADDRESS)
print("EXTERN_ADDRESS = ", EXTERN_ADDRESS)
print("APP_PORT = ", APP_PORT)
print("MONGO_ADDRESS = ", MONGO_ADDRESS)
print("MONGO_PORT = ", MONGO_PORT)
print("GMAIL_USER = ", GMAIL_USER)
print("-"*40)
# ----------------------------------------------------------------------------------------------
CONNECT_DB = MongoClient(MONGO_LINK).get_database(DATABASE_NAME)
CONTATOS = CONNECT_DB.get_collection('contatos')
PROFESSORES = CONNECT_DB.get_collection('professores')
MATRICULAS = CONNECT_DB.get_collection('matriculas')
DISCIPLINAS = CONNECT_DB.get_collection('disciplinas')
FOTOS = CONNECT_DB.get_collection('fotos')
MARCAS = CONNECT_DB.get_collection('marcas')
COMENTARIOS = CONNECT_DB.get_collection('comentarios')
# ----------------------------------------------------------------------------------------------
like_nao = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAEHwAABB8BJvkkuwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAS4SURBVHic7ZpfiFVVFMZ/X06O13SmiLIeqsmkUWmw0FSGeogoEJwH+0NQhGaBD0EPQj0USQ89Sky9FUYROSEMhlhQEkSYUcHczCbMYQKpKVOpaJrUcdLVw97HuR7vPfdP586+c+794LDu2Wvtvdf+7j5r77P2kZnRzLgstAOh0SIgtAOh0SIgtAOh0SIgtAPFIOlxSbsljUjaJ+kFSfPr0pmZNcwFzAP2AlbkGgV6Uu8z9KBjBGz3gz0F7ADuBp4HfvLl3wFzM0kAcC1wzg+0L6ZbAIx73aY0+22kGLAaF5OOAh8WKsxsAtjpb+9Ms9NGImCtlwNmdr6Ifp+Xi9PstJEIuMvL/SX00Vub0uy0IQiQdCPuETgPfFHGPNXX1+AESOoAPgBywPtmNl7C9Cov/0iz/6AESLoJ92z3AN8CmxLMu7z8MU0fghEg6SHgILAG+AVY76N9KfR6OZKqIwHW+xzwOtM7vI+BRWXqdOPiwz9A56zdCAG3AcN+4GeB5wBVUO8tX+eN1H2awcFvwW1xDfccr66wXrQ6TAHLZh0BwJXAYMGUHwA6Kqwr4Ctfr78u/tV58L24ra0BE8ATVdbf7OseT/vZrzsBwDpg0g/gG6C7yvqdfuAGbK6bn3Ua/D3A6ShwAe01tNHv639dSaCs9ZLvLDVI6sJF+iuAt/2/V1UnkpbjNkZtuK1xtPZbGZmkm/J+HTCz4ci4zW9I7qWyl4xRM9texuYZ3OD3Ak9VO3iPVbjBg4sjvQm2VUPSm8BWMxsXbmnKVVF/qZkdKdHwQmAM6ABWmNmhGh2cAzwAXB0VFaprLLscWAE8DLQDn5jZfWJ6ijwL/Jvg1zbcC8kAcLKEzWKgDxg2s56EtoJBUjfwGbAIeBKm1+d5ZYLS6QLbcteWegWtlIL0Y97PjwpnQM7MziQwNwnMBd4Dkqb2qJkNVv/fzBwkXQ/8CvzeVs64CPaY2a6UfZppXOPlRPCESCCs9HKolhkwayBpAy7yx7HOy3xmCfCptkGSkz7ZnQFmNi5pIy4HUQgBW3EbrezOAAAzezdeJqkHl4gZM7MTzRgELwRAaIC0eABEBOShuQkYguk3rsxB0hpgWbwYuMP/zkNGCZDUCRwA5pQwOWZmxyCjBJjZX5Je4tIlsAt3EDMUFWSSAAAzezleJuk1HAH5qKzZguBFARCaiACfZbrd3zblDFgKzAdOmNlYVJipGOAz0l0l1Pd7mS8szAwBkq7DfUtYaumLMFR4kxkCcInanbij9GJYDiwkBQKWSFqboP/NzI7W0O7/gpmdAzYW0/kAGH16k4/rK80KT1JZRvgM8GDozG/M9yXet5NxXTUz4E9cLn0ElyIvhgXALcAOSZ+b2fEq2q8nVnn5ZVxRSMCtks4mNHLKy0fM7GAxA0k54AhwA9Av6dEaj8ZSg/dpm7/99BI97uuLaj4+TDzyktQH7MaR+zOwC9gD/E35w01L0aYd98+/iAuM3wMrzWzyIn+BV4ANVEbCD7gPmaeSjCStB95h+tu+0DiMi0uH44rUj8cvNOyysk/jvgG+GXeqFD+wLCbTspnEHYfvB14tdepVNwJmC5rpXaAoWgSEdiA0WgSEdiA0mp6A/wCQSt7wMdtqEQAAAABJRU5ErkJggg=="
like_sim = "data:image/png;base64,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"
atencao_nao = "data:image/png;base64,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"
atencao_sim = "data:image/png;base64,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"
# participa_nao = "data:image/png;base64,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"
# participa_sim = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAB2AAAAdgB+lymcgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAgZSURBVHic7Zt7jFxVHcc/596ZOzN39tVtt6XbdrcLbLcvtcVqWxsEC2GjdjHVNAoSg5oIiahNFP8Qohi1oSVWg0IgmpDIIzGIELT4aGilPhAsodSyfbFst6xtt9OdPnac1517j3/MPmZ3Zu7eOfNYtH7+mznnfO/v/OY8fud3zwjGuF82ovEVJD1AO2BQA5YcPdBUi+cA0tH0dMbnPyx1vjzw0LKXAQQA98v3AbsQLKiRMeMs632t1o9EImQiHP7OwMNLvyfYJmejcxBorbklzIwDAKQQJMzwRh8+voGc6LwmYGEDhGsxASRohl6DB4GNhszYaI4DgJASzZYP+5BsHqukCXjwo7CuVhPBkbz/8R/W6GHwdMsa7q2/Dt22AfBbyU4N6Bir0DWnhp2fAbZE9uP3ifHPumPrGjmrvemfCbNqi0/KiQ8StJkz5d3BZe8AX7kCoXSUcPwdLM3kYkNnJWyannoHWtIgHRgwwVGXUnZAKB2l4+xeQulhGBmE2BB2sJm+rjsZqWtXt8gNU8L1cViYASsOyQuwzgf758PxOiVJpSlgZP7NktO/zXY+Bz0ZpfPNnRjWRSVjXNElbIplOz+JDKwZhNakkqySA+ZdfAOfXfiBIpOkfeAZJWNcWWJBU7GxLuGDESVZJQfUJ067lpuX+pWMcaV16i8/hVBCSVZxF5DuxWKa8ncRSg6IBa9wLU/ULVaRdefMNGeGVFBJVskBZ5pWYWuBgmVSDzDQ9kklY1w5asDFYuYK+EeLkqySA9K+Oo7N/xhJ/+RchmM08taKr5IKNCsZ40pGwK4wnJm6c+vw+gJ4J6QkqxwHxAMt9C7cgpmOUBfrx9JMorNWMpZjqQoxDZ4PQ7MDc/3g1ENfHdjqkqU5QEpa/rCHlj/uIfCv02iWBcDbp4MMRrJTQtPAbPJh3LqB1NYt6pblsuoi3BSBtgQY2a1Qxs8jzw9my4UAGUT0tSOevAak94FdkgMWP/QzZu/5s2sdx4FYNAM/fYnmwydJPfr1Uh6RT3cEPnXKvY6UQAJ51RH45jDigW7P4bFnVzXuf33azk8luqcfY28ZKa95adg8TeenIIMR5Md7Pdf37IBZf3ulJEOy1oB4Yk/p7cZYfUFtmV4x4LmqZ3lj+LyCJeBERpTaAdBkKTWThvdzgWcHOIHC+/50iGAZaaa0YqDqeE+0TloEDQ2uKBJQJe/8LNqLbZDJ33MCx6LMG8g/AYqgQeieT6MV0ZSOZHvH0qLGhY50sNrsw+/PPweEjSjNZv4R2HE0XnljPX0dHXllAClNQ+Tsm4LtE0my69tg72eK2lNxHEeiX31b7R4ItG+8GzPnR7zsU2L/d8BMGzDTXPYOKC8rnEnChQGIHgdpw+KPQKChQqYVxjQkPUszbFiYYpaR4oGXGzk4pN4N9Zbn+2HgJbDT41lh+nbDylugbYOyrBtrFzk8c0uCBY3OeFb4tqXDPNY7hy88r3YEV5sC8XPQ/2K287k4Fhx6Ei6dVJJ1oyUs2fW5eLbzk5B8fvk5tq5VizjVHDB0MPtSohCODYefU5J140sfsJhtFss1Su75kFqorjgCht3LY0NKsm6sbnXPejQH0q7lxVBzgD7N0qFX/jVzLOWeabIVM1FqDmhocy9vWaYk68YLx9yd3htVywmqOWDeeyBY5HJXoAmWbi5cVga/OuRj91uFT3k2Orf+uoZZYXQDum6G5qtBjBolNJjdCR++N1teYRwJn3jC5Ed/NRhJjw53AacSJut/0UbvObVppxYHWDG4dALCjRB6L/jroSENwg9v/wUWr4PQLCXpYuh+nXD7HHac9LNzEFpbfZw16xhJC+Ryi4B9itTQpZJ1S3NA+hLs2wpHnwI7NfH9mQaI5JzNNQkrVsIdz0IgXLJRuWi6zrVfu5E1t28gUDeRWDiYSvBqbGLv14CFZ+NE7niK1OAF7/qea9ppeK4beh+b3PlCOAL++SZsW+9Zvhibdmxhw103TOp8wUcCg3NN6p7+Ir5679kr7w448jic+bvn6gCcGoZ9PymtTQ4LVrexcvM1JbUZ9glav9vjub53Bwz8riRDxnntWbV2wFXXdSm1s1Z5v+unAeMhVMwtmEpOE/0VI176wjRGaJba+mEFiy9tWm40LbIOODH2+cBZ2FvsHBNWvEHZMEetHTCisKoDGPHCv2T9ko0EnYmQ2tZ0W7Bd7gDuHvtSF9DVDKGp26p0srtAocsRlgV2gRy+0KF+bjZGKEJ03wGXrgiELgoGuVKIou9hZcYZfV02gYbAsDOTzE8GzWOCbbJl9La4+62HKjFTt8VBkAyGbtL4lojgsAlwv/jzP4QUgrgZ/n7/o8t3TwyinbIZi61AD7CISuQLHdvEcVw35SV9hzwIVeDSkQSpaRnLZxxDcNeJR5b9Cap6mwG4+YXfI+l2M2p+/6uuEqlQ05Ho/q2VP16OUt2ssKT4ey+PaI41rxKmFNWvmnLPb0yyU6ksNDtd1TRz9Rwg9K5K6OsZS2/o/nkVbl1lqZ4DpCh7+I9LjchrK6U1lSquAbJiDtCktbZSWnna1RKGyo0AYTsrK6U1lf+WEXBlpbTytKuiet99GlCxv48IO1O1ML28QGibnI2PHwOTAxXbCRAf8TRsrzzt8UaXpsenfpXx+4cSutkdeXDRcW8i+ZT3dljn20jy77hoGtQ1epIIWF5vgllmXttUssOp134JlJY2yqG8KSBQuzpWQYQsz4ZyR8APsOlEsgrF6WTrutrf56UgHTDOx32B25Xaj/If/jJqII416JEAAAAASUVORK5CYII="
# participa_nao = "data:image/png;base64,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";
# participa_sim = "data:image/png;base64,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";
# participa_nao = "data:image/png;base64,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";
# participa_sim = "data:image/png;base64,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";
participa_sim = "data:image/png;base64,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"
participa_nao = "data:image/png;base64,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"
comentario_nao = "data:image/png;base64,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"
comentario_sim = "data:image/png;base64,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"
imagens_marcar = {"ok": {True: like_sim, False: like_nao}, "alerta": {
True: atencao_sim, False: atencao_nao}, "participa": {True: participa_sim, False: participa_nao}}
opacity = {True: "1.0", False: "0.2"}
# ----------------------------------------------------------------------------------------------
def MSG(s):
return ''.join([
s,
])
def IMG_64(img_type, img_name):
encoded_string = ""
image_file = open(img_type+"/"+img_name+".png", "rb")
encoded_string = base64.b64encode(image_file.read())
return encoded_string
def NOME_SIMPLIFICADO(s):
nn = s.split(" ")
n = ""
for k in nn:
if n == "":
n += (k + " ")
else:
if len(k) > 0:
n += k[0]
return n.title()
return n.title()
def NOME_INICIAIS(s):
nn = s.split(" ")
n = ""
for k in nn:
if n == "":
n += k[0].title()
else:
if len(k) > 0:
n += k[0].title()
return n
return n.title()
def TELA_PRINCIAL():
r = []
arquivo = open("static/arquivo.html", "r", encoding='UTF8').read()
arquivo = arquivo.replace(
"[NOME_PROFESSOR]", NOME_INICIAIS(session["nome"]))
r.append(arquivo)
return ''.join(r)
def LISTA_DISCIPLINAS(cmd):
disciplinas = []
for disciplina in DISCIPLINAS.find({"curso": cmd[1], "semestre": cmd[2]}).sort("disciplina", 1):
disciplinas.append(disciplina["disciplina"])
return {"cmd": cmd, "disciplinas": disciplinas}
def CARREGAR(cmd):
r = []
lista_estudantes = []
professor = session["nome"]
filtro_busca1 = {}
if cmd[4] == "Equipe Pedagógica" or cmd[4] == "NAPNE":
filtro_busca1 = {"curso": cmd[1], "semestre": cmd[2],
"turno": cmd[3], "turma": cmd[5], "ano_sem": cmd[6]}
else:
filtro_busca1 = {"curso": cmd[1], "semestre": cmd[2], "turno": cmd[3],
"disciplina": cmd[4], "turma": cmd[5], "ano_sem": cmd[6]}
for aluno in MATRICULAS.find(filtro_busca1).sort("nome", 1):
matricula = aluno["matricula"]
f = ""
for foto in FOTOS.find({"matricula": aluno["matricula"]}):
f = foto["foto"]
foto = "<div style='position:relative;left:0;overflow:hidden; width:20vh; height:20vh'><img class='hover1' style = 'position:absolute;left:0;width:19.5vh;' src='" + \
f+f"' onclick=\"show_student('{matricula}');\" ></div>"
nome = NOME_SIMPLIFICADO(aluno["nome"])
if not matricula in lista_estudantes:
lista_estudantes.append(matricula)
# style_next_invitations=" display: inline-block; width:20vh; height:37vh;margin-left:1vw; margin-right:1vw;margin-top:1vw; box-shadow: 0px 0px 1vw rgba(0, 0, 0, 0.12), 2px 2vw 2vw rgba(0, 0, 0, 0.24);background: #eAeAeA;border-radius:1vw;"
num_alerta = MARCAS.count_documents(
{"matricula": matricula, "tipo": "alerta", "valor": True, "ano_sem": cmd[6]})
if num_alerta >= NUM_MAX_ALERTA:
background = "#ff9999"
else:
background = "#ffffff"
style_next_invitations = f" display: inline-block; width:20vh; height:38vh;margin-left:1vw; margin-right:1vw;margin-top:1vw; box-shadow: 0px 0px 1vw rgba(0, 0, 0, 0.12), 2px 2vw 2vw rgba(0, 0, 0, 0.24);background: {background};border-radius:1vw;"
# style_next_invitations="width:30vw; height:25vh;margin-left:5vw; margin-right:5vw; margin-top:2.5vw;"
# r.append("<div style=' display: inline-block;height:25vh; '>")
r.append(f"<div style='{style_next_invitations}'>")
r.append("<table width='100%'>")
r.append("<tr>")
r.append(
f"<td colspan='3' style='font-family: Lato;font-style: bold;text-align: center;font-size: 2.5vh; color: #444444;'><br>{nome}<br><br></td>")
r.append("</tr>")
r.append("<tr>")
r.append(f"<td colspan='3'>{foto}</td>")
r.append("</tr>")
r.append("<tr>")
for item in ["ok", "alerta", "participa"]:
r.append("<td style='text-align: center;font-size: 1.0vh;'>")
filtro = {"matricula": matricula, "tipo": item,
"disciplina": cmd[4], "professor": professor, "ano_sem": cmd[6]}
marcado = VERIFICA_MARCACAO(filtro)
img = imagens_marcar[item][marcado]
o = opacity[marcado]
r.append(
f"<br><img id='{matricula}_{item}' class='hover2' style ='opacity:{o}; height:3.5vh;' onclick='marcar(\"{matricula}\",\"{item}\")' src='{img}'>")
r.append("</td>")
r.append("</tr>")
r.append("</table>")
r.append("</div>")
return {"cmd": cmd, "ret": ''.join(r)}
def VERIFICA_MARCACAO(filtro):
for marca in MARCAS.find(filtro):
if marca["valor"]:
return True
return False
def MUDA_MARCACAO(cmd):
professor = session["nome"]
# 1 2 3 4 5 6 7
# api("marcar"+"|"+matricula+"|"+tipo+"|"+disciplina+"|"+curso+"|"+semestre+"|"+turno+"|"+turma);
filtro = {"matricula": cmd[1], "tipo": cmd[2], "disciplina": cmd[3], "curso": cmd[4],
"semestre": cmd[5], "turno": cmd[6], "turma": cmd[7], "ano_sem": cmd[8], "professor": professor}
if VERIFICA_MARCACAO(filtro):
MARCAS.update_one(filtro, {"$set": {"valor": False}}, upsert=True)
return {"cmd": cmd, "valor": False}
else:
MARCAS.update_one(filtro, {"$set": {"valor": True}}, upsert=True)
return {"cmd": cmd, "valor": True}
def SHOW_STUDENT(cmd):
matricula = cmd[1]
if matricula != "":
professor = session["nome"]
foto = ""
for m in MATRICULAS.find({"matricula": cmd[1]}).limit(1):
nome = m["nome"].title()
foto
for f in FOTOS.find({"matricula": cmd[1]}):
foto = f["foto"]
telefones = ""
emails = ""
for c in CONTATOS.find({"matricula": cmd[1]}):
telefones = c["telefones"]
emails = c["emails"]
comentarios = LISTA_COMENTARIOS(
{"matricula": matricula, "ano_sem": cmd[6]})
num_ok = MARCAS.count_documents(
{"matricula": matricula, "tipo": "ok", "valor": True, "ano_sem": cmd[6]})
num_alerta = MARCAS.count_documents(
{"matricula": matricula, "tipo": "alerta", "valor": True, "ano_sem": cmd[6]})
num_participa = MARCAS.count_documents(
{"matricula": matricula, "tipo": "participa", "valor": True, "ano_sem": cmd[6]})
num_comentarios = COMENTARIOS.count_documents(
{"matricula": matricula, "ano_sem": cmd[6]})
num_matriculas = MATRICULAS.count_documents(
{"matricula": matricula, "ano_sem": cmd[6]})
if num_matriculas == 0:
num_matriculas = 1
num_ok_m = str(num_ok) + "<small><i> (" + \
str(int(100*num_ok / num_matriculas))+"%)</i></small>"
num_alerta_m = str(num_alerta) + "<small><i> (" + \
str(int(100*num_alerta / num_matriculas))+"%)</i></small>"
num_participa_m = str(num_participa) + "<small><i> (" + \
str(int(100*num_participa / num_matriculas))+"%)</i></small>"
num_comentarios_m = str(num_comentarios) + "<small><i> (" + \
str(int(100*num_comentarios / num_matriculas))+"%)</i></small>"
j = {"cmd": cmd, "nome": nome, "foto": foto, "telefones": telefones, "emails": emails, "comentarios": comentarios,
"num_ok": num_ok_m, "num_alerta": num_alerta_m, "num_participa": num_participa_m, "num_comentarios": num_comentarios_m}
else:
professor = session["nome"]
foto = ""
# 0 1 2 3 4
# api("show_student"+"|"+matricula+"|"+curso+"|"+semestre+"|"+turno);
nome = cmd[2] + " - " + cmd[3] + " - "+cmd[4] + " - "+cmd[5]
curso, semestre, turno, turma = cmd[2], cmd[3], cmd[4], cmd[5]
foto = "static/class.png"
telefones = ""
emails = ""
comentarios = LISTA_COMENTARIOS(
{"curso": curso, "semestre": semestre, "turno": turno, "turma": turma, "ano_sem": cmd[6]})
num_ok = MARCAS.count_documents({"curso": curso, "semestre": semestre, "turno": turno,
"turma": turma, "tipo": "ok", "valor": True, "ano_sem": cmd[6]})
num_alerta = MARCAS.count_documents(
{"curso": curso, "semestre": semestre, "turno": turno, "turma": turma, "tipo": "alerta", "valor": True, "ano_sem": cmd[6]})
num_participa = MARCAS.count_documents(
{"curso": curso, "semestre": semestre, "turno": turno, "turma": turma, "tipo": "participa", "valor": True, "ano_sem": cmd[6]})
num_comentarios = COMENTARIOS.count_documents(
{"curso": curso, "semestre": semestre, "turno": turno, "turma": turma, "ano_sem": cmd[6]})
num_matriculas = MATRICULAS.count_documents(
{"curso": curso, "semestre": semestre, "turno": turno, "turma": turma, "ano_sem": cmd[6]})
if num_matriculas == 0:
num_matriculas = 1
num_ok_m = str(num_ok) + "<small><i> (" + \
str(int(100*num_ok / num_matriculas))+"%)</i></small>"
num_alerta_m = str(num_alerta) + "<small><i> (" + \
str(int(100*num_alerta / num_matriculas))+"%)</i></small>"
num_participa_m = str(num_participa) + "<small><i> (" + \
str(int(100*num_participa / num_matriculas))+"%)</i></small>"
num_comentarios_m = str(num_comentarios) + "<small><i> (" + \
str(int(100*num_comentarios / num_matriculas))+"%)</i></small>"
j = {"cmd": cmd, "nome": nome, "foto": foto, "telefones": telefones, "emails": emails, "comentarios": comentarios,
"num_ok": num_ok_m, "num_alerta": num_alerta_m, "num_participa": num_participa_m, "num_comentarios": num_comentarios_m}
return j
def LISTA_COMENTARIOS(filtro):
r = []
r.append("<table class='table_coment' width='100%' border='0' cellpadding ='' cellspacing ='0' style=' border-color:#ffffff; border-spacing:0'><tr><td></td><td width='90%'><B></B></td></tr>")
sprof = session["nome"]
for c in COMENTARIOS.find(filtro).sort("data", -1):
professor = NOME_SIMPLIFICADO(c["professor"])
if len(c["disciplina"]) > 15:
disciplina = c["disciplina"][0:15] + "..." + c["disciplina"][-1]
else:
disciplina = c["disciplina"]
dis = NOME_SIMPLIFICADO(c["professor"])
data = c["data"]
comando = ""
if "matricula" in filtro:
comentario = "<br><b>" + \
c["comentario"] + \
"</b><br>" f"<small><i>{professor}, {disciplina}<br>{data} </i> </small>"
else:
nome = "GERAL"
if c["matricula"] != "":
for m in MATRICULAS.find({"matricula": c["matricula"]}).limit(1):
nome = NOME_SIMPLIFICADO(m["nome"])
comentario = "<br><b>" + c["comentario"] + "</b><br>" + \
f"<small><i> {professor} para {nome}<br>{data} </i> </small>"
if c["professor"] == sprof:
apagar = "<img src = 'static/delete1.png' style='height:2vh' onclick=\"apagar_comentario('" + str(
c.get('_id')) + "')\">"
else:
apagar = ""
r.append(
f"<tr><td style='text-align:center;'>{apagar}</td><td width='80%'>{comentario}</td></tr>")
r.append("</table><table>")
filtro["valor"] = True
if "matricula" in filtro:
for c in MARCAS.find(filtro).sort("tipo", 1):
professor = NOME_SIMPLIFICADO(c["professor"])
if len(c["disciplina"]) > 15:
disciplina = c["disciplina"][0:15] + \
"..." + c["disciplina"][-1]
else:
disciplina = c["disciplina"]
dis = NOME_SIMPLIFICADO(c["professor"])
data = c["ano_sem"]
comando = ""
imagem = "<img src = 'static/" + \
c["tipo"]+".png' style='height:2vh'>"
comentario = "<br><b>" + imagem + \
"</b><br>" f"<small><i>{professor}, {disciplina}<br>{data} </i> </small>"
r.append(
f"<tr><td>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</td><td></td><td width='80%' style='text-align:right;'>{comentario}</td></tr>")
r.append("</table>")
return ''.join(r)
def SEND_NEW_COMENT(cmd):
professor = session["nome"]
matricula = cmd[1]
if matricula != "":
comentario = cmd[2]
data = datetime.now().strftime("%m/%d/%Y, %H:%M:%S")
# api("send_new_comment"+"|"+matricula+"|"+comentario+"|"+disciplina+"|"+curso+"|"+semestre+"|"+turno+"|"+turma);
filtro = {"data": data, "matricula": cmd[1], "disciplina": cmd[3], "curso": cmd[4], "semestre": cmd[5],
"turno": cmd[6], "turma": cmd[7], "ano_sem": cmd[8], "professor": professor, "comentario": comentario}
filtro2 = {"matricula": cmd[1], "ano_sem": cmd[8]}
COMENTARIOS.insert_one(filtro)
num_comentarios = COMENTARIOS.count_documents(filtro2)
else:
comentario = cmd[2]
data = datetime.now().strftime("%m/%d/%Y, %H:%M:%S")
filtro = {"data": data, "matricula": "", "disciplina": cmd[3], "curso": cmd[4], "semestre": cmd[5],
"turno": cmd[6], "turma": cmd[7], "professor": professor, "comentario": comentario, "ano_sem": cmd[8]}
filtro2 = {"curso": cmd[4], "semestre": cmd[5],
"turno": cmd[6], "ano_sem": cmd[8]}
COMENTARIOS.insert_one(filtro)
num_comentarios = COMENTARIOS.count_documents(filtro2)
return {"cmd": cmd, "comentarios": LISTA_COMENTARIOS(filtro2), "num": num_comentarios}
def APAGAR_COMENTARIO(cmd):
COMENTARIOS.delete_one({"_id": ObjectId(cmd[2])})
matricula = cmd[1]
if matricula != "":
filtro2 = {"matricula": cmd[1], "ano_sem": cmd[7]}
else:
filtro2 = {"curso": cmd[3], "semestre": cmd[4],
"turno": cmd[5], "turma": cmd[6], "ano_sem": cmd[7]}
num_comentarios = COMENTARIOS.count_documents(filtro2)
return {"cmd": cmd, "comentarios": LISTA_COMENTARIOS(filtro2), "num": num_comentarios}
def RELATORIO(curso, semestre, turno, turma, ano_sem):
r = []
# ['2014', [OK], [ALERTA], [PARTICIPA]]
num_ok = MARCAS.count_documents({"curso": curso, "semestre": semestre, "turno": turno,
"turma": turma, "tipo": "ok", "valor": True, "ano_sem": ano_sem})
num_alerta = MARCAS.count_documents({"curso": curso, "semestre": semestre, "turno": turno,
"turma": turma, "tipo": "alerta", "valor": True, "ano_sem": ano_sem})
num_participa = MARCAS.count_documents(
{"curso": curso, "semestre": semestre, "turno": turno, "turma": turma, "tipo": "participa", "valor": True, "ano_sem": ano_sem})
num_comentarios = COMENTARIOS.count_documents(
{"curso": curso, "semestre": semestre, "turno": turno, "turma": turma, "ano_sem": ano_sem})
num_matriculas = MATRICULAS.count_documents(
{"curso": curso, "semestre": semestre, "turno": turno, "turma": turma, "ano_sem": ano_sem})
if num_matriculas == 0:
num_matriculas = 1
num_ok_m = str(int(100*num_ok / num_matriculas))
num_alerta_m = str(int(100*num_alerta / num_matriculas))
num_participa_m = str(int(100*num_participa / num_matriculas))
num_comentarios_m = str(int(100*num_comentarios / num_matriculas))
TITULO = f"{curso} - {semestre} - {turno} - {turma}"
CONTAGENS = f"OK: {num_ok} ({num_ok_m}%) , ALERTA: {num_alerta} ({num_alerta_m}%), PARTICIPA: {num_participa} ({num_participa_m}%), COMENTARIOS: {num_comentarios} ({num_comentarios_m}%)"
arquivo = open("static/relatorio.html", "r", encoding='UTF8').read()
arquivo = arquivo.replace("[CONTAGENS]", CONTAGENS)
arquivo = arquivo.replace("[TITULO]", TITULO)
arquivo = arquivo.replace("[OK]", str(num_ok_m))
arquivo = arquivo.replace("[ALERTA]", str(num_alerta_m))
arquivo = arquivo.replace("[PARTICIPA]", str(num_participa_m))
r.append(arquivo)
return ''.join(r)
# ----------------------------------------------------------------------------------------------
@app.route('/api', methods=["POST", "GET"])
def api():
if "token" in session:
if "cmd" in request.json:
cmd = request.json["cmd"].split("|")
print(session["email"], ">", cmd)
if cmd[0] == "carregar":
return CARREGAR(cmd)
elif cmd[0] == "lista_disciplinas":
return LISTA_DISCIPLINAS(cmd)
elif cmd[0] == "marcar":
return MUDA_MARCACAO(cmd)
elif cmd[0] == "show_student":
return SHOW_STUDENT(cmd)
elif cmd[0] == "send_new_comment":
return SEND_NEW_COMENT(cmd)
elif cmd[0] == "apagar_comentario":
return APAGAR_COMENTARIO(cmd)
return {"cmd": ""}
# ----------------------------------------------------------------------------------------------
@app.route('/relatorio', methods=["POST", "GET"])
def relatorio():
if "ano_sem" in request.args:
if "curso" in request.args:
if "semestre" in request.args:
if "turno" in request.args:
if "turma" in request.args:
return RELATORIO(request.args["curso"], request.args["semestre"], request.args["turno"], request.args["turma"], request.args["ano_sem"])
return "faltam argumentos"
@app.route('/', methods=["POST", "GET"])
def home():
if "token" in request.args:
professor_encontrado = False
token = request.args["token"]
for professor in PROFESSORES.find({"token": token}):
professor_encontrado = True
session.permanent = True
session["email"] = professor["email"]
session["nome"] = professor["nome"]
session["token"] = professor["token"]
session.modified = True
return redirect(url_for("home"))
return MSG("usuário não encontrado")
if "token" in session:
return TELA_PRINCIAL()
else:
return MSG("Desconectado...\n\nFaça um novo acesso pelo link enviado para o seu e-mail.")
# PROFESSORES.update_one({"email":"robson.verly@ifms.edu.br"},{"$set":{"email":"robson.verly@ifms.edu.br","nome":"Robson Jaques Verly","token":"123"}},upsert = True)
# CURSOS.update_one({"matriz":"21"},{"$set":{"matriz":"21","nome":"Curso Técnico em Informática"}},upsert = True)
# ----------------------------------------------------------------------------------------------
if __name__ == "__main__":
if APP_RUN_DEBUG_MODE:
app.run(debug=True, host=HOST_ADDRESS, port=APP_PORT)
else:
serve(app, host=HOST_ADDRESS, port=APP_PORT, threads=SERVER_THREADS,
backlog=MAXIMUM_QUEUE_SIZE, channel_timeout=SERVER_TIMEOUT)