def cancel_pedido(request, pk):
    if not request.user.is_authenticated:
        messages.error(request,
                       "Usuario precisa estar logado para esta operacao")
        raise PermissionDenied(
            "Usuario precisa estar logado para esta operacao")
    else:
        pedido = Pedido.objects.get(id=pk)
        try:
            user_motorista = pedido.motorista
            motorista = Motorista.objects.get(user=user_motorista)
        except:
            user_motorista = None
        if user_motorista:
            if user_motorista.pedido_set.last() == pedido:
                motorista.ocupado = False
                motorista.save()
                loja = Estabelecimento.objects.get(user=request.user)
                if motorista.is_online:
                    message = "O Pedido que voce ia entregar foi cancelado pela loja " + request.user.first_name + ". Desculpe pelo transtorno! Qualquer coisa, ligue para a loja: " + loja.phone
                    n = Notification(type_message='DELETE_LOJA',
                                     to=motorista.user,
                                     message=message)
                    n.save()
        pedido.status = True
        pedido.motorista = None
        pedido.save()
        try:
            logger(request.user, "Cancelou a Rota #" + str(pedido.pk))
        except (Exception, ):
            pass
        messages.success(request, "Pedido deletado com sucesso")
        return HttpResponseRedirect('/app/pedidos/loja/')
 def form_valid(self, form):
     try:
         logger(self.request.user, "Aceitou o pedido " + str(self.object))
     except (Exception, ):
         pass
     context = self.get_context_data()
     itempedido_set = context['itempedido_set']
     with transaction.atomic():
         self.object = form.save()
         if itempedido_set.is_valid():
             itempedido_set.instance = self.object
             itempedido_set.save()
     return super(RequestUpdateView, self).form_valid(form)
 def form_valid(self, form):
     context = self.get_context_data()
     pontoset = context['pontoset']
     with transaction.atomic():
         if pontoset.is_valid():
             pontoset.instance = self.object
             pontoset.save()
         self.object = form.save()
     pedido = self.object
     try:
         logger(self.request.user, "Editou a Rota #" + str(pedido.pk))
     except (Exception, ):
         pass
     return super(PedidoUpdateView, self).form_valid(form)
Example #4
0
 def form_valid(self, form):
     try:
         logger(self.request.user, "Alterou o grupo " + str(self.object))
     except (Exception, ):
         pass
     context = self.get_context_data()
     print(context)
     opcionalset = context['opcionalset']
     with transaction.atomic():
         self.object = form.save()
         if opcionalset.is_valid():
             opcionalset.instance = self.object
             opcionalset.save()
     return super(GrupoUpdateView, self).form_valid(form)
Example #5
0
 def get(self, request, *args, **kwargs):
     user = self.request.user
     try:
         loja = user.estabelecimento
         if loja:
             loja.is_online = False
             loja.save()
     except (Exception, ):
         cliente = user.cliente
         if cliente:
             cliente.is_online = False
             cliente.save()
     logger(self.request.user, "Fez logout no sistema")
     logout(self.request)
     return super(LojaLogoutView, self).get(request, *args, **kwargs)
Example #6
0
    def form_valid(self, form):
        data = form.cleaned_data
        user = authenticate(**data)
        print(user)
        if user is not None:
            if user.estabelecimento.is_approved:
                logger(self.request.user, "Realizou login no sistema")
                login(self.request, user)
            else:
                messages.error(self.request, 'Sua conta ainda está para ser aprovada')
                return self.form_invalid(form)

        else:
            messages.error(self.request, 'Nenhum usuário encontrado')
            return self.form_invalid(form)
        return super(LojaLoginView, self).form_valid(form)
 def form_valid(self, form):
     try:
         logger(self.request.user, "Alterou o produto " + str(self.object))
     except (Exception, ):
         pass
     context = self.get_context_data()
     gruposet = context['gruposet']
     fotoset = context['fotoset']
     with transaction.atomic():
         self.object = form.save()
         if gruposet.is_valid():
             gruposet.instance = self.object
             gruposet.save()
         if fotoset.is_valid():
             fotoset.instance = self.object
             fotoset.save()
     return super(ProdutoUpdateView, self).form_valid(form)
def accept_corrida(request, pk_pedido):
    try:
        pedido = Pedido.objects.get(id=pk_pedido)
        if pedido.motorista:
            try:
                messages.error(
                    request, 'O motorista ' + pedido.motorista.first_name +
                    ' pegou esta entrega antes de você')
            except (Exception, ):
                messages.error(
                    request,
                    'Outro Motorista pegou esta entrega antes de você')
            return HttpResponseRedirect('/app/pedidos/motorista/')
        else:
            pedido.status = False
            pedido.motorista = request.user
            pedido.save()
            motorista = Motorista.objects.get(user=request.user)
            motorista.ocupado = True
            motorista.save()
            if pedido.estabelecimento.is_online:
                message = "O motorista " + str(
                    motorista.user.first_name
                ) + " aceitou fazer a entrega do Pedido ID #" + str(
                    pedido.pk
                ) + ". Qualquer problema, ligue para o motorista: " + motorista.phone
                n = Notification(type_message='ACCEPT_ORDER',
                                 to=pedido.estabelecimento.user,
                                 message=message)
                n.save()
                message = 'A Loja ' + pedido.estabelecimento.user.first_name + ', localizado na ' + pedido.estabelecimento.full_address + ', esta aguardando a coleta.'
                no = Notification(
                    type_message='DELETE_LOJA',
                    to=pedido.motorista,
                    message=message)  # está delete loja por enquanto.
                no.save()
            try:
                logger(request.user, "Aceitou fazer a Rota #" + str(pedido.pk))
            except (Exception, ):
                pass
            return HttpResponseRedirect('/app/pedido/route/' + str(pedido.pk))
    except (Exception, ):
        messages.error(request, 'Este pedido foi deletado pela Loja')
        return HttpResponseRedirect('/app/pedidos/motorista/')
def cancelar_request(request, pk):
    data = request.POST
    entrega = Request.objects.get(id=pk)
    text = "Cancelamento do Pedido #" + str(entrega.pk)
    try:
        text = text + " " + str(data['motivo'])
    except (Exception, ):
        text = text + " " + unicode(data['motivo'])
    chamado = Chamado(estabelecimento=entrega.estabelecimento,
                      titulo='Cancelamento de Pedido',
                      texto=text)
    chamado.save()
    entrega.status_pedido = 'REJEITADO'
    entrega.save()
    try:
        logger(request.user, "Rejeitou o pedido #" + str(entrega.pk))
    except (Exception, ):
        pass
    return redirect('/dashboard')
Example #10
0
 def form_valid(self, form):
     context = self.get_context_data()
     pontoset = context['pontoset']
     with transaction.atomic():
         self.object = form.save()
         if pontoset.is_valid():
             pontoset.instance = self.object
             pontoset.save()
     pedido = self.object
     try:
         logger(self.request.user, "Criou a Rota #" + str(pedido.pk))
     except (Exception, ):
         pass
     if not pedido.is_draft:
         no = Notification(type_message='NOTIFICACAO_COZINHA',
                           to=self.request.user,
                           message='NOVO PEDIDO REALIZADO')
         no.save()
     return super(PedidoCreateView, self).form_valid(form)
Example #11
0
def aceitar_pedido(request, pk):
    mark_read(request)
    req = Request.objects.get(id=pk)
    req.status_pedido = 'ACEITO'
    req.save()
    try:
        logger(request.user, "Aceitou o pedido " + str(req))
    except (Exception, ):
        pass
    folha_pag = get_or_create_folha(datetime.now(), req.estabelecimento)
    item_pag = ItemPagamento(request=req, folha=folha_pag)
    item_pag.save()
    folha_pag.save()
    pedido = get_or_create_rota(req)
    pedido.save()
    if request.user.estabelecimento.configuration.chamar_motoboy:
        req.pedido = pedido
        itens = make_itens(req)
        obs = make_obs(req)
        ponto = Ponto(pedido=pedido,
                      bairro=req.endereco_entrega.bairro,
                      endereco=req.endereco_entrega.endereco,
                      numero=req.endereco_entrega.numero,
                      complemento=req.endereco_entrega.complemento,
                      cliente=str(req.cliente.usuario.first_name) + " " +
                      str(req.cliente.usuario.last_name),
                      telefone=req.cliente.telefone,
                      observacoes=obs,
                      itens=itens)
        req.save()
        ponto.save()
        pedido.save()
        # a = func()
    if request.user.estabelecimento.configuration.has_cozinha:
        no = Notification(type_message='NOTIFICACAO_COZINHA',
                          to=request.user,
                          message='NOVO PEDIDO REALIZADO')
        no.save()
    return redirect('/dashboard')
Example #12
0
def liberar_corrida(request, pk_pedido):
    pedido = Pedido.objects.get(id=pk_pedido)
    pedido.coletado = True
    pedido.save()
    try:
        if pedido.request_set.first():
            reqs = pedido.request_set.all()
            for req in reqs:
                req.status_pedido = 'ENTREGANDO'
                req.save()
    except (Exception, ):
        pass
    if Motorista.objects.get(user=pedido.motorista).is_online:
        message = "Voce foi liberado pela loja para realizar a(s) entrega(s). Sua Rota atual esta no menu ENTREGAS. Quando terminar uma entrega, marque finalizar. Qualquer problema, ligue para a loja: " + pedido.estabelecimento.phone
        n = Notification(type_message='ENABLE_ROTA',
                         to=pedido.motorista,
                         message=message)
        n.save()
    try:
        logger(request.user, "Foi liberada a Rota #" + str(pedido.pk))
    except (Exception, ):
        pass
    return redirect('/app/acompanhar')
Example #13
0
 def post(self, request, *args, **kwargs):
     try:
         logger(self.request.user, "Deletou a Bairro Gratis #" + str(self.object.pk))
     except (Exception,):
         pass
     return super(BairroGratisDeleteView, self).post(request, *args, **kwargs)
Example #14
0
 def form_valid(self, form):
     try:
         logger(self.request.user, "Editou a Bairro Gratis #" + str(self.object.pk))
     except (Exception,):
         pass
     return super(BairroGratisUpdateView, self).form_valid(form)
Example #15
0
 def post(self, request, *args, **kwargs):
     try:
         logger(self.request.user, "Deletou o opcional " + str(self.object))
     except (Exception, ):
         pass
     return super(OpcionalDeleteView, self).post(request, *args, **kwargs)
Example #16
0
 def form_valid(self, form):
     try:
         logger(self.request.user, "Editou o opcional " + str(self.object))
     except (Exception, ):
         pass
     return super(OpcionalUpdateView, self).form_valid(form)