Пример #1
0
 def get_horario(self, obj):
     qs = Horario.objects.filter(agenda=obj, vago=True)
     if obj.dia == get_data_hoje(0).date():
         return [
             str(horario['hora']) for horario in qs.filter(
                 hora__gt=get_data_hoje(0).time()).values()
         ]
     return [str(horario['hora']) for horario in qs.values()]
Пример #2
0
 def destroy(self, request, *args, **kwargs):
     instance = self.get_object()
     if instance.user == request.user:
         if instance.horario.agenda.dia >= get_data_hoje(0).date():
             if instance.horario.agenda.dia > get_data_hoje(0).date():
                 instance.delete()
                 return Response(status=status.HTTP_200_OK)
             if instance.horario.hora < get_data_hoje(0).time:
                 instance.delete()
                 return Response(status=status.HTTP_200_OK)
     return Response(status=status.HTTP_404_NOT_FOUND)
Пример #3
0
 def clean(self):
     if all(self.errors):
         return
     if self.instance.dia == get_data_hoje(0).date():
         list_hora = []
         for form in self.forms:
             if form.cleaned_data['hora']:
                 list_hora.append(form.cleaned_data['hora'])
         list_hora.sort(reverse=True)
         if get_data_hoje(0).time() > list_hora[0]:
             raise ValidationError(
                 _('Insira horários possíveis para agendamento'))
Пример #4
0
class ConsultaViewSet(mixins.ListModelMixin, mixins.DestroyModelMixin,
                      mixins.CreateModelMixin, viewsets.GenericViewSet):
    authentication_classes = [JWTAuthentication]
    permission_classes = [IsAuthenticated]
    queryset = Consulta.objects.filter(
        horario__agenda__dia__gt=get_data_hoje(1).date())
    serializer_class = ConsultaSerializer

    def list(self, request, *args, **kwargs):
        queryset = self.filter_queryset(self.get_queryset())
        if request.user:
            queryset = queryset.filter(user=request.user)
        serializer = self.get_serializer(queryset, many=True)
        return Response(serializer.data)

    def create(self, request, *args, **kwargs):
        serializer = ConsultaCreateSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save(user=request.user)
        return Response(status=status.HTTP_201_CREATED, )

    def destroy(self, request, *args, **kwargs):
        instance = self.get_object()
        if instance.user == request.user:
            if instance.horario.agenda.dia >= get_data_hoje(0).date():
                if instance.horario.agenda.dia > get_data_hoje(0).date():
                    instance.delete()
                    return Response(status=status.HTTP_200_OK)
                if instance.horario.hora < get_data_hoje(0).time:
                    instance.delete()
                    return Response(status=status.HTTP_200_OK)
        return Response(status=status.HTTP_404_NOT_FOUND)
Пример #5
0
class AgendaViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
    authentication_classes = [JWTAuthentication]
    permission_classes = [IsAuthenticated]
    queryset = Agenda.objects.filter(dia__gt=get_data_hoje(1).date())
    serializer_class = AgendaSerializer
    filter_backends = [DjangoFilterBackend]
    filter_class = AgendaFilter
Пример #6
0
 def create(self, validated_data):
     agenda = Agenda.objects.filter(
         id=validated_data.get('agenda_id')).first()
     if agenda:
         horario = Horario.objects.filter(
             agenda=agenda, hora=validated_data.get('horario'),
             vago=True).first()
         if not horario:
             raise ValidationError(
                 {'horario': _('horário inexistente na agenda informada.')})
         if agenda.dia >= get_data_hoje(0).date():
             if agenda.dia == get_data_hoje(
                     0).date() and horario.hora < get_data_hoje(0).time:
                 raise ValidationError({
                     'horario':
                     _('inpossível cadastrar consulta para horários passados'
                       )
                 })
             if not horario.vago:
                 raise ValidationError(
                     {'horario': _('horário não está livre')})
             if Consulta.objects.filter(
                     user=validated_data.get('user'),
                     horario__agenda__dia=agenda.dia,
                     horario__hora=validated_data.get('horario')).exists():
                 raise ValidationError({
                     'agenda':
                     _('já existe uma consulta para o paciente nesse horário'
                       )
                 })
             return Consulta.objects.create(user=validated_data.get('user'),
                                            horario=horario)
         else:
             raise ValidationError({
                 'agenda':
                 _('inpossível cadastrar consulta para dias passados')
             })
     else:
         raise ValidationError(
             {'agenda': _('Não existe nenhuma agenda com o ID informado.')})
Пример #7
0
 def clean(self):
     if self.errors:
         return
     if self.cleaned_data['dia'] < get_data_hoje(0).date():
         raise ValidationError(
             _('Insira uma data possível para agendamento.'))
     agenda_qs = Agenda.objects.filter(
         medico_id=self.cleaned_data['medico'],
         dia=self.cleaned_data['dia'])
     if agenda_qs:
         if agenda_qs.first().pk == self.instance.pk:
             return
         raise ValidationError(_('O medico já tem agenda para esse dia.'))