Beispiel #1
0
 def generic_verify(query):
     try:
         obj = query()
         if obj.check_password(password):
             context = UserSerializer(obj).data
             if obj.tipo_user == "Professor":
                 context['typeId'] = ProfessorSerializer(
                     Professor.objects.get(user=obj)).data.get("id")
             else:
                 context['typeId'] = AlunoSerializer(
                     Aluno.objects.get(user=obj)).data.get("id")
                 context['perfilPhoto'] = AlunoSerializer(
                     Aluno.objects.get(
                         user=obj)).data.get("perfilPhoto")
             return Response({'status': True, 'user': context})
         else:
             return Response({
                 'status': False,
                 'error': 'Senha incorreta.'
             })
     except ObjectDoesNotExist as ex:
         print(ex)
         return generic_except(ex)
     except Exception as ex:
         generic_except(ex)
Beispiel #2
0
    def update(self, request, *args, **kwargs):
        try:
            id_aula = kwargs['pk']
            data: dict = request.data
            aula = Aula.objects.get(id=id_aula)
            if data.__contains__('tipo') and data['tipo'] is not None:
                tipo = unidecode.unidecode(data['tipo'].lower())
            else:
                tipo = None

            aula_tipo = unidecode.unidecode(
                aula.tipo_aula.lower() if aula.tipo_aula is not None else '')

            if aula.tipo_aula != tipo:
                if aula.tipo_aula is not None:
                    self.TYPE_OBJ[aula_tipo].objects.get(aula=aula).delete()
                aula.tipo_aula = tipo
                self.createTypeObj(aula, data['extra'], tipo)
            elif aula.tipo_aula is not None:
                self.checkExtra(aula, data['extra'], tipo)

            aula.tema = data['tema']
            aula.is_assincrona = data['is_assincrona']
            aula.descricao = data['descricao']
            aula.link_documento = data['link']
            if aula.is_assincrona:
                aula.end_time = dateutil.parser.parse(data['end_time'])
            aula.save()
            return Response({'status': True})
        except Exception as ex:
            return generic_except(ex)
Beispiel #3
0
 def retrieve(self, request: Request, *args, **kwargs):
     try:
         id = kwargs['pk']
         topicos = TopicaTurma.objects.filter(turma_id=id)
         return Response({"status": True, 'topicos': self.serializer_class(topicos, many=True).data})
     except Exception as ex:
         return generic_except(ex)
Beispiel #4
0
    def create(self, request, *args, **kwargs):
        data: dict = request.data

        try:
            if data.__contains__('avaliacaoId') and data.__contains__(
                    'perguntaId'):
                tipo = data['tipo_resposta']
                resp = data['resposta']
                aval = Avaliacao.objects.get(id=data['avaliacaoId'])
                pergunta = Pergunta.objects.get(id=data['perguntaId'])

                resp_obj = Resposta(
                    tipo_resposta=tipo,
                    avaliacao=aval,
                    avaliacao_aula=aval.aula,
                    avaliacao_aluno=aval.aluno,
                    pergunta=pergunta,
                )

                if tipo == 'binario':
                    resp_obj.resposta_binario = resp
                elif tipo == 'qualificativa':
                    resp_obj.resposta_qualificativa = resp
                elif tipo == 'aberta':
                    resp_obj.resposta_aberta = resp

                resp_obj.save()

                # Caso seja a ultima resposta de uma avaliação
                if data.__contains__('end'):
                    aval.end_time = timezone.now()
                    aval.completa = True

                    if aval.aula.is_assincrona is False:
                        aval.pontos = decimal.Decimal(
                            CalcAvalPontuacao(aval.aula.end_time,
                                              aval.end_time))
                    else:
                        aval.pontos = 25
                    aval.save()

                    aluno_turma = AlunoHasTurma.objects.get(
                        aluno=aval.aluno, turma=aval.aula.turma)
                    aluno_turma.xp += aval.pontos
                    aluno_turma.save()

                    if aval.aula.is_assincrona is False:
                        aluno = Aluno.objects.get(id=aval.aluno.id)
                        aluno.xp += aluno_turma.xp
                        aluno.save()

                return Response({'status': True})
            else:
                return Response({
                    'status': False,
                    'error': 'Something is missing 👀'
                })
        except Exception as ex:
            return generic_except(ex)
Beispiel #5
0
    def create(self, request, *args, **kwargs):
        data: dict = request.data
        try:
            if data.__contains__("idTurma") and data.__contains__("schedules"):
                turma = Turma.objects.get(id=data["idTurma"])
                scheduleReceived: list = data['schedules']
                for i in scheduleReceived:
                    if i.__contains__('id'):
                        if i['id']:
                            if i['id'] > 0:
                                # Editando
                                dia = DiasFixos.objects.get(id=i['id'], turma_id=turma.id)
                                if i['horario'] is not None:
                                    newTime = dateutil.parser.parse(i['horario'])
                                    date1 = datetime(dia.horario.year, dia.horario.month, dia.horario.day,
                                                     dia.horario.hour,
                                                     dia.horario.minute)
                                    date2 = datetime(newTime.year, newTime.month, newTime.day, newTime.hour,
                                                     newTime.minute)
                                    if date1 != date2 or dia.sala != i['sala']:
                                        aulas = Aula.objects.filter(turma=turma,
                                                                    sala=dia.sala,
                                                                    dia_horario__hour=dia.horario.hour,
                                                                    dia_horario__minute=dia.horario.minute)
                                        dia.horario = newTime
                                        dia.sala = i['sala']

                                        for aula in aulas:
                                            aula.dia_horario = datetime(aula.dia_horario.year, aula.dia_horario.month,
                                                                        aula.dia_horario.day, newTime.hour,
                                                                        newTime.minute)
                                            aula.sala = dia.sala
                                            aula.save()

                                        dia.save(edit=True)
                                else:
                                    # Deletando
                                    dia.delete()
                            elif i['id'] < 0:
                                # Lixo de memoria
                                # Esse Dia provavelmente já foi salvo no BD e está vindo alguma requisição que não foi atualizada no front
                                pass
                        else:
                            # Criando
                            dia = DiasFixos(
                                turma=turma,
                                dia=dayToEnum(i['dia'][0:3]),
                                horario=dateutil.parser.parse(i['horario']),
                                sala=i['sala']
                            )
                            dia.save()
                    else:
                        Response({"status": False, "error": "Algo está faltando"})
                return Response({"status": True})
            else:
                return Response({"status": False, "error": "Algo está faltando"})
        except Exception as ex:
            return generic_except(ex)
Beispiel #6
0
def put_class_end(request):
    try:
        aula = Aula.objects.get(id=request.data['id'])
        aula.is_aberta_avaliacao = True
        aula.is_aberta_class = False
        diferenca = timezone('America/Sao_Paulo')
        aula.end_time = datetime.now().astimezone(diferenca)
        aula.save()
        return Response({'status': True})
    except Exception as ex:
        return generic_except(ex)
Beispiel #7
0
    def retrieve(self, request, *args, **kwargs):
        try:
            if request.user.tipo_user == 'Professor':
                sug = SugestaoTurma.objects.filter(turma=kwargs['pk'])
            else:
                aluno = Aluno.objects.get(user=request.user)
                sug = SugestaoTurma.objects.filter(turma=kwargs['pk'], aluno=aluno)
            sug = sug.order_by('-data')

            return Response({"status": True,
                             'suguestoes': self.serializer_class(sug, many=True).data})
        except Exception as ex:
            return generic_except(ex)
Beispiel #8
0
def pupils_list(request: Request, id: int):
    try:
        alunos = []

        try:
            alunos_turma = AlunoHasTurma.objects.filter(turma_id=id)
        except ObjectDoesNotExist as ex:
            print(">>> Wasn't Possible find the Turma")
            return Response({"status": False, "message": "Não foi possivel achar a turma"})

        for i in alunos_turma:
            alunos.append(i.aluno)
        return Response({"status": True, "alunos": AlunoSerializer(alunos, many=True).data})
    except Exception as ex:
        return generic_except(ex)
Beispiel #9
0
 def destroy(self, request: Request, *args, **kwargs):
     try:
         id_aula = kwargs['pk']
         aula = Aula.objects.get(id=id_aula)
         if aula.tipo_aula == 'teorica':
             Teorica.objects.get(aula=aula).delete()
         elif aula.tipo_aula == 'prova':
             Prova.objects.get(aula=aula).delete()
         elif aula.tipo_aula == 'trabalho':
             TrabalhoPratico.objects.get(aula=aula).delete()
         elif aula.tipo_aula == 'excursao':
             Excursao.objects.get(aula=aula).delete()
         aula.delete()
         return Response({'status': True})
     except Exception as ex:
         return generic_except(ex)
Beispiel #10
0
 def update(self, request, *args, **kwargs):
     try:
         id = kwargs['pk']
         data = request.data
         turma = Faculdade.objects.get(id=id)
         for i in data:
             if int(i['id']) >= 0:
                 topico = TopicoFaculdade.objects.get(id=i['id'])
                 if not topico.topico == i['topico']:
                     topico.topico = i['topico']
                     topico.save()
             else:
                 TopicoFaculdade(topico=i['topico'], turma=turma).save()
         return Response({"status": True})
     except Exception as ex:
         return generic_except(ex)
Beispiel #11
0
 def update(self, request, *args, **kwargs):
     try:
         id = kwargs['pk']
         print(id)
         data = request.data
         curso = Curso.objects.get(id=id)
         for i in data:
             if int(i['id']) >= 0:
                 topico = TopicoSugestaoCurso.objects.get(id=i['id'])
                 if not topico.topico == i['topico']:
                     topico.topico = i['topico']
                     topico.save()
             else:
                 TopicoSugestaoCurso(topico=i['topico'], curso=curso).save()
         return Response({"status": True})
     except Exception as ex:
         return generic_except(ex)
Beispiel #12
0
    def create(self, request, *args, **kwargs):
        data: dict = request.data
        try:
            if data.__contains__('aulaId'):

                aula = Aula.objects.get(id=data['aulaId'])
                token = Token.objects.get(key=request.auth)
                user = User.objects.get(pk=token.user.pk)
                aluno = Aluno.objects.get(user=user)
                resp = None
                try:
                    aval = Avaliacao.objects.get(aula=aula, aluno=aluno)
                    resp = Resposta.objects.filter(avaliacao=aval)
                    print(resp)
                except Exception as ex:
                    aval = Avaliacao(
                        aula=aula,
                        aluno=aluno,
                        completa=False,
                    )
                    aval.save()

                context = {'avaliacao': self.serializer_class(aval).data}
                context['avaliacao']['tipo_aula'] = aula.tipo_aula
                perguntas: QuerySet = Pergunta.objects.filter(
                    tipo_aula=aula.tipo_aula)
                if resp is not None:
                    for i in resp:
                        perguntas = perguntas.exclude(id=i.pergunta.id)

                context['avaliacao']['perguntas'] = PerguntaSerializer(
                    perguntas, many=True).data

                for i in context['avaliacao']['perguntas']:
                    i['caracteristica'] = i['caracteristica']['qualificacao']

                print(context)

                return Response({'status': True, **context})
            else:
                return Response({
                    'status': False,
                    'error': 'Something is missing 👀'
                })
        except Exception as ex:
            return generic_except(ex)
Beispiel #13
0
    def create(self, request, *args, **kwargs):
        try:
            data = request.data

            user = User(
                nome=data['name'],
                username=User.normalize_username(data['user']),
                matricula=data['matricula'],
                email=User.normalize_email(data['email']),
                tipo_user=data['tipo_user'],
            )
            validate_password(data['pass'])
            user.set_password(data['pass'])
            user.save()

            context = UserSerializer(user).data
            if data['tipo_user'] == 1:
                prof = Professor(
                    lattes=data.get('lattes'),
                    user=user,
                )
                prof.save()
                context['prof_id'] = prof.pk
            else:
                try:
                    curso = Curso.objects.get(id=data.get('curso'))
                except ObjectDoesNotExist as ex:
                    curso = None
                aluno = Aluno(xp=0, curso_idcurso=curso, user=user)
                aluno.save()
                context['prof_id'] = aluno.pk

            # context['token'] = Token.objects.get(user=user).key
            return Response({'status': True, 'user': context})
        except IntegrityError as ex:
            return verf_user_integrityerror(ex)
        except ValidationError:
            return Response({
                'status':
                False,
                'error':
                "Sua senha é muito simples. Dicas: Ela tem que ter mais de 8 digitos e não pode conter só numeros"
            })
        except Exception as ex:
            return generic_except(ex)
Beispiel #14
0
    def create(self, request, *args, **kwargs):
        data: dict = request.data
        try:

            if 'sugestao' in data and 'titulo' in data:
                aluno = Aluno.objects.get(user=request.user)
                topico: TopicaTurma = TopicaTurma.objects.get(id=data['topico'])
                SugestaoTurma(
                    sugestao=data['sugestao'],
                    titulo=data['titulo'],
                    data=datetime.today(),
                    topico=topico,
                    turma=topico.turma,
                    aluno=aluno
                ).save()
            else:
                return Response({'status': False, 'error': 'Something is missing 👀'})
            return Response({'status': True})
        except Exception as ex:
            return generic_except(ex)
Beispiel #15
0
 def create(self, request, *args, **kwargs):
     data: dict = request.data
     try:
         if data.__contains__('turmaId'):
             turma = Turma.objects.get(id=data['turmaId'])
             aula = Aula(dia_horario=dateutil.parser.parse(data['time']),
                         sala=data['room'],
                         is_aberta_class=0,
                         is_aberta_avaliacao=0,
                         turma=turma)
             aula.save()
             return Response({
                 'status': True,
                 'aula': AulaSerializer(aula).data
             })
         else:
             return Response({
                 'status': False,
                 'error': 'Something is missing 👀'
             })
     except Exception as ex:
         return generic_except(ex)
Beispiel #16
0
    def create(self, request, *args, **kwargs):
        try:
            data = request.data
            try:
                prof = Professor.objects.get(id=data.get('prof'))
            except ObjectDoesNotExist as ex:
                prof = None
            try:
                facu = Faculdade.objects.get(id=data.get('facu'))
            except ObjectDoesNotExist as ex:
                facu = None

            curso = Curso(
                nome=data['name'],
                codigo=data['codigo'],
                faculdade=facu,
                professor_coordenador=prof,
            )
            curso.save()
            serializer_context = {
                'request': request,
            }

            return Response({
                'status':
                True,
                'curso':
                CursoSerializer(curso, context=serializer_context).data
            })
        except IntegrityError as ex:
            return Response({
                'status': False,
                'error': "Algum campo está faltando.",
                'except': ex.args
            })
        except Exception as ex:
            return generic_except(ex)
Beispiel #17
0
    def create(self, request):
        data = request.data
        try:
            login = data['login']
            password = data['pass']
            print(data)

            def generic_verify(query):
                try:
                    obj = query()
                    if obj.check_password(password):
                        context = UserSerializer(obj).data
                        if obj.tipo_user == "Professor":
                            context['typeId'] = ProfessorSerializer(
                                Professor.objects.get(user=obj)).data.get("id")
                        else:
                            context['typeId'] = AlunoSerializer(
                                Aluno.objects.get(user=obj)).data.get("id")
                            context['perfilPhoto'] = AlunoSerializer(
                                Aluno.objects.get(
                                    user=obj)).data.get("perfilPhoto")
                        return Response({'status': True, 'user': context})
                    else:
                        return Response({
                            'status': False,
                            'error': 'Senha incorreta.'
                        })
                except ObjectDoesNotExist as ex:
                    print(ex)
                    return generic_except(ex)
                except Exception as ex:
                    generic_except(ex)

            def verify_email():
                return generic_verify(lambda: User.objects.get(email=login))

            def verify_user_name():
                return generic_verify(lambda: User.objects.get(username=login))

            def verify_matricula():
                return generic_verify(
                    lambda: User.objects.get(matricula=login))

            if '@' in login:
                resp = verify_email()
                if resp:
                    return resp
                return Response({
                    'status': False,
                    'error': 'Nenhum email correspondente.'
                })
            elif re.search(r'\d+', login):
                resp = verify_matricula()
                if resp:
                    return resp
                return Response({
                    'status': False,
                    'error': 'Nenhuma matricula correspondente.'
                })
            else:
                resp = verify_user_name()
                if resp:
                    return resp
                return Response({
                    'status': False,
                    'error': 'Nenhum username correspondente.'
                })
        except Exception as ex:
            return generic_except(ex)
Beispiel #18
0
 def destroy(self, request, *args, **kwargs):
     try:
         TopicoSugestaoCurso.objects.get(id=kwargs['pk']).delete()
         return Response({"status": True})
     except Exception as ex:
         return generic_except(ex)