コード例 #1
0
ファイル: forms.py プロジェクト: tatyana12/djang
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
コード例 #2
0
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')
コード例 #3
0
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")
コード例 #4
0
ファイル: forms.py プロジェクト: vagtonaf/sageowl
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
コード例 #5
0
ファイル: forms.py プロジェクト: josircg/raizcidadanista
    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')
コード例 #6
0
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()),
                },
            )
コード例 #7
0
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)
コード例 #8
0
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
            }),
        }
コード例 #9
0
ファイル: forms.py プロジェクト: wpjunior/hotsys.python
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
コード例 #10
0
ファイル: forms.py プロジェクト: raelmax/associados
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)
コード例 #11
0
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))
コード例 #12
0
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)
コード例 #13
0
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)
コード例 #14
0
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)
コード例 #15
0
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')
コード例 #16
0
ファイル: forms.py プロジェクト: piratas/sap
class GTIForm(forms.ModelForm):
    cpf = BRCPFField(label=u'CPF', required=False)
    estado = BRStateChoiceField(label=u'UF', required=True)

    class Meta:
        model = GTI