Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
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 ""
Ejemplo n.º 10
0
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)
Ejemplo n.º 11
0
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)
Ejemplo n.º 12
0
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)
Ejemplo n.º 13
0
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)
Ejemplo n.º 14
0
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)
Ejemplo n.º 15
0
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)
Ejemplo n.º 16
0
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)
Ejemplo n.º 17
0
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)
Ejemplo n.º 18
0
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)
Ejemplo n.º 19
0
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)
Ejemplo n.º 20
0
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 ""
Ejemplo n.º 21
0
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)
Ejemplo n.º 22
0
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)
Ejemplo n.º 23
0
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)
Ejemplo n.º 24
0
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)
Ejemplo n.º 25
0
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)
Ejemplo n.º 26
0
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)
Ejemplo n.º 27
0
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)
Ejemplo n.º 28
0
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)
Ejemplo n.º 29
0
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)
Ejemplo n.º 30
0
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)