class VisitorForm(forms.ModelForm): pk = forms.CharField( 'pk', widget=forms.widgets.HiddenInput, required=False, ) if LANGUAGE_CODE in ('pt-br', 'pt_BR'): cpf = BRCPFField(label=u'CPF', widget=AjaxInputWidget( model_fk=Visitor, help_text=_('Enter text to search.'), show_help_text=True, ajax_length=10)) else: email = forms.CharField(label=u'E-mail', widget=AjaxInputWidget( model_fk=Visitor, help_text=_('Enter text to search.'), show_help_text=True, ajax_length=3)) class Meta: model = Visitor fields = fields_visitor_form
class PessoaForm(ModelForm): telefone = BRPhoneNumberField() celular = BRPhoneNumberField(required=False) cpf = BRCPFField(label='CPF') usuario = forms.RegexField( label=_("Username"), max_length=30, regex=r'^\w+$', help_text= _("Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)." ), error_message=_( "This value must contain only letters, numbers and underscores.")) def save(self, *args, **kwargs): if not self.instance.id: u = User.objects.create_user(self.data.get('usuario'), self.data.get('email'), '123456') tipo = self.data.get('tipo') if tipo == '2': grupo = Group.objects.filter(name='Professores') u.groups.add(grupo[0]) elif tipo == '3': grupo = Group.objects.filter(name='Alunos') u.groups.add(grupo[0]) u.is_staff = True u.save() self.instance.user = u return super(PessoaForm, self).save(*args, **kwargs) class Meta: model = Pessoa exclude = ('user')
class UserProfileForm(ModelForm): """ Extende o formulário de edição do perfil do usuário para customizar o comportamento dos campos relacionados a ocupação do usuário. Usado no admin como na interface pública de edição do perfil do usuário. """ cpf = BRCPFField(label="CPF")
class FormAvaliado(ModelForm): referencia = forms.CharField() cep = BRZipCodeField(label='CEP') turma = forms.CharField() estado = BRStateChoiceField(label='Estado') cpf = BRCPFField(label='CPF', required=False) foneresidencial = BRPhoneNumberField(label='Telefone') class Meta: model = Avaliado
def __init__(self, *args, **kwargs): super(FornecedorAdminForm, self).__init__(*args, **kwargs) identificador = self._only_numbers(self.instance.identificador) if args and args[0].get('identificador'): identificador = self._only_numbers(args[0].get('identificador')) if identificador: self.fields['tipo'].initial = 'PF' if len(identificador) == 11 else 'PJ' if self.fields['tipo'].initial == 'PF': self.fields['identificador'] = BRCPFField(label=u'CPF/CNPJ') else: self.fields['identificador'] = BRCNPJField(label=u'CPF/CNPJ')
class AtualizarCadastroLinkForm(forms.Form): email = forms.EmailField(label=u'e-mail', required=False) cpf = BRCPFField( label='CPF', required=False, error_messages={ 'invalid': u'Preencha corretamente o seu CPF.', 'max_digits': u'Certifique-se de que o valor tenha no máximo 11 números no formato: XXX.XXX.XXX-XX.', 'digits_only': u'Preencha apenas com números, ou no formato: XXX.XXX.XXX-XX.', }) def clean(self): cleaned_data = super(AtualizarCadastroLinkForm, self).clean() email = cleaned_data.get('email') cpf = cleaned_data.get('cpf') if not email and not cpf: raise forms.ValidationError( u'É preciso informar um e-mail ou um CPF.') if (not email or not Membro.objects.filter(email=email).exists()) and ( not cpf or not Membro.objects.filter(cpf=cpf).exists()): raise forms.ValidationError( u'Não existe nenhum cadastro com esse e-mail ou CPF.') return cleaned_data def sendmail(self, template_email_name): try: membro = Membro.objects.get(email=self.cleaned_data['email']) except Membro.DoesNotExist: membro = Membro.objects.get(cpf=self.cleaned_data['cpf']) if not membro.status_email in ('S', 'O'): sendmail( subject=u'Atualização de Cadastro.', to=[ membro.email, ], template=template_email_name, params={ 'membro': membro, 'link': u'%s%s' % (settings.SITE_HOST, membro.get_absolute_update_url()), }, )
class AtualizarCadastroMembroForm(forms.ModelForm): class Meta: model = Membro fields = ('nome', 'apelido', 'email', 'cpf', 'rg', 'uf', 'municipio', 'sexo', 'celular', 'residencial', 'atividade_profissional', 'filiacao_partidaria', 'contrib_tipo', 'contrib_valor') cpf = BRCPFField( label='CPF', error_messages={ 'invalid': u'Preencha corretamente o seu CPF.', 'max_digits': u'Certifique-se de que o valor tenha no máximo 11 números no formato: XXX.XXX.XXX-XX.', 'digits_only': u'Preencha apenas com números, ou no formato: XXX.XXX.XXX-XX.', }) def __init__(self, *args, **kwargs): super(AtualizarCadastroMembroForm, self).__init__(*args, **kwargs) for field in ( 'email', 'municipio', ): self.fields[field].required = True self.fields[ 'filiacao_partidaria'].label = 'Filiação Partidária (Exemplo PT 1989-2004, PSOL 2005-2012, PSB 2001-2003)' self.fields['contrib_tipo'].choices = ( ('1', u'Mensal'), ('3', u'Trimestral'), ('6', u'Semestral'), ('A', u'Anual'), ('O', u'Não pretende fazer'), ) self.fields[ 'contrib_tipo'].help_text = u'Tanto o tipo de contribuição como o valor podem ser alterados a qualquer momento aqui no site. Basta solicitar a alteração no cadastro' def clean_email(self): email = self.cleaned_data.get('email') if Membro.objects.filter(email=email).exclude( pk=self.instance.pk).exists(): raise forms.ValidationError( u'Já existe um cadastro com esse email.') return email def save(self, commit=True): self.instance.status_email = 'A' return super(AtualizarCadastroMembroForm, self).save(commit)
class EntryForm(forms.ModelForm): phone = BRPhoneNumberField(label="Telefone", help_text="Exemplo: XX-XXXX-XXXX") mobile = BRPhoneNumberField(label="Celular", help_text="Exemplo: XX-XXXX-XXXX") cpf = BRCPFField(label="CPF", help_text="Exemplo: XXX.XXX.XXX-VD") class Meta: model = Entry widgets = { 'poster_abstract': forms.Textarea(attrs={ 'cols': 54, 'rows': 20 }), }
class HospedeForm(forms.ModelForm): cpf = BRCPFField(label="CPF", required=True, error_messages={ 'invalid': u"CPF Inválido", 'max_digits': "Este campo requer 11 digitos", 'digits_only': "Este campo aceita apenas digitos" }) data_nasc = forms.DateField(label="Data de nascimento", required=True, widget=forms.DateInput(format="%d/%m/%Y", attrs={ 'size': '15', 'class': 'date' })) class Meta: model = Hospede
class MemberForm(forms.ModelForm): cpf = BRCPFField(label=_("CPF"), required=True) phone = BRPhoneNumberField(label=_("Phone"), required=False) github_user = forms.CharField(label=_("GitHub User"), required=False) organization = forms.CharField(label=_("Organization"), widget=OrganizationInput, required=False) location = forms.CharField(label=_("Location"), required=False) class Meta: model = Member exclude = ('user', ) fields = ('category', 'github_user', 'organization', 'cpf', 'phone', 'address', 'location', 'relation_with_community', 'mailing', 'partner') def __init__(self, *args, **kwargs): super(MemberForm, self).__init__(*args, **kwargs) if self.instance: if not self.instance.get_payment_status(): self.fields['category'].widget.attrs['disabled'] = 'disabled' def clean_category(self): category = self.cleaned_data['category'] if self.instance.id: if not self.instance.get_payment_status(): if self.instance.category != category: raise forms.ValidationError( _("You can't change your category with pending payments" )) return category def clean_organization(self): organization = self.cleaned_data['organization'] if not organization: return None organization_instance, created = Organization.objects.get_or_create( name=organization) return organization_instance def save(self, user, commit=True): self.instance.user = user return super(MemberForm, self).save(commit)
class CadastroForm(forms.Form): nome = forms.CharField(label=u"Nome") sobrenome = forms.CharField(label=u"Sobrenome") email = forms.EmailField(label="Email") senha1 = forms.CharField( label=u"Senha", help_text=u'A senha deve conter seis caracteres ou mais.', widget=forms.PasswordInput) senha2 = forms.CharField( label=u"Confirmar senha", widget=forms.PasswordInput, help_text=u"Entre com a mesma senha, para verificação.") cpf = BRCPFField(label='CPF', max_length=14) rg = forms.CharField(label='RG', max_length=10) telefone = forms.CharField(label='Telefone', max_length=13) celular = forms.CharField(label='Celular', max_length=13, required=False) class Meta: model = Cliente exclude = ("user") #fields = ("first_name","last_name","email","senha1","senha2","cpf","rg","telefone","celular") def clean_senha1(self): password1 = self.cleaned_data.get('senha1', '') if len(password1) < 6: raise forms.ValidationError( "A senha deve conter seis caracteres ou mais.") return password1 def clean_senha2(self): password1 = self.cleaned_data.get('senha1', '') password2 = self.cleaned_data.get('senha2', '') if len(password2) < 6: raise forms.ValidationError( "A senha deve conter seis caracteres ou mais.") if password1 != password2: raise forms.ValidationError("As duas senhas não conferem.") return password2 def clean_email(self): if len(self.cleaned_data['email']) == 0: raise forms.ValidationError(u"Este campo é obrigatório.") if User.objects.filter(email__iexact=self.cleaned_data['email']): raise forms.ValidationError( u"Esse e-mail já está em uso. Por favor escolha outro.") return self.cleaned_data['email'] def save(self, request, commit=True): first_name = self.cleaned_data['nome'] last_name = self.cleaned_data['sobrenome'] username = self.cleaned_data['email'] password = self.cleaned_data['senha1'] email = username user = User.objects.create_user(username, email, password) user.first_name = first_name user.last_name = last_name user.save() cpf = self.cleaned_data.get('cpf') rg = self.cleaned_data.get('rg') telefone = self.cleaned_data.get('telefone') celular = self.cleaned_data.get('celular', None) cliente = Cliente.objects.create(user=user, cpf=cpf, rg=rg, telefone=telefone, celular=celular) cliente.save() login(request, authenticate(username=username, password=password))
class MembroForm(forms.ModelForm): class Meta: model = Membro fields = ('nome', 'apelido', 'email', 'cpf', 'uf', 'municipio', 'sexo', 'celular', 'residencial', 'atividade_profissional', 'filiacao_partidaria', 'contrib_tipo', 'contrib_valor') cpf = BRCPFField( label='CPF', error_messages={ 'invalid': u'Preencha corretamente o seu CPF.', 'max_digits': u'Certifique-se de que o valor tenha no máximo 11 números no formato: XXX.XXX.XXX-XX.', 'digits_only': u'Preencha apenas com números, ou no formato: XXX.XXX.XXX-XX.', }) captcha = ReCaptchaField() def __init__(self, *args, **kwargs): super(MembroForm, self).__init__(*args, **kwargs) self.fields[ 'filiacao_partidaria'].label = 'Filiação Partidária (Exemplo PT 1989-2004, PSOL 2005-2012, PSB 2001-2003)' self.fields['contrib_tipo'].choices = ( ('1', u'Mensal'), ('3', u'Trimestral'), ('6', u'Semestral'), ('A', u'Anual'), ('O', u'Não pretende fazer'), ) self.fields[ 'contrib_tipo'].help_text = u'Tanto o tipo de contribuição como o valor podem ser alterados a qualquer momento aqui no site. Basta solicitar a alteração no cadastro' def clean_email(self): email = self.cleaned_data.get('email') if Membro.objects.filter(email=email).exists(): raise forms.ValidationError( u'Já existe um cadastro com esse email. Faça login no site para que possa alterar seus dados.' ) return email def clean_cpf(self): cpf = self.cleaned_data.get('cpf') if cpf and Membro.objects.filter(cpf=cpf).exists(): raise forms.ValidationError(u'Já existe um cadastro com esse cpf.') return cpf def save(self, commit=True): email = self.cleaned_data.get('email') # Converte Pessoa em Membro if Pessoa.objects.filter(email=email).exists(): pessoa = Pessoa.objects.get(email=email) self.instance.pessoa_ptr = pessoa self.instance.status_email = pessoa.status_email if self.instance.nome != pessoa.nome: user = User.objects.get_or_create(username="******")[0] LogEntry.objects.log_action( user_id=user.pk, content_type_id=ContentType.objects.get_for_model( pessoa).pk, object_id=pessoa.pk, object_repr=u"%s" % pessoa, action_flag=CHANGE, change_message= u'Nome alterado de %s para %s pelo formulário' % (pessoa.nome, self.instance.nome)) return super(MembroForm, self).save(commit)
class AtualizarCadastroFiliadoForm(forms.ModelForm): class Meta: model = Membro fields = ( 'fundador', 'nome', 'apelido', 'email', 'cpf', 'rg', 'uf', 'municipio', 'sexo', 'celular', 'residencial', 'atividade_profissional', 'dtnascimento', 'nome_da_mae', 'uf_eleitoral', 'municipio_eleitoral', 'titulo_eleitoral', 'zona_eleitoral', 'secao_eleitoral', 'filiacao_partidaria', 'contrib_tipo', 'contrib_valor', 'estadocivil', 'uf_naturalidade', 'municipio_naturalidade', 'endereco', 'endereco_num', 'endereco_complemento', 'endereco_cep', ) cpf = BRCPFField( label='CPF', error_messages={ 'invalid': u'Preencha corretamente o seu CPF.', 'max_digits': u'Certifique-se de que o valor tenha no máximo 11 números no formato: XXX.XXX.XXX-XX.', 'digits_only': u'Preencha apenas com números, ou no formato: XXX.XXX.XXX-XX.', }) endereco_cep = BRZipCodeField(label=u'CEP', required=False) def __init__(self, *args, **kwargs): super(AtualizarCadastroFiliadoForm, self).__init__(*args, **kwargs) # Requireds for field in ( 'nome_da_mae', 'uf_eleitoral', 'municipio_eleitoral', 'titulo_eleitoral', 'zona_eleitoral', 'secao_eleitoral', ): self.fields[field].required = True self.fields[ 'filiacao_partidaria'].label = 'Filiação Partidária (Exemplo PT 1989-2004, PSOL 2005-2012)' self.fields['contrib_tipo'].choices = ( ('1', u'Mensal'), ('3', u'Trimestral'), ('6', u'Semestral'), ('A', u'Anual'), ) self.fields[ 'contrib_tipo'].help_text = u'Tanto o tipo de contribuição como o valor podem ser alterados a qualquer momento aqui no site. Basta solicitar a alteração no cadastro' def testa_fundador(self, campo): fundador = self.cleaned_data.get('fundador') if fundador and not campo: raise forms.ValidationError( u'Este campo é obrigatório se você marcou "Quero assinar a ata de fundação da RAiZ".' ) def clean_estadocivil(self): campo = self.cleaned_data.get('estadocivil') self.testa_fundador(campo) return campo def clean_atividade_profissional(self): campo = self.cleaned_data.get('atividade_profissional') self.testa_fundador(campo) return campo def clean_endereco_cep(self): campo = self.cleaned_data.get('endereco_cep') self.testa_fundador(campo) return campo def clean_endereco(self): campo = self.cleaned_data.get('endereco') self.testa_fundador(campo) return campo def clean_endereco_num(self): campo = self.cleaned_data.get('endereco_num') self.testa_fundador(campo) return campo def clean_municipio(self): campo = self.cleaned_data.get('municipio') self.testa_fundador(campo) return campo def clean_uf_naturalidade(self): campo = self.cleaned_data.get('uf_naturalidade') self.testa_fundador(campo) return campo def clean_municipio_naturalidade(self): campo = self.cleaned_data.get('municipio_naturalidade') self.testa_fundador(campo) return campo def clean_email(self): email = self.cleaned_data.get('email') if Membro.objects.filter(email=email).exclude( pk=self.instance.pk).exists(): raise forms.ValidationError( u'Já existe um cadastro com esse email.') return email def save(self, commit=True): self.instance.filiado = True self.instance.status_email = 'A' return super(AtualizarCadastroFiliadoForm, self).save(commit)
class FiliadoForm(forms.ModelForm): class Meta: model = Membro fields = ( 'fundador', 'nome', 'apelido', 'email', 'cpf', 'rg', 'uf', 'municipio', 'sexo', 'celular', 'residencial', 'atividade_profissional', 'dtnascimento', 'nome_da_mae', 'uf_eleitoral', 'municipio_eleitoral', 'titulo_eleitoral', 'zona_eleitoral', 'secao_eleitoral', 'filiacao_partidaria', 'contrib_tipo', 'contrib_valor', 'estadocivil', 'uf_naturalidade', 'municipio_naturalidade', 'endereco', 'endereco_num', 'endereco_complemento', 'endereco_cep', ) cpf = BRCPFField( label='CPF', error_messages={ 'invalid': u'Preencha corretamente o seu CPF.', 'max_digits': u'Certifique-se de que o valor tenha no máximo 11 números no formato: XXX.XXX.XXX-XX.', 'digits_only': u'Preencha apenas com números, ou no formato: XXX.XXX.XXX-XX.', }) endereco_cep = BRZipCodeField(label=u'CEP', required=False) def __init__(self, *args, **kwargs): super(FiliadoForm, self).__init__(*args, **kwargs) # Requireds for field in ( 'email', 'municipio', 'nome_da_mae', 'uf_eleitoral', 'municipio_eleitoral', 'titulo_eleitoral', 'zona_eleitoral', 'secao_eleitoral', ): self.fields[field].required = True self.fields[ 'filiacao_partidaria'].label = 'Filiação Partidária (Exemplo PT 1989-2004, PSOL 2005-2012)' self.fields['contrib_tipo'].choices = ( ('1', u'Mensal'), ('3', u'Trimestral'), ('6', u'Semestral'), ('A', u'Anual'), ) self.fields[ 'contrib_tipo'].help_text = u'Tanto o tipo de contribuição como o valor podem ser alterados a qualquer momento aqui no site. Basta solicitar a alteração no cadastro' def clean_email(self): email = self.cleaned_data.get('email') if Membro.objects.filter(email=email).exists(): raise forms.ValidationError( u'Já existe um cadastro com esse email.') return email def testa_fundador(self, campo): fundador = self.cleaned_data.get('fundador') if fundador and not campo: raise forms.ValidationError( u'Este campo é obrigatório se você marcou "Quero assinar a ata de fundação da RAiZ".' ) def clean_estadocivil(self): campo = self.cleaned_data.get('estadocivil') self.testa_fundador(campo) return campo def clean_atividade_profissional(self): campo = self.cleaned_data.get('atividade_profissional') self.testa_fundador(campo) return campo def clean_endereco_cep(self): campo = self.cleaned_data.get('endereco_cep') self.testa_fundador(campo) return campo def clean_endereco(self): campo = self.cleaned_data.get('endereco') self.testa_fundador(campo) return campo def clean_endereco_num(self): campo = self.cleaned_data.get('endereco_num') self.testa_fundador(campo) return campo def clean_municipio(self): campo = self.cleaned_data.get('municipio') self.testa_fundador(campo) return campo def clean_uf_naturalidade(self): campo = self.cleaned_data.get('uf_naturalidade') self.testa_fundador(campo) return campo def clean_municipio_naturalidade(self): campo = self.cleaned_data.get('municipio_naturalidade') self.testa_fundador(campo) return campo def clean_cpf(self): cpf = self.cleaned_data.get('cpf') if cpf and Membro.objects.filter(cpf=cpf).exists(): raise forms.ValidationError(u'Já existe um cadastro com esse CPF.') return cpf def save(self, commit=True): email = self.cleaned_data.get('email') self.instance.filiado = True # Converte Pessoa em Filiado if Pessoa.objects.filter(email=email).exists(): pessoa = Pessoa.objects.get(email=email) self.instance.pessoa_ptr = pessoa self.instance.status_email = pessoa.status_email if self.instance.nome != pessoa.nome: user = User.objects.get_or_create(username="******")[0] LogEntry.objects.log_action( user_id=user.pk, content_type_id=ContentType.objects.get_for_model( pessoa).pk, object_id=pessoa.pk, object_repr=u"%s" % pessoa, action_flag=CHANGE, change_message= u'Nome alterado de %s para %s pelo formulário' % (pessoa.nome, self.instance.nome)) return super(FiliadoForm, self).save(commit)
class PessoaForm(ModelForm): telefone = BRPhoneNumberField(help_text = _("Formato de telefone xx-xxxx-xxxx ")) celular = BRPhoneNumberField(required=False,help_text = _("Formato de celular xx-xxxx-xxxx ")) cpf = BRCPFField(label='CPF',required=False) estado = BRStateChoiceField(initial = 'AL') naturalidade_estado = BRStateChoiceField(label='Estado',initial='AL') usuario = forms.RegexField(label=_("Username"), max_length=30, regex=r'^\w+$', help_text = _("Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."), error_message = _("This value must contain only letters, numbers and underscores.")) def __init__(self, *args, **kwargs): self.base_fields['data_nascimento'].widget = SelectDateWidget() super(PessoaForm, self).__init__(*args, **kwargs) def clean_usuario(self): queryset = User.objects.filter(username=self.cleaned_data['usuario']) if self.instance.id: queryset = queryset.exclude(pk=self.instance.user.id) if len(queryset) == 0: return self.cleaned_data['usuario'] raise forms.ValidationError(u'Nome de usuário já cadastrado. Escolha outro.') def clean_rg(self): rg = self.cleaned_data['rg'] if rg not in EMPTY_VALUES: try: int(rg) except ValueError: raise forms.ValidationError(u'O RG deve conter apenas números') length = len(rg) if length < 6: raise forms.ValidationError(u'Certifique-se de que o valor tenha mais que \ 7 caracters (ele possui %d)' % length) queryset = Pessoa.objects.filter(rg=self.cleaned_data['rg']) if len(queryset) == 0: return self.cleaned_data['rg'] raise forms.ValidationError(u'Já existe uma Pessoa Física cadastrada com o RG: %s' % rg) def save(self, *args, **kwargs): if not self.instance.id: try: user = User.objects.get(username=self.data.get('usuario')) except User.DoesNotExist: user = [] if user : self.instance.user = user else: u = User.objects.create_user(self.data.get('usuario'), self.data.get('email'), '123456') tipo = self.data.get('tipo') if tipo =='1': grupo = Group.objects.filter(name='Administrador') u.groups.add(grupo[0]) elif tipo == '2': grupo = Group.objects.filter(name='Caixa') u.groups.add(grupo[0]) elif tipo == '3': grupo = Group.objects.filter(name='Cliente') u.groups.add(grupo[0]) else: grupo = Group.objects.filter(name='Entregador') u.groups.add(grupo[0]) u.save() self.instance.user = u else: self.instance.user.groups.clear() tipo = self.data.get('tipo') if tipo =='1': grupo = Group.objects.filter(name='Administrador') self.instance.user.groups.add(grupo[0]) elif tipo == '2': grupo = Group.objects.filter(name='Caixa') self.instance.user.groups.add(grupo[0]) elif tipo == '3': grupo = Group.objects.filter(name='Cliente') self.instance.user.groups.add(grupo[0]) else: grupo = Group.objects.filter(name='Entregador') self.instance.user.groups.add(grupo[0]) self.instance.user.save() return super(PessoaForm,self).save(*args, **kwargs) class Meta: model = Pessoa exclude = ('user')
class GTIForm(forms.ModelForm): cpf = BRCPFField(label=u'CPF', required=False) estado = BRStateChoiceField(label=u'UF', required=True) class Meta: model = GTI