# 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,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" # participa_nao = "data:image/png;base64,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"; # participa_sim = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAB2AAAAdgB+lymcgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAA1cSURBVHic7Vt5cJ3Vdf+d+21v05Nk2Vocy1jeYlkUYxwcT22B5dpGAYs0tmXqtLglCRMWmzStA25CpyqT0gSYJg3Q0Mm0GUhxU6mdzDQwyJgSZyCkA8UblRmMsGvLAse29rd871vu6R/PenpP73t6i2TI9vvr073nnvO7593tnHsF/IaD8gkwg3B06yfAtAqgchAGAPofWtl1tBADrYf/41YS1Dh9qjMH6eLYgVVbu4E8DuAj29vBeBjAYo/qHjDtpVVd3bnat3d2KmNLFBOAOi3GM4+x7pXbwgAgvGqZQXx4+3fA6IR35wGgCcQv8LHtf5XTTBMU/PJ1HgCM8Q9PB+DI9gcB7ClEkxMzW2MHN+yeGV4fPrIcwEe2LQHwl4UqcKLxcgCPxn6yft5MEhuHRgLX+KqwOTgPm4PzcLUxC8pl2h83KlCt+qelP3t4Mu0GoBXS2EkkXmfm1QDAjvgiinBcIVjjr8Ft4UUoV/SM8kE3gR5zEOuCdThtj+LrFw+XbMNjfnJrAZsDAMCOJVLtCdSKGXRAa6geO8KLAAB9dgRvW8MgAI1GJeapQTQH6wAAh6LvT8tOhgOYQThCV03VgFntTciF/TFnZYPrr7huePCMU2f85xkFkYZpMUnDAj2E9vBCMIAfjvTipeg58OW6zcF5+IPy5Loswei1RqdlK3MEdLULLJFPubJitYBlAACDWCIYs90aTvCSubZbvRhpO0PCLVPPmjsXzfd1npgWkzS0BueDQHg52o+D0XOp8k3BebitfDEYwP/Zo2jQwrgpNA9PD58s2VaGA2hHl8s9nfcPjlQmilEipUB/Ytsy4EclE0lHo1EBAOiO9KXKNqX98s+OvIuTiWE8VH09GvXKadmasT3alpr3llokCEBIaGAAA27yd5jc+Zej/fCRAgAIT1ogi0U26QtzJABZSGNmTvujsIUzr04AEWmDAFQphmfnAWD25e1v1LWmZS/LAdTS4hDQ5yWcRTbNAUIhZ1pM0vB2YhgAcEfFxz07DwAbgnOTstbQtGx5H4VBxwtpnLAm+qwIpX8K0aLQHT0LBqPRqAQB2J/WeUJyStwYmAuHJQ5Ezk2pKx881wBm+QQRteVrHI+bE4o07W+mxSQNi7QwKO0sckOgDlWKDwpR6hzAAPaP9OK8E5uWLU8H1Kzd/OKF1w4+D+CWXA3NhAXbSY4AQ1PPLt7U9r18xsiVCPQOAESILq4ChPe60RL8GBjAq7HzuMaYhXothHotlKofdBPYP/IuDpuX8pnMi5y7AEn/TiliLxFo9eQ6y7YxMhoFAGiqOmyL4MpCjFX95D34zybnt/HBKAZvXOgp9+RQD4KkodcagUYCjUYl5qoBSGa878TwdmIYbmHrdF7kdMCcdevGuKez+dJo1VchaC+7bpCZEYmZiMfiEJrOuoJuVa/Y2tDSYubSMw5yJHx9I6m/A33DGMwh+4E9MaxtljhuDuA4BoroVuGY8hxATTssZn44Ztpf4UT8sDk6XBaWLGaHyqQWLKsN+PWbCzVkXIyC0nYN11Ay6q/1VaFODRbLPwPnnAjeMnO51RuFHoQCZPiv88+ZCD0ZKHgDVhIOKl4/m1FmVZelvgnA3ZVN0Gh6Z6kxaeFL518rqk2GAz6/Z99KQdQC5lQ4fNeXvyb+9q+/+r6h63OZ+U1mqELQilgsfu7OPfu+MaX2fzyiqEtmw983DCVuZ1RFl8xOfTOA7w71YIleXhT5yRg/PxSDcQfQnfft+xYY94Ezj3TSlfjx890Hbrlp44DluKsAQFWVY//+o+d+AeCBKbUzI3TyYlZxfEElzLnhjLKj5gCOmpnzfKppUcpw94IKAF+474F7wPhSLqH/fuPYoo0b1i8iSvrGsuyrj711oqoUg1ZNCAPN+SPnfNOilOHuBRUAiOkrUwk5jr347XfePbJ82dKVAHDk6P++IaVcU4whqQmMNdVibEUdWMk/1/NNi1KGuxfUjo4OtX/AnJ8yzBKuK6GqmevjgYOHrOXLlgIAXjr0ioFsuAAeyyghUoZW1+91ygwk5obBanGLnNe0mGmoPYCoSMuBJRIJAJTlgOGRkesvDgz2OZadiMVi13rocr/3+Df2pRe093TqEUvZe0WYzxCytkFmxvhcnwTR3f3SKdO0BHLfFfzKoaiEyHunz1zLRbR52pZb/pU4v+CHDAKUF47tb6UVn+0uygEMFLxRc2enAuH82+eK5/dhQAHQCSA8I2msX1EwAKjo6XFRu+ib46VCEQ2QwgVwNmdTDxDIzfh7xw6Xj+3fCqK1M0J3pkH08kdN4bf4LX4JMDO57CLBd32m2lJlSyJmtkpX+hjUK2z9mfL9z737YXOZ0gF79nSEo67ZlrBitzKzwZJOqIb17R889dSFUozZu7euJYUfAmM9AAEwrISDeDQOx3agqsoloat7K7//4tPF6v679na/n/n3mHkpiDQAImqazQDAgHv/c895Jnk9HXD73r1BX0J5CKB7APjADNM0YZpxMAiqrv1MCdLNzz7+eEE3k9zerjhz7ceI6U9zycSiccQjcQCAbug/q1hor6eOQwXdNTy5ffsuYn4UQHXKJoChSCQl8+CBA97H28kF9977F1X+hPoKQH8GwAcAIILP70coHAYR4FjWWnvUOXfXXV/7WD5yDJBbZz8zVecBIBD0IxgOAACshLV26D2toLuJf9i+/QFifhppnS8Gkx1AluBOBjyzvKqiIhhIpqel65aNmENv5DMg7/vMnwP02ULI+Pw++PzJQNO2rMahP9n0zFTyT27dej2YH/aqm/xzP7plyzN/v3nz1ZPlMhxw5+59WwFsmMqopmupSNF2nLo/+vyenFkh3tM+h4t8NOEP+UGX7wuchPOHsTs+XZ9TmGgvcr1zAqAqE4nXhG3fHiU6/khb2850mcmNCzq6G4Yv9e1K9+5ccpLsOwCEc9V7QQgBw0iOAimlsKT5zVyyxDzljxXQ9YzIVgIkXffJDHvpfzDhk4WQVNUJzzqOzLkOMPJfr3lBNyZiNCndjV4yHevXqyCaMi2nKgrKAwEEjYn8jZSyIl0m5YCOjg6VgFmFECQx4TeGnCqiLOmFqNAmVLqO6/kCYvmcOQIFnGMEEXRt4s2XnJT0TfWkJ/ld4MEoTSzHuwBub1dQoEMnQ6QPW+Yr+tDyyoXDyVeiJZ40yePryuA3OR8AIN0BPT2uT1cLyzWnZblml/k/qpyXqxt6QXzT7yRVRcnIW6Qc0NXV5X5hw6pXBWUmNrzAnBTRNQV/vOETM3NPXSR2dHW5N9726VepAL5umgPW3Lwx401NxhSorQjJ3a2rf64qNOXFp+O48BsavnxLMwxVzXs1fqUQnl0lN+1q/7miiKn5ukkfrfnUxkjtwgXR9LrMNUChJ2oqQuse3Hbj6d+ZX/MmUXZKlwiyZfl88/5bb4BPU3BpLPad6XelRCj0RHj2rHVtuz93un7Z4jeRg++chvpLN+1qd2oa5ocUVXw9o35ygwuvHfwxgC0AIKU8fylinhqNmTYBKA8Yuk8T10YjcT8A2Cxj1/3+Ts/bS+5o191Bp6gHl6m2DAxeGLzcAUL1Dw/l3AzS+bKU58eGR0/FxyI2APjLQroW8DeNjkXDAKBp6tllN2/LeAqcvccm1J1s2P9FoNVCiNrqcKC2ejxKs20MjyRDTAk4p3/hfPQXJGl8SYja8KyK2vCs5GEvna+mqsOWNLJutLK2weqWlki1PmsdETpIUaJA8rYoEjUxPDIGBjCasN85djJRse2Lt39wRTtXANL5gpDFFyD2+fQXFPLXXrNlS9ajwpxDi5n1mGkPJUaGei+eOlkHBvkqK6058xeVBUL+vAFOMgniZD+dI6LIqvVZMQcRy+Abh14HAEgpoqOxZDZHQlb+4GDe1Doz67F4Ysg6f+6d0fN9ZQBBC5dz+YJlNcGQP+eFTj4HeM1hK+jXvW6HCwL3dOoXPR5jM2DV/O6m0vWWyDflgP7+gXqhUpsklF2uEH5dvymrhRByeGzsFTNmNUq4IZI8rBIeWbq0wfPf6P75rXvqFXLbAJHUyxDN0c1tQRm6BkAQABgciYixoz8NvPhyPB5rlOyGGDysCHrk3tX7PfV68VWFyOJLgDRt+6fRaLzRZRkmxggJeqxx8VVvphzw/oXBZjA/D6BssoJckCwxMDgC23ZBJDgY0nctW3jVv6TLfL/n7mbKoVeBEpuXaDguhaR+7cwKCdcHJOfvyOgQHMeBIGKfz7frntXPZugtia9kDA6NwrJtCEHs8+l3Ll+y4J+SiyDj28UoAwBBAuGyZHqMWZIVdx6fLEOSc+p14QbOGL1r+rRTnxzvPJDc9lJpN2aybDtLb0l8BSEcTu7YUjJZlvMtABDMrAC8ohhl49DS4nbblRkLTWdnuwKBkvSq6kT87ko3Q++0+KoKxiNtx5FlnZ2siBMnoCB5XVw00p/6MsvMBbUJCrg0vZnP1DITDtPhm0yPjatjNDWdKOC10q851OXL4Z6/wDkTj1NBShZ+n9EMAJI5MyrsgcvLS9MLsDAMX/IcMEnvdPgCgE/XbgARgcE9x5fmjSR/7fH/hFFSpM7+k+IAAAAASUVORK5CYII="; # 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 = "
" 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("
") r.append(f"
") r.append("") r.append("") r.append( f"") r.append("") r.append("") r.append(f"") r.append("") r.append("") for item in ["ok", "alerta", "participa"]: r.append("") r.append("") r.append("

{nome}

{foto}
") 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"
") r.append("
") r.append("
") 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) + " (" + \ str(int(100*num_ok / num_matriculas))+"%)" num_alerta_m = str(num_alerta) + " (" + \ str(int(100*num_alerta / num_matriculas))+"%)" num_participa_m = str(num_participa) + " (" + \ str(int(100*num_participa / num_matriculas))+"%)" num_comentarios_m = str(num_comentarios) + " (" + \ str(int(100*num_comentarios / num_matriculas))+"%)" 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) + " (" + \ str(int(100*num_ok / num_matriculas))+"%)" num_alerta_m = str(num_alerta) + " (" + \ str(int(100*num_alerta / num_matriculas))+"%)" num_participa_m = str(num_participa) + " (" + \ str(int(100*num_participa / num_matriculas))+"%)" num_comentarios_m = str(num_comentarios) + " (" + \ str(int(100*num_comentarios / num_matriculas))+"%)" 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("") 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 = "
" + \ c["comentario"] + \ "
" f"{professor}, {disciplina}
{data}
" else: nome = "GERAL" if c["matricula"] != "": for m in MATRICULAS.find({"matricula": c["matricula"]}).limit(1): nome = NOME_SIMPLIFICADO(m["nome"]) comentario = "
" + c["comentario"] + "
" + \ f" {professor} para {nome}
{data}
" if c["professor"] == sprof: apagar = "" else: apagar = "" r.append( f"") r.append("
{apagar}{comentario}
") 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 = "" comentario = "
" + imagem + \ "
" f"{professor}, {disciplina}
{data}
" r.append( f"") r.append("
           {comentario}
") 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...") # 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)