Example #1
0
class GetModelosRestView(APIView):
    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    @method_decorator(registro_log_sinc(1))
    def post(self, request):
        page = None

        if 'page' in request.POST:
            page = request.POST['page']

        if 'data' in request.POST:

            modelos = Modelo.objects.get_modelos_sicronismo(
                page, request.POST['data'])
        else:
            modelos = Modelo.objects.get_modelos_sicronismo(page)
        modelos_js = []
        for modelo in modelos:
            serializer = ModeloSerializer(modelo)
            modelos_js.append(serializer.data)

        page = {
            'num_pages': modelos.paginator.num_pages,
            'number': modelos.number,
            'modelos': modelos_js
        }

        return JSONResponse(page)
Example #2
0
class GetTiposInfracaoRestView(APIView):
    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):
        page = None

        if 'page' in request.POST:
            page = request.POST['page']

        if 'data' in request.POST:
            tipos_infracao = TipoInfracao.objects.get_tipos_infracao_sicronismo(
                page, request.POST['data'])
        else:
            tipos_infracao = TipoInfracao.objects.get_tipos_infracao_sicronismo(
                page)
        tipos_infracao_js = []

        for tipo_infracao in tipos_infracao:
            serializer = TipoInfracaoSerializer(tipo_infracao)
            tipos_infracao_js.append(serializer.data)

        page = {
            'num_pages': tipos_infracao.paginator.num_pages,
            'number': tipos_infracao.number,
            'tipos_infracao': tipos_infracao_js
        }

        return JSONResponse(page)
Example #3
0
class GetAutuadorRestView(APIView):
    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self):
        det = Configuracao_DET.objects.filter()
        autuador = str(det[0].autuador)

        return JSONResponse({'autuador': autuador})
Example #4
0
class SincronismoRestView(APIView):
    """View para sincronizar"""
    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):
        """envia para o servidor a data de agora"""

        return JSONResponse(
            {'data': datetime.datetime.now().strftime("%d/%m/%Y %H:%M:%S")})
Example #5
0
class GetAgentesRestView(APIView):
    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):
        if 'data' in request.POST:
            agentes = Agente.objects.get_agentes_sicronismo(request.POST['data'])
        else:
            agentes = Agente.objects.get_agentes_sicronismo()
        agentes_js = []
        for agente in agentes:
            serializer = AgenteSerializer(agente)
            agentes_js.append(serializer.data)
        return JSONResponse(agentes_js)
Example #6
0
class GetConfigSincRestView(APIView):
    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):
        if 'data' in request.POST:
            config_sinc = ConfigSinc.objects.get_config_sinc_sicronismo(
                request.POST['data'])
        else:
            config_sinc = ConfigSinc.objects.get_config_sinc_sicronismo()

        serializer = ConfigSincSerializer(config_sinc)

        return JSONResponse(serializer.data)
Example #7
0
class GetTiposVeiculoRestView(APIView):
    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):
        if 'data' in request.POST:
            tipos = TipoVeiculo.objects.get_tipos_veiculo_sicronismo(
                request.POST['data'])
        else:
            tipos = TipoVeiculo.objects.get_tipos_veiculo_sicronismo()
        tipos_js = []
        for veiculo in tipos:
            serializer = TipoVeiculoSerializer(veiculo)
            tipos_js.append(serializer.data)
        return JSONResponse(tipos_js)
Example #8
0
class GetCoresRestView(APIView):
    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):
        if 'data' in request.POST:
            cores = Cor.objects.get_cores_sicronismo(request.POST['data'])
        else:
            cores = Cor.objects.get_cores_sicronismo()

        cores_js = []
        for cor in cores:
            serializer = CorSerializer(cor)
            cores_js.append(serializer.data)
        return JSONResponse(cores_js)
Example #9
0
class GetUFsRestView(APIView):
    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):
        if 'data' in request.POST:
            ufs = UF.objects.get_ufs_sicronismo(request.POST['data'])
        else:
            ufs = UF.objects.get_ufs_sicronismo()

        json_ufs = []
        for uf in ufs:
            serializer = UFSerializer(uf)
            json_ufs.append(serializer.data)
        return JSONResponse(json_ufs)
Example #10
0
class GetEspeciesRestView(APIView):
    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):
        if 'data' in request.POST:
            especies = Especie.objects.get_especies_sicronismo(request.POST['data'])
        else:
            especies = Especie.objects.get_especies_sicronismo()

        especies_js = []
        for especie in especies:
            serializer = EspecieSerializer(especie)
            especies_js.append(serializer.data)
        return JSONResponse(especies_js)
Example #11
0
class GetCidadesRestView(APIView):
    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):
        if 'data' in request.POST:
            cidades = Cidade.objects.get_cidades_sicronismo(
                int(request.POST['uf_id']), request.POST['data'])
        else:
            cidades = Cidade.objects.get_cidades_sicronismo(
                int(request.POST['uf_id']))
        json_cidades = []
        for uf in cidades:
            serializer = CidadeSerializer(uf)
            json_cidades.append(serializer.data)

        return JSONResponse(json_cidades)
Example #12
0
class GetConfigSincRestView(APIView):
    """Pega os arquivos de configuração do servidor no Android"""

    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):
        """Pega as configurações e envia para o servidor"""
        if 'data' in request.POST:
            config_sinc = ConfigSinc.objects.get_config_sinc_sicronismo(
                request.POST['data'])
        else:
            config_sinc = ConfigSinc.objects.get_config_sinc_sicronismo()

        serializer = ConfigSincSerializer(config_sinc)

        return JSONResponse(serializer.data)
Example #13
0
class GetControlLoginRestView(APIView):
    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):
            
        status = True

        if int(request.POST['status']) == 0:
            status = False

        dispositivo = Dispositivo.objects.get(imei=str(request.POST['imei']))
        agente = int(request.POST['agente'])
        # Login
        if status == True:
            
            agente_login = Agente_login.objects.filter(device=dispositivo.id, agente_id=agente, status=True)
            if agente_login:
                
                # return False
                return JSONResponse({'permission': 0})
            else:
                agente_login = Agente_login()
                agente_login.agente_id = agente
                agente_login.device_id = dispositivo.id 
                agente_login.status = True
                agente_login.save()
                # return True
                return JSONResponse({'permission': 1}) 
        # Logout
        else:
            
            agente_login = Agente_login.objects.get(device=dispositivo.id, agente_id=agente, status=True)
            
            if agente_login:
                agente_login.status = False
                agente_login.data_logout = timezone.now()
                agente_login.save()
                # return True
                return JSONResponse({'permission': 1})
            else:
                # return False
                return JSONResponse({'permission': 0})
Example #14
0
class GetUFsRestView(APIView):
    """View para enviar as Ufs do servidor para o Android"""

    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):
        """Envia as Ufs para o Android"""

        if 'data' in request.POST:
            ufs = UF.objects.get_ufs_sicronismo(request.POST['data'])
        else:
            ufs = UF.objects.get_ufs_sicronismo()

        json_ufs = []
        for estado in ufs:
            serializer = UFSerializer(estado)
            json_ufs.append(serializer.data)
        return JSONResponse(json_ufs)
Example #15
0
class GetDadosSqliteRestView(APIView):
    """Pega os arquivos de configuração do servidor no Android"""

    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):
        """Pega as configurações e envia para o servidor"""
        if 'data' in request.POST:
            dados_sqlite = Detrans_sqlite.objects.get_dados_sqlite_sicronismo(
                request.POST['data'])
        else:
            dados_sqlite = Detrans_sqlite.objects.get_dados_sqlite_sicronismo()
        dados_js = []
        for dados in dados_sqlite:
            serializer = DadosSqliteSerializer(dados)
            dados_js.append(serializer.data)
        print dados_js

        return JSONResponse(dados_js)
Example #16
0
class GetCidadesRestView(APIView):
    """Pega as cidades para mostrar no Android"""

    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):
        """Envia a páginação das cidades para o Android"""

        if 'data' in request.POST:
            cidades = Cidade.objects.get_cidades_sicronismo(
                int(request.POST['uf_id']), request.POST['data'])
        else:
            cidades = Cidade.objects.get_cidades_sicronismo(
                int(request.POST['uf_id']))
        json_cidades = []
        for estado in cidades:
            serializer = CidadeSerializer(estado)
            json_cidades.append(serializer.data)

        return JSONResponse(json_cidades)
Example #17
0
class GetVeiculosRestView(APIView):
    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):

        page = None
        if 'page' in request.POST:
            page = request.POST['page']
        if 'data' in request.POST:
            veiculos = Veiculo.objects.get_veiculos_sicronismo(
                page, request.POST['data'])
        else:
            veiculos = Veiculo.objects.get_veiculos_sicronismo(page)
        veiculos_js = []
        for veiculo in veiculos:
            serializer = VeiculoSerializer(veiculo)
            veiculos_js.append(serializer.data)
        page = {
            'num_pages': veiculos.paginator.num_pages,
            'number': veiculos.number,
            'veiculos': veiculos_js
        }
        return JSONResponse(page)
Example #18
0
class SincronismoRestView(APIView):
    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):
        return JSONResponse({'data': datetime.datetime.now().strftime("%d/%m/%Y %H:%M:%S")})
Example #19
0
class GetBlocoRestView(APIView):
    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):
        if not Bloco.objects.filter(usuario=request.user) or \
                Bloco.objects.filter(usuario=request.user, ativo=True):
            bloco = AddBloco(request)

            # caso não houver bloco padrão cadastrado
            if not bloco:
                return JSONResponse(
                    {'error': 'Não há bloco mestre cadastrado'})

            bloco.save()

            serializer = BlocoSerializer(bloco)

            js_core = []
            js_core.append(serializer.data)
            return JSONResponse(js_core)
        else:
            bp = BlocoPadrao.objects.get(ativo=True)

            bloco = Bloco.objects.filter(usuario=request.user,
                                         ativo=True).order_by('-data')[0]

            inf = Infracao.objects.filter(id__range=[
                bloco.fim_intervalo -
                (bp.numero_paginas - 1), bloco.fim_intervalo
            ])

            # Se excedeu o número de páginas necessárias para a reposição
            if (bp.numero_paginas - len(inf)) <= bloco.minimo_pag_restantes:

                core_js = []

                bloco_antigo = Bloco.objects.filter(
                    usuario=request.user).order_by('-data_alterado')[0]
                bloco_antigo.ativo = False
                if (bp.numero_paginas - len(inf)) > 0:
                    bloco_antigo.inicio_intervalo = (inf[len(inf) - 1].id) + 1
                    bloco_antigo.minimo_pag_restantes = 0
                    seria = BlocoSerializer(bloco_antigo)
                    core_js.append(seria.data)

                bloco_antigo.save()

                bloco_novo = AddBloco(request)
                bloco_novo.save()

                serializer = BlocoSerializer(bloco_novo)
                core_js.append(serializer.data)
                return JSONResponse(core_js)

            else:
                bloco = Bloco.objects.filter(
                    usuario=request.user).order_by('-data')
                core_js = []
                bp = BlocoPadrao.objects.get(ativo=True)

                if len(bloco) > 1:
                    inf1 = Infracao.objects.filter(id__range=[
                        bloco[1].fim_intervalo -
                        (bp.numero_paginas - 1), bloco[1].fim_intervalo
                    ])
                    if bp.minimo_pag_restantes >= (bp.numero_paginas -
                                                   len(inf1)) > 0:
                        bloco1 = Bloco.objects.get(id=bloco[1].id)

                        bloco1.inicio_intervalo = (inf1[len(inf1) - 1].id) + 1
                        bloco1.minimo_pag_restantes = 0
                        bloco1.status = False
                        bloco1.data_alterado = timezone.now()
                        bloco1.save()
                        serializer = BlocoSerializer(bloco1)
                        core_js.append(serializer.data)

                pos = len(inf)
                bloco = Bloco.objects.get(id=bloco[0].id)
                bloco.data_alterado = timezone.now()

                if pos > 0:
                    bloco.inicio_intervalo = inf[pos - 1].id + 1

                bloco.save()
                serializer = BlocoSerializer(bloco)
                core_js.append(serializer.data)
                return JSONResponse(core_js)
Example #20
0
class RecebeInfracoesRestView(APIView):
    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    # @method_decorator(transaction.atomic)
    def post(self, request):
        print request.POST['infracoes']

        infracoes_sinc = []
        infracoes_json = loads(request.POST['infracoes'])
        print "\n ------------------- \n"

        for inf_json in infracoes_json:

            sid = transaction.savepoint()
            print "Antes do try"
            try:
                is_estrangeiro = True
                if inf_json['is_estrangeiro'] == '0':
                    is_estrangeiro = False

                is_editado = True

                if inf_json['is_editado'] == '0':
                    is_editado = False

                is_condutor_identificado = True

                if inf_json['is_condutor_identificado'] == '0':
                    is_condutor_identificado = False

                infracao = Infracao()
                infracao.agente_id = request.user.id
                # infracao.agente_id = 3
                # TODO REVISAR TABELA DISPOSITIVO CAMPO CHAVE IMEI
                infracao.dispositivo_id = Dispositivo.objects.get(
                    imei=request.POST['imei']).id

                infracao.id = int(inf_json['infracao_id'])
                infracao.data_infracao = datetime.strptime(
                    inf_json['data'], "%d/%m/%Y %H:%M:%S")
                infracao.local = inf_json['local']
                infracao.local_numero = inf_json['local_numero']

                if inf_json['veiculo_id'] != "null":

                    infracao.veiculo_id = inf_json['veiculo_id']
                    # print 'inf_json[tipo_infracao_id] : ', inf_json['tipo_infracao_id']
                    infracao.tipo_infracao_id = inf_json['tipo_infracao_id']

                movimentacao = Movimentacao()
                movimentacao.tempo = datetime.strptime(inf_json['data'],
                                                       "%d/%m/%Y %H:%M:%S")
                movimentacao.latitude = inf_json['latitude']
                movimentacao.longitude = inf_json['longitude']
                movimentacao.save()

                infracao.movimento_id = movimentacao.id

                if is_condutor_identificado:
                    infrator = Infrator()
                    infrator.nome = inf_json['infrator']['nome']
                    infrator.cnh = inf_json['infrator']['cnh']
                    infrator.documento = inf_json['infrator']['documento']
                    infrator.save()

                    infracao.infrator_id = infrator.documento

                infracao.is_estrangeiro = is_estrangeiro
                infracao.is_condutor_identi = is_condutor_identificado
                infracao.is_veiculo_editado = is_editado

                # TODO TA FALTANDO CAMPO BANCO DE DADOS
                '''try:
                    infracao.data_cancelamento = datetime.strptime( inf_json['data_cancelamento'],"%d/%m/%Y %H:%M:%S")
                    infracao.
                except:'''

                infracao.save(force_insert=True)

                if is_editado:
                    veiculo_editado = VeiculoEditado()
                    veiculo_editado.veiculo_id = inf_json['veiculo_id']
                    veiculo_editado.placa = inf_json['veiculo']['placa']

                    veiculo_editado.especie = inf_json['veiculo']['especie']
                    veiculo_editado.tipo_veiculo = inf_json['veiculo'][
                        'tipo_veiculo']
                    veiculo_editado.modelo = inf_json['veiculo']['modelo']
                    veiculo_editado.cor = inf_json['veiculo']['cor']
                    veiculo_editado.cidade = inf_json['veiculo']['cidade']
                    veiculo_editado.categoria = inf_json['veiculo'][
                        'categoria']
                    veiculo_editado.num_passageiro = inf_json['veiculo'][
                        'num_passageiros']

                    veiculo_editado.infracao_id = infracao.id
                    veiculo_editado.save()

                if is_estrangeiro:
                    veiculo_estrangeiro = VeiculoEstrangeiro()
                    veiculo_estrangeiro.pais = inf_json['veiculo']['pais']
                    veiculo_estrangeiro.modelo = inf_json['veiculo']['modelo']
                    veiculo_estrangeiro.especie = inf_json['veiculo'][
                        'especie']
                    veiculo_estrangeiro.placa = inf_json['veiculo']['placa']
                    veiculo_estrangeiro.chassi = inf_json['veiculo']['chassi']
                    veiculo_estrangeiro.nr_motor = inf_json['veiculo'][
                        'nr_motor']

                    veiculo_estrangeiro.ano_fabricacao = inf_json['veiculo'][
                        'ano_fabricacao']
                    veiculo_estrangeiro.ano_modelo = inf_json['veiculo'][
                        'ano_modelo']
                    veiculo_estrangeiro.num_passageiro = inf_json['veiculo'][
                        'num_passageiros']
                    veiculo_estrangeiro.infracao_id = infracao.id
                    veiculo_estrangeiro.save()

                    # TODO VERIFICAR SE ESSES CAMPOS ESTÃO CORRETOS
                    '''
                    veiculo_estrangeiro.tipo_veiculo_id = inf_json['veiculo']['tipo_veiculo_id']
                    veiculo_estrangeiro.cor_id = inf_json['veiculo']['cor_id']
                    veiculo_estrangeiro.categoria_id = inf_json['veiculo']['categoria_id']
                    '''

                infracoes_sinc.append({'id': infracao.id, 'status': True})
                transaction.savepoint_commit(sid)

            except NameError:
                print "caiu no except"
                exc_type, exc_value, exc_traceback = sys.exc_info()
                lines = traceback.format_exception(exc_type, exc_value,
                                                   exc_traceback)
                print ''.join('!! ' + line for line in lines)

            # except:
            #     print "caiu no except"
            #     infracoes_sinc.append({'id': int(inf_json['infracao_id']), 'status': False})
            #     transaction.savepoint_rollback(sid)

        print infracoes_sinc
        json = dumps(infracoes_sinc, ensure_ascii=False)
        return HttpResponse(json)
Example #21
0
class GetBlocoRestView(APIView):

    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):

        if not Bloco.objects.filter(usuario=request.user):

            bloco = AddBloco(request)

            bloco.save()

            bp = BlocoPadrao.objects.get(ativo=True)
            bp.contador += bp.numero_paginas

            bp.save()

            serializer = BlocoSerializer(bloco)
            print serializer.data

            js_core = []
            js_core.append(serializer.data)

            return JSONResponse(js_core)

        else:

            bloco = Bloco.objects.filter(
                usuario=request.user).order_by('-data')[0]
            inf = Infracao.objects.filter(
                id__range=[bloco.inicio_intervalo, bloco.fim_intervalo])

            # Datetime Login User
            usr = Agente_login.objects.get(agente_id=request.user.id,
                                           status=True)

            if (timezone.now() - usr.data_login).total_seconds() / 60 < 7:

                bloco = Bloco.objects.filter(
                    usuario=request.user).order_by('-data_alterado')
                core_js = []

                if len(bloco) > 1:
                    inf1 = Infracao.objects.filter(id__range=[
                        bloco[1].inicio_intervalo, bloco[1].fim_intervalo
                    ])
                    if (bloco[1].fim_intervalo -
                            len(inf1)) <= bloco[1].minimo_pag_restantes:
                        bloco = Bloco.objects.get(id=bloco[1].id)
                        bloco.inicio_intervalo += len(inf1)
                        bloco.data_alterado = timezone.now()
                        bloco.save()
                        serializer = BlocoSerializer(bloco)
                        core_js.append(serializer.data)

                pos = len(inf) - 1
                bloco = Bloco.objects.get(id=bloco[0].id)
                bloco.data_alterado = timezone.now()

                if pos > 0:

                    bloco.inicio_intervalo = (inf[pos].id) + 1

                bloco.save()
                serializer = BlocoSerializer(bloco)
                core_js.append(serializer.data)
                return JSONResponse(core_js)

            else:

                if (bloco.fim_intervalo -
                        len(inf)) <= bloco.minimo_pag_restantes:

                    bloco = Bloco.objects.filter(
                        usuario=request.user).order_by('-data_alterado')[0]

                    bloco.ativo = False
                    bloco.save()

                    bloco = AddBloco(request)

                    bloco.save()

                    bp = BlocoPadrao.objects.get(ativo=True)
                    bp.contador += bp.numero_paginas
                    bp.save()

                    serializer = BlocoSerializer(bloco)
                    core_js = []
                    core_js.append(serializer.data)

                    return JSONResponse(core_js)
Example #22
0
class RecebeInfracoesRestView(APIView):
    permission_classes = (IsAuthenticated, AllowAny)

    @method_decorator(validar_imei())
    def post(self, request):

        infracoes_sinc = []
        infracoes_json = loads(request.POST['infracoes'])

        for inf_json in infracoes_json:

            sid = transaction.savepoint()
            try:

                is_estrangeiro = True
                if inf_json['is_estrangeiro'] == '0':
                    is_estrangeiro = False

                is_editado = True

                if inf_json['is_editado'] == '0':
                    is_editado = False
                is_condutor_identificado = True

                if inf_json['is_condutor_identificado'] == '0':
                    is_condutor_identificado = False

                infracao = Infracao()

                if inf_json['is_cancelado'] == "1":
                    infracao.is_cancelado = False
                else:
                    infracao.is_cancelado = True
                    infracao.motivo_cancelamento = inf_json['motivo_cancelamento']
                    infracao.data_cancelamento = datetime.strptime(inf_json['data'],
                                                                   "%d/%m/%Y %H:%M:%S")

                infracao.agente_id = request.user.id

                infracao.dispositivo_id = Dispositivo.objects.get(
                    imei=request.POST['imei']).id

                infracao.id = int(inf_json['infracao_id'])
                infracao.data_infracao = datetime.strptime(inf_json['data'], "%d/%m/%Y %H:%M:%S")
                infracao.local = inf_json['local']

                infracao.local_numero = inf_json['local_numero']
                if inf_json['observacao'] != '':
                    infracao.obs = inf_json['observacao']

                if inf_json['veiculo_id'] != "null":
                    infracao.veiculo_id = inf_json['veiculo_id']

                infracao.tipo_infracao_id = inf_json['tipo_infracao_id']
                if inf_json['tipo_infracao_id'] == 'null':
                    infracao.tipo_infracao_id = None

                movimentacao = Movimentacao()
                movimentacao.tempo = datetime.strptime(inf_json['data'], "%d/%m/%Y %H:%M:%S")
                movimentacao.latitude = inf_json['latitude']
                movimentacao.longitude = inf_json['longitude']
                movimentacao.save()

                infracao.movimento_id = movimentacao.id

                if inf_json['is_cancelado'] == "0":
                    infracao.is_cancelado = True
                    infracao.data_cancelamento = datetime.strptime(inf_json['data'],
                                                                   "%d/%m/%Y %H:%M:%S")
                    infracao.motivo_cancelamento = inf_json['motivo_cancelamento']

                if is_condutor_identificado:
                    verificar = Infrator.objects.filter(documento=inf_json['infrator']['documento'])
                    if len(verificar) == 0:
                        infrator = Infrator()
                        infrator.nome = inf_json['infrator']['nome']
                        infrator.cnh = inf_json['infrator']['cnh']
                        infrator.documento = inf_json['infrator']['documento']
                        infrator.estado = inf_json['infrator']['estado']
                        infrator.cidade = inf_json['infrator']['cidade']
                        infrator.endereco = inf_json['infrator']['endereco']
                        infrator.save()
                        infracao.infrator_id = infrator.documento
                    else:
                        infracao.infrator_id = verificar[0].documento

                infracao.is_estrangeiro = is_estrangeiro
                infracao.is_condutor_identi = is_condutor_identificado
                infracao.is_veiculo_editado = is_editado

                if inf_json['data_ocorrencia'] == '':
                    infracao.data_ocorrencia = datetime.strptime(inf_json['data'],
                                                                 "%d/%m/%Y %H:%M:%S")
                else:
                    infracao.data_ocorrencia = datetime.strptime(inf_json['data_ocorrencia'],
                                                                 "%d/%m/%Y %H:%M:%S")
                infracao.status_cnh = inf_json['status_cnh']

                if not Infracao.objects.filter(id=infracao.id).exists():
                    infracao.save(force_insert=True)

                if is_editado:
                    veiculo_editado = VeiculoEditado()
                    if inf_json['veiculo_id'] == "null":
                        veiculo_editado.veiculo_id = None
                    else:
                        veiculo_editado.veiculo_id = inf_json['veiculo_id']
                    veiculo_editado.placa = inf_json['veiculo']['placa']
                    veiculo_editado.chassi = inf_json['veiculo']['chassi']
                    veiculo_editado.uf = inf_json['veiculo']['estado']
                    veiculo_editado.especie = inf_json['veiculo']['especie']
                    veiculo_editado.tipo_veiculo = inf_json['veiculo']['tipo_veiculo']
                    veiculo_editado.modelo = inf_json['veiculo']['modelo']
                    veiculo_editado.cor = inf_json['veiculo']['cor']
                    veiculo_editado.cidade = inf_json['veiculo']['cidade']
                    veiculo_editado.categoria = inf_json['veiculo']['categoria']
                    veiculo_editado.num_passageiro = inf_json['veiculo']['num_passageiros']

                    veiculo_editado.infracao_id = infracao.id
                    veiculo_editado.save()

                if is_estrangeiro:
                    veiculo_estrangeiro = VeiculoEstrangeiro()
                    veiculo_estrangeiro.pais = inf_json['veiculo']['pais']
                    veiculo_estrangeiro.modelo = inf_json['veiculo']['modelo']
                    veiculo_estrangeiro.especie = inf_json['veiculo']['especie']
                    veiculo_estrangeiro.placa = inf_json['veiculo']['placa']
                    veiculo_estrangeiro.chassi = inf_json['veiculo']['chassi']
                    veiculo_estrangeiro.tipo_veiculo = inf_json['veiculo']['tipo_veiculo']
                    veiculo_estrangeiro.cor = inf_json['veiculo']['cor']
                    veiculo_estrangeiro.categoria = inf_json['veiculo']['categoria']
                    # veiculo_estrangeiro.nr_motor = inf_json['veiculo']['nr_motor']
                    # veiculo_estrangeiro.ano_fabricacao = inf_json['veiculo']['ano_fabricacao']
                    # veiculo_estrangeiro.ano_modelo = inf_json['veiculo']['ano_modelo']
                    veiculo_estrangeiro.num_passageiro = inf_json['veiculo']['num_passageiros']
                    veiculo_estrangeiro.infracao_id = infracao.id
                    veiculo_estrangeiro.save()

                    # TODO VERIFICAR SE ESSES CAMPOS ESTÃO CORRETOS
                    '''
                    veiculo_estrangeiro.tipo_veiculo_id = inf_json['veiculo']['tipo_veiculo_id']
                    veiculo_estrangeiro.cor_id = inf_json['veiculo']['cor_id']
                    veiculo_estrangeiro.categoria_id = inf_json['veiculo']['categoria_id']
                    '''

                infracoes_sinc.append({'id': infracao.id, 'status': True})
                transaction.savepoint_commit(sid)

            except NameError:

                exc_type, exc_value, exc_traceback = sys.exc_info()
                lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
                print ''.join('!! ' + line for line in lines)

        json = dumps(infracoes_sinc, ensure_ascii=False)
        return HttpResponse(json)