def newUsuario(response, data): try: data["senha"] = auth.setAuth(response, { "email": data["email"], "senha": data["senha"], "level": "usuario" }, "usuario") try: if data["senha"]["error"]: return data["senha"] except Exception as e: pass usuario = Usuario(**data) usuario["timestamp"] = datetime.now() usuario["timeupdate"] = datetime.now() usuario.save() response.status = HTTP_201 return dataUsuario( json.loads( json.dumps(usuario.to_mongo().to_dict(), indent=4, sort_keys=True, default=str))) except Exception as e: return errorHandler.handleError(response, e)
def getCursos(response): try: data = json.loads(json.dumps(Curso.objects.to_mongo().to_dict(), indent=4, sort_keys=True, default=str)) return data except Exception as e: return errorHandler.handleError(response, e)
def deleteRealizacaoById(response, usuario_id, materia_id, turma_id, prova_id, realizacao_id): try: usuario = Usuario.objects.get(id=usuario_id) usuario.materias.get(_id=materia_id).turmas.get(_id=turma_id).provas.get(_id=prova_id).realizacoes.filter(_id=realizacao_id).delete() usuario.save() return except Exception as e: return errorHandler.handleError(response, e)
def deleteTurmaById(response, usuario_id, materia_id, turma_id): try: usuario = Usuario.objects.get(id=usuario_id) usuario.materias.get(_id=materia_id).turmas.filter(_id=turma_id).delete() usuario.save() return except Exception as e: return errorHandler.handleError(response, e)
def deleteProvaBaseById(response, usuario_id, materia_id, provaBase_id): try: usuario = Usuario.objects.get(id=usuario_id) usuario.materias.get(_id=materia_id).provas_bases.filter( _id=provaBase_id).delete() usuario.save() return except Exception as e: return errorHandler.handleError(response, e)
def getMateriaById(response, usuario_id, materia_id): try: materia = Usuario.objects.get(id=usuario_id).materias.get(_id=materia_id) data = [] if materia: data = dataMateria(json.loads(json.dumps(materia.to_mongo().to_dict(), indent=4, sort_keys=True, default=str))) return data except Exception as e: return errorHandler.handleError(response, e)
def newCurso(response, data): locals = eval(response.get_header("locals")) try: curso = Curso(**data) usuario.save() response.status = HTTP_201 return json.loads(json.dumps(curso.to_mongo().to_dict(), indent=4, sort_keys=True, default=str)) except Exception as e: return errorHandler.handleError(response, e)
def getTurmaById(response, usuario_id, materia_id, turma_id): try: turma = Usuario.objects.get(id=usuario_id).materias.get(_id=materia_id).turmas.get(_id=turma_id) data = [] if turma: data = json.loads(json.dumps(turma.to_mongo().to_dict(), indent=4, sort_keys=True, default=str)) return dataTurma(data) except Exception as e: return errorHandler.handleError(response, e)
def sendToken(response, title, sender, receiver, data, message): expiration = format(receiver['limit'], "%Y-%m-%d %H:%M:%S") token = jwt.encode( { "client_id": receiver['client_id'], "token_expiration_date": expiration, "data": data, "level": receiver['level'] }, getSecret(), algorithm="HS256").decode('utf8') link = conf.getConf()['web_url'] + "realizacao?token=" + token msg = EmailMessage() msg['Subject'] = title msg['From'] = Address(sender['name'], addr_spec=sender['email']) msg['To'] = Address(receiver['name'], addr_spec=receiver['email']) content = """\ Olá, Há uma prova para você realizar, [3]{0}. Use este link[1] para poder acessar a mesma. Ele irá expirar em [2]{0}! [1]{0} Este é um email automático, não o responda! """ msg.set_content(content.format(link, expiration, message)) asparagus_cid = make_msgid() content = """\ <html> <head></head> <body> <p>Olá,</p> <p>Há uma prova para você realizar, {2}.</br> Use este <a href="{0}">link</a> para poder acessar a mesma. Ele irá expirar em {1}!</p> <p>Este é um email automático, não o responda!</p> </body> </html> """.format(link, expiration, message, asparagus_cid=asparagus_cid[1:-1]) msg.add_alternative(content, subtype='html') try: with smtplib.SMTP(conf.getConf()['smtp_url'], conf.getConf()['smtp_port']) as server: server.starttls() server.login(conf.getConf()['smtp_user'], conf.getConf()['smtp_password']) server.send_message(msg) server.quit() return "" except Exception as e: return errorHandler.handleError(response, e) return ""
def getRealizacaoById(response, usuario_id, materia_id, turma_id, prova_id, realizacao_id): locals = eval(response.get_header("locals")) try: realizacao = Usuario.objects.get(id=usuario_id).materias.get(_id=materia_id).turmas.get(_id=turma_id).provas.get(_id=prova_id).realizacoes.get(_id=realizacao_id) data = [] if realizacao: data = json.loads(json.dumps(realizacao.to_mongo().to_dict(), indent=4, sort_keys=True, default=str)) return data except Exception as e: return errorHandler.handleError(response, e)
def getTurmas(response, usuario_id, materia_id): try: turmas = Usuario.objects.get(id=usuario_id).materias.get(_id=materia_id).turmas data = [] if turmas: for turma in turmas: data.append(smallDataTurma(json.loads(json.dumps(turma.to_mongo().to_dict(), indent=4, sort_keys=True, default=str)))) return data except Exception as e: return errorHandler.handleError(response, e)
def removeAuth(response, client_id): """Remove the login""" locals = eval(response.get_header("locals")) level = locals['level'] client_id = locals['client_id'] try: Login.objects.get(email=client_id).delete() return except Exception as e: return errorHandler.handleError(response, e)
def getUsuarioByEmail(response, email): try: data = json.loads( json.dumps(Usuario.objects.get(email=email).to_mongo().to_dict(), indent=4, sort_keys=True, default=str)) return data["_id"] except Exception as e: return errorHandler.handleError(response, e)
def deleteUsuarioById(response, id): locals = eval(response.get_header("locals")) try: delete = auth.removeAuth(response, id) if not delete: return Usuario.objects.get(id=id).delete() else: return delete except Exception as e: return errorHandler.handleError(response, e)
def getUsuarioById(response, id): try: data = json.loads( json.dumps(Usuario.objects.get(id=id).to_mongo().to_dict(), indent=4, sort_keys=True, default=str)) return dataUsuario(data) except Exception as e: return errorHandler.handleError(response, e)
def newTurma(response, usuario_id, materia_id, data): try: data.pop("alunos", None) data.pop("provas", None) usuario = Usuario.objects.get(id=usuario_id) turma = Turma(**data) usuario.materias.get(_id=materia_id).turmas.append(turma) usuario.save() response.status = HTTP_201 return dataTurma(json.loads(json.dumps(turma.to_mongo().to_dict(), indent=4, sort_keys=True, default=str))) except Exception as e: return errorHandler.handleError(response, e)
def newProva(response, usuario_id, materia_id, turma_id, data): try: data.pop("realizacoes", None) data.pop("questoes", None) usuario = Usuario.objects.get(id=usuario_id) prova = Prova(**data) usuario.materias.get(_id=materia_id).turmas.get(_id=turma_id).provas.append(prova) usuario.save() response.status = HTTP_201 return dataProva(json.loads(json.dumps(prova.to_mongo().to_dict(), indent=4, sort_keys=True, default=str))) except Exception as e: return errorHandler.handleError(response, e)
def setAuth(response, data, level="basic"): """Create a new login, with the client_id and the encrypted client_secret""" try: hash = cryptKey.newKey() senha = cryptKey.encryptContent(data["senha"], hash) data["hash"] = hash data.pop("senha") login = Login(**data) login.save() return senha except Exception as e: return errorHandler.handleError(response, e)
def getRealizacaos(response, usuario_id, materia_id, turma_id, prova_id): try: realizacoes = Usuario.objects.get(id=usuario_id).materias.get(_id=materia_id).turmas.get(_id=turma_id).provas.get(_id=prova_id).realizacoes data = [] if realizacoes: for realizacao in realizacoes: data.append(json.loads(json.dumps(realizacao.to_mongo().to_dict(), indent=4, sort_keys=True, default=str))) for item in data: item.pop('respostas', None) return data except Exception as e: return errorHandler.handleError(response, e)
def sendReset(response, title, sender, receiver): token = jwt.encode( { "client_id": receiver['client_id'], "token_expiration_date": format(datetime.now() + timedelta(hours=1), "%Y-%m-%d %H:%M:%S") }, getSecret(), algorithm="HS256").decode('utf8') link = "https://127.0.0.1/reset_password?token=" + token msg = EmailMessage() msg['Subject'] = title msg['From'] = Address(sender['name'], sender['client_id'], sender['email']) msg['To'] = (Address(receiver['name'], str(receiver['client_id']), receiver['email'])) content = """\ Olá, Vimos que esqueceu sua senha, relaxa, com tanta coisa para lembra, é normal. Use este link[1] para poder alterar a mesma. Ele irá expirar em breve! [1]{0} Este é um email automático, não o responda! """ msg.set_content(content.format(link)) asparagus_cid = make_msgid() content = """\ <html> <head></head> <body> <p>Olá,</p> <pVimos que esqueceu sua senha, relaxa, com tanta coisa para lembra, é normal.</br> Use este <a href="{0}">link</a> para poder alterar a mesma. Ele irá expirar em breve!</p> <p>Este é um email automático, não o responda!</p> </body> </html> """.format(link, asparagus_cid=asparagus_cid[1:-1]) msg.add_alternative(content, subtype='html') try: with smtplib.SMTP('localhost') as s: s.send_message(msg) return "" except Exception as e: return errorHandler.handleError(response, e) return ""
def getProvaBaseById(response, usuario_id, materia_id, provaBase_id): try: provaBase = Usuario.objects.get(id=usuario_id).materias.get( _id=materia_id).provas_bases.get(_id=provaBase_id) data = [] if provaBase: data = json.loads( json.dumps(provaBase.to_mongo().to_dict(), indent=4, sort_keys=True, default=str)) return data except Exception as e: return errorHandler.handleError(response, e)
def newProvaBase(response, usuario_id, materia_id, data): try: usuario = Usuario.objects.get(id=usuario_id) provaBase = ProvaBase(**data) usuario.materias.get(_id=materia_id).provas_bases.append(provaBase) usuario.save() response.status = HTTP_201 return json.loads( json.dumps(provaBase.to_mongo().to_dict(), indent=4, sort_keys=True, default=str)) except Exception as e: return errorHandler.handleError(response, e)
def updateMateria(response, usuario_id, materia_id, data): try: usuario = Usuario.objects.get(id=usuario_id) materia = usuario.materias.get(_id=materia_id) data.pop("timestamp", None) data.pop("turmas", None) data.pop("provas_bases", None) data["timeupdate"] = datetime.now() for key, value in data.items(): materia[key] = value usuario.save() return dataMateria(json.loads(json.dumps(materia.to_mongo().to_dict(), indent=4, sort_keys=True, default=str))) except Exception as e: return errorHandler.handleError(response, e)
def getUsuarios(response): try: data = json.loads( json.dumps(Usuario.objects.to_mongo().to_dict(), indent=4, sort_keys=True, default=str)) for item in data: item.pop('senha', None) item.pop('materias', None) return data except Exception as e: return errorHandler.handleError(response, e)
def getAlunoById(response, usuario_id, materia_id, turma_id, aluno_id): try: aluno = Usuario.objects.get(id=usuario_id).materias.get( _id=materia_id).turmas.get(_id=turma_id).alunos.get(_id=aluno_id) data = [] if aluno: data = json.loads( json.dumps(aluno.to_mongo().to_dict(), indent=4, sort_keys=True, default=str)) return data except Exception as e: return errorHandler.handleError(response, e)
def newAluno(response, usuario_id, materia_id, turma_id, data): try: usuario = Usuario.objects.get(id=usuario_id) aluno = Aluno(**data) usuario.materias.get(_id=materia_id).turmas.get( _id=turma_id).alunos.append(aluno) usuario.save() response.status = HTTP_201 return json.loads( json.dumps(aluno.to_mongo().to_dict(), indent=4, sort_keys=True, default=str)) except Exception as e: return errorHandler.handleError(response, e)
def updateProvaBase(response, usuario_id, materia_id, provaBase_id, data): try: usuario = Usuario.objects.get(id=usuario_id) provaBase = usuario.materias.get(_id=materia_id).provas_bases.get( _id=provaBase_id) ids = [] data.pop("timestamp", None) data["timeupdate"] = datetime.now() if data["questoes"]: for key, value in enumerate(data["questoes"]): if not "_id" in value: questao = Questao(**value) provaBase.questoes.append(questao) ids.append(questao["_id"]) value = json.loads(questao.to_json()) else: questao = provaBase.questoes.get(_id=value["_id"]) ids.append(questao["_id"]) for k, v in value.items(): questao[k] = v data.pop("questoes") usuario.save() usuario.reload() provaBase = usuario.materias.get(_id=materia_id).provas_bases.get( _id=provaBase_id) questoes = provaBase.questoes for questao in questoes: if questao["_id"] in ids: ids.pop(ids.index(questao["_id"])) else: ids.append(questao["_id"]) for id in ids: provaBase.questoes.filter(_id=id).delete() usuario.save() usuario.reload() provaBase = usuario.materias.get(_id=materia_id).provas_bases.get( _id=provaBase_id) for key, value in data.items(): provaBase[key] = value usuario.save() return json.loads( json.dumps(provaBase.to_mongo().to_dict(), indent=4, sort_keys=True, default=str)) except Exception as e: return errorHandler.handleError(response, e)
def getProvaById(response, usuario_id, materia_id, turma_id, prova_id): locals = eval(response.get_header("locals")) try: prova = Usuario.objects.get(id=usuario_id).materias.get(_id=materia_id).turmas.get(_id=turma_id).provas.get(_id=prova_id) data = [] if prova: if locals["level"] == "aluno": realizacao = prova.realizacoes.get(_id=locals["data"][4]) if realizacao.iniciada or not realizacao.finalizada: data = alunoDataProva(json.loads(json.dumps(prova.to_mongo().to_dict(), indent=4, sort_keys=True, default=str))) else: data = smallAlunoDataProva(json.loads(json.dumps(prova.to_mongo().to_dict(), indent=4, sort_keys=True, default=str))) else: data = dataProva(json.loads(json.dumps(prova.to_mongo().to_dict(), indent=4, sort_keys=True, default=str))) return data except Exception as e: return errorHandler.handleError(response, e)
def updateAluno(response, usuario_id, materia_id, turma_id, aluno_id, data): try: usuario = Usuario.objects.get(id=usuario_id) aluno = usuario.materias.get(_id=materia_id).turmas.get( _id=turma_id).alunos.get(_id=aluno_id) data.pop("_id", None) data.pop("timestamp", None) data["timeupdate"] = datetime.now() for key, value in data.items(): aluno[key] = value usuario.save() return json.loads( json.dumps(aluno.to_mongo().to_dict(), indent=4, sort_keys=True, default=str)) except Exception as e: return errorHandler.handleError(response, e)
def startRealizacao(response, usuario_id, materia_id, turma_id, prova_id, realizacao_id): try: usuario = Usuario.objects.get(id=usuario_id) realizacao = usuario.materias.get(_id=materia_id).turmas.get(_id=turma_id).provas.get(_id=prova_id).realizacoes.get(_id=realizacao_id) if not realizacao.iniciada: questoes = usuario.materias.get(_id=materia_id).turmas.get(_id=turma_id).provas.get(_id=prova_id).questoes realizacao.timeupdate = datetime.now() realizacao.timestarted = datetime.now() realizacao.iniciada = True realizacao.finalizada = False for questao in questoes: resposta = Resposta() resposta.questao = str(questao._id) realizacao.respostas.append(resposta) usuario.save() return json.loads(json.dumps(realizacao.to_mongo().to_dict(), indent=4, sort_keys=True, default=str)) except Exception as e: return errorHandler.handleError(response, e)