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)
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)
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})
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")})
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)
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)
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)
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)
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)
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)
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)
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)
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})
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)
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)
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)
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)
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")})
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)
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)
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)
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)