phiron

Exemplo de envio de formulário no django sem ClassBasedVeiw

Jan 17th, 2021
675
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. @login_required
  2. @csrf_protect
  3. def cadastro_contatos(request,id_pessoa,id_contato = -1,flag = False):
  4.     '''
  5.    Cadastra ou edita contatos para pessoas jurídicas
  6.    slug_pesoa_juridica: Slug da pessoa jurídica para pesquisar no banco de dados
  7.    id_contato: Chave primária do contato cadastrado, de modo a editar um contato salvo
  8.    a url irá ficar no formato: cadastro-contato/analise-informatica/
  9.    ou então:                   editar-contato/analise-informatica/23/
  10.    **Context**
  11.    ``form`` instância de :forms: `institucional.forms.FormCadastroContatos`
  12.    ``pessoa_juridica`` instância de :model: `institucional.models.Fornecedores`
  13.    ``pessoa_juridica`` instância de :model: `institucional.models.PessoasJuridicas`
  14.    ``contato`` instância de :model: `institucional.models.ContatosPessoasJuridicas`
  15.    ``flag`` booleano para informar ao template se acabou de editar ou não, de modo a apresentar uma mensage para não confundir o usuário
  16.    '''
  17.     if not request.user.has_perm("institucional.change_pessoasjuridicas"):#se a pessoa não possui permissão para editar ou alterar contatos
  18.         raise PermissionDenied
  19.     pessoa_juridica = get_object_or_404(PessoasJuridicas,pk=retornar_inteiro(id_pessoa,False))
  20.     queryset = ContatosPessoasJuridicas.objects.filter(idPessoaJuridica=pessoa_juridica)
  21.     url_voltar = reverse('institucional:editar_fornecedor',kwargs={'pk':pessoa_juridica.pk})
  22.     tabela = TabelaContatosPessoasJuridicas(queryset)
  23.     contato = ContatosPessoasJuridicas.objects.filter(pk=id_contato)
  24.     title = "Cadastro de contato para {0}".format(pessoa_juridica)
  25.     if contato.count() > 0:
  26.         contato = contato[0]
  27.         initial={'id_pessoa_juridica':pessoa_juridica.pk,
  28.                  'id_pessoa_fisica':contato.idPessoaFisica.pk,
  29.                  'id_contato':contato.pk,
  30.                  'nome':contato.idPessoaFisica.Nome,
  31.                  'telefone':contato.idPessoaFisica.Telefone,
  32.                  'celular':contato.idPessoaFisica.Celular,
  33.                  'email':contato.idPessoaFisica.Email,
  34.                  'ramal':contato.Ramal,
  35.                  'setor':contato.Setor,
  36.                  }
  37.         title = "Edição do contato {0}".format(contato.idPessoaFisica)
  38.     else:
  39.         contato = ContatosPessoasJuridicas()
  40.         initial={'id_pessoa_juridica':pessoa_juridica.pk}
  41.     form = FormCadastroContatos(initial=initial)
  42.     if request.method == "POST":
  43.         #Se o método da view foi um post...
  44.         form = FormCadastroContatos(request.POST)
  45.         if form.is_valid():
  46.             id_pessoa_juridica = form.cleaned_data['id_pessoa_juridica']
  47.             if int(id_pessoa_juridica) != int(pessoa_juridica.pk):#se a chave primária enviada for diferente da atual, existe um problema aqui...
  48.                 raise SuspiciousOperation('estranho a pessoa jurídica estar diferente as chaves')
  49.             id_pessoa_fisica = retornar_inteiro(form.cleaned_data['id_pessoa_fisica'],False)
  50.             nome = form.cleaned_data['nome']
  51.             telefone = form.cleaned_data['telefone']
  52.             celular = form.cleaned_data['celular']
  53.             ramal = form.cleaned_data['ramal']
  54.             email = form.cleaned_data['email']
  55.             setor = form.cleaned_data['setor']
  56.             observacoes = form.cleaned_data['observacoes']
  57.             pessoa_fisica = PessoasFisicas.objects.filter(pk=id_pessoa_fisica)
  58.             if pessoa_fisica.count() > 0:
  59.                 pessoa_fisica = pessoa_fisica[0]
  60.             else:
  61.                 pessoa_fisica = PessoasFisicas()
  62.             pessoa_fisica.Nome = nome
  63.             pessoa_fisica.Telefone = telefone
  64.             pessoa_fisica.Celular = celular
  65.             pessoa_fisica.Email = email
  66.             pessoa_fisica.Observacoes = observacoes
  67.             pessoa_fisica.save()
  68.             contato.idPessoaJuridica = pessoa_juridica
  69.             contato.idPessoaFisica = pessoa_fisica
  70.             contato.Setor = setor
  71.             contato.Ramal = ramal
  72.             contato.save()
  73.             url = reverse('institucional:editar_contato',kwargs={'id_contato':contato.pk,'id_pessoa':pessoa_juridica.pk})
  74.             return HttpResponseRedirect(url)
  75.         else:
  76.             context = {
  77.                'form':form,
  78.                'pessoa_juridica':pessoa_juridica,
  79.                'contato':contato,
  80.                'flag':flag,
  81.                'title':title,
  82.                'titulo':title,
  83.                'table':tabela,
  84.                'url_voltar':url_voltar,
  85.                }
  86.             return render(request,'institucional/add_contacts.html',context)
  87.     context = {
  88.                'form':form,
  89.                'pessoa_juridica':pessoa_juridica,
  90.                'contato':contato,
  91.                'flag':flag,
  92.                'title':title,
  93.                'titulo':title,
  94.                'table':tabela,
  95.                'url_voltar':url_voltar,
  96.                }
  97.     return render(request,'institucional/add_contacts.html',context)
RAW Paste Data