-# -*- coding: utf8; -*-
+# -*- coding: utf-8; -*-
"""
Copyright (C) 2007 Lincoln de Sousa <lincoln@archlinux-br.org>
Boston, MA 02111-1307, USA.
"""
from django import newforms as forms
-from django.newforms.widgets import Textarea, PasswordInput
+from django.newforms import ValidationError
+from django.newforms.widgets import Textarea, PasswordInput, HiddenInput
+from django.contrib.auth.models import User
from eventmanager.eventos.models import \
- AreaDeInteresse, CategoriaPalestra, Palestrante, STATE_CHOICES
+ TipoTrabalho, CategoriaTrabalho, Palestrante, STATE_CHOICES
-MKCHOICES = lambda K:[(x.id, str(x)) for x in K.objects.all()]
+MKCHOICES = lambda K, xid=-1:[(x.id, str(x)) for x in K.objects.all() \
+ if xid != x.id]
-class InscreverPalestra(forms.Form):
- def __init__(self, *args, **kwargs):
- super(InscreverPalestra, self).__init__(*args, **kwargs)
-
- newchoices = MKCHOICES(CategoriaPalestra)
- self.fields['categoria'].choices = newchoices
-
- newchoices = MKCHOICES(Palestrante)
+class LoginBase(forms.Form):
+ nome_usuario = forms.CharField(max_length=100)
+ senha = forms.CharField(max_length=100, widget=PasswordInput())
+ senha_2 = forms.CharField(max_length=100, widget=PasswordInput(),
+ label='Conferir Senha')
+
+ def clean_nome_usuario(self):
+ try:
+ User.objects.get(username=self.cleaned_data['nome_usuario'])
+ raise ValidationError('Já existe um usuário com esse nome')
+ except User.DoesNotExist:
+ return self.cleaned_data['nome_usuario']
+
+ def clean_senha_2(self):
+ if self.cleaned_data['senha'] != self.cleaned_data['senha_2']:
+ raise ValidationError('A confirmação não confere com a senha')
+ return self.cleaned_data['senha_2']
+
+class SubmeterTrabalho(forms.Form):
+ def __init__(self, request, *args, **kwargs):
+ super(SubmeterTrabalho, self).__init__(*args, **kwargs)
+
+ newchoices = MKCHOICES(TipoTrabalho)
+ self.fields['tipo'].choices = newchoices
+
+ palestrante = request.user.palestrante_set.get()
+ newchoices = MKCHOICES(Palestrante, xid=palestrante.id)
self.fields['outros_palestrantes'].choices = newchoices
- titulo = forms.CharField(max_length=100)
- tema = forms.CharField(max_length=100)
- categoria = forms.ChoiceField()
+ titulo = forms.CharField(max_length=100, label='Título do trabalho')
+ tipo = forms.ChoiceField()
descricao_curta = forms.CharField(widget=Textarea(),
- label='Descrição curta')
+ label='Descrição curta', max_length=250,
+ help_text='Esta descrição será utilizada para exibição no '
+ 'material de divulgação (máximo 250 caracteres).')
descricao_longa = forms.CharField(widget=Textarea(),
- label='Descrição longa')
-
- outros_palestrantes = forms.MultipleChoiceField()
+ max_length=1500, label='Descrição longa',
+ help_text='Esta descrição será utilizada para avaliação do seu '
+ 'trabalho. Insira também referências '
+ '(máximo 1500 caracteres).')
+ recursos = forms.CharField(widget=Textarea(), max_length=300, required=0,
+ help_text='Liste os recursos que seu trabalho irá necessitar, '
+ 'ex.: Computadores, softwares, etc. Máximo de 300 caracteres.')
+ outros_palestrantes = forms.MultipleChoiceField(required=0)
+
+class CadastroPalestrante(LoginBase):
+ nome_completo = forms.CharField(max_length=100)
+ email = forms.CharField(max_length=100)
+ telefone = forms.CharField(required=False)
+ celular = forms.CharField(required=False)
-class CadastroPalestrante(forms.Form):
- def __init__(self, *args, **kwargs):
- super(CadastroPalestrante, self).__init__(*args, **kwargs)
+ instituicao = forms.CharField(max_length=100, label='Instituição')
+ minicurriculo = forms.CharField(widget=Textarea(), max_length=250, label='Mini Currículo',
+ help_text='Este mini currículo será utilizado no material de divulgação '
+ 'e no sítio. Máximo de 250 caracteres.')
+ curriculo = forms.CharField(widget=Textarea(), max_length=6000, label='Currículo',
+ help_text='Este currículo será utilizado para avaliação do palestrante. '
+ 'Máximo de 6000 caracteres.')
+ rua = forms.CharField(max_length=100)
+ numero = forms.CharField(max_length=10, label='Número')
+ bairro = forms.CharField(max_length=100)
+ cidade = forms.CharField(max_length=100)
+ uf = forms.ChoiceField(choices=STATE_CHOICES)
- newchoices = MKCHOICES(AreaDeInteresse)
- self.fields['area_interesse'].choices = newchoices
+ def clean_celular(self):
+ if not self.cleaned_data['telefone'] and \
+ not self.cleaned_data['celular']:
+ raise ValidationError('Algum número de precisa ser preenchido')
+ return self.cleaned_data['celular']
- nome_completo = forms.CharField(max_length=100)
- nome_usuario = forms.CharField(max_length=100)
- senha = forms.CharField(max_length=100, widget=PasswordInput())
+class EditarPalestrante(forms.Form):
+ nome = forms.CharField(max_length=100, label='Nome completo')
email = forms.CharField(max_length=100)
- telefone_comercial = forms.CharField(max_length=11, required=False)
- telefone_residencial = forms.CharField(max_length=11, required=False)
- telefone_celular = forms.CharField(max_length=11, required=False)
+ telefone = forms.CharField(required=False)
+ celular = forms.CharField(required=False)
instituicao = forms.CharField(max_length=100, label='Instituição')
- minicurriculo = forms.CharField(widget=Textarea(), label='Mini Currículo')
-
+ minicurriculo = forms.CharField(widget=Textarea(), max_length=250, label='Mini Currículo',
+ help_text='Este mini currículo será utilizado no material de divulgação'
+ 'e no site. Máximo de 250 caracteres.')
+ curriculo = forms.CharField(widget=Textarea(), max_length=6000, label='Currículo',
+ help_text='Este currículo será utilizado para avaliação do palestrante.'
+ 'Máximo de 6000 caracteres.')
rua = forms.CharField(max_length=100)
numero = forms.CharField(max_length=10, label='Número')
bairro = forms.CharField(max_length=100)
cidade = forms.CharField(max_length=100)
uf = forms.ChoiceField(choices=STATE_CHOICES)
- area_interesse = forms.MultipleChoiceField(label='Áreas de Interesse')
-
+class EditarSenha(forms.Form):
+ senha_atual = forms.CharField(max_length=100, widget=PasswordInput())
+ nova_senha = forms.CharField(max_length=100, widget=PasswordInput())
+ nova_senha_2 = forms.CharField(max_length=100, widget=PasswordInput(),
+ label='Conferir Senha')
-class Inscricao(forms.Form):
+class InscricaoBase(LoginBase):
nome_completo = forms.CharField(max_length=100)
- cpf = forms.CharField(max_length=100)
- email = forms.CharField(max_length=100)
+ rg = forms.CharField(max_length=100)
+ email = forms.CharField(max_length=100)
rua = forms.CharField(max_length=100)
numero = forms.CharField(max_length=10, label='Número')
bairro = forms.CharField(max_length=100)
cidade = forms.CharField(max_length=100)
uf = forms.ChoiceField(choices=STATE_CHOICES)
+ cep = forms.CharField(max_length=8, help_text='Somente números')
+ telefone = forms.CharField(max_length=100)
+ home_page = forms.CharField(max_length=100, label='Página Pessoal',
+ required=False)
+
+class Inscricao(InscricaoBase):
+ inscricao_comercial = forms.BooleanField(required=False,
+ label='Inscrição Comercial')
+ cpf_cnpj = forms.CharField(max_length=20, required=False, label='CPF/CNPJ',
+ help_text='Somente necessário para a inscrição comercial')
+
+ def clean_cpf_cnpj(self):
+ cpf_cnpj = self.cleaned_data['cpf_cnpj']
+ if self.cleaned_data['inscricao_comercial'] and not cpf_cnpj:
+ raise ValidationError('Você escolheu a inscrição comercial, '
+ 'portanto este campo se torna obrigatório')
+ return cpf_cnpj
+
+class InscricaoCaravana(InscricaoBase):
+ lista_nomes = forms.CharField(label='Lista de nomes',
+ widget=forms.Textarea(), help_text='Um participante por linha, '
+ 'informando nome completo e email no seguine formato: '
+ 'Nome Completo <email@server.domain>')
+
+ def clean_lista_nomes(self):
+ nomes = self.cleaned_data['lista_nomes']
+ if len([x for x in nomes.split('\n') if x]) < 10:
+ raise ValidationError('A caravana precisa de pelo menos 10 '
+ 'participantes.')
+ return nomes
+
+class Boleto(forms.Form):
+ # Field names are in mixedCase because of bb's sistem request =/
+ idConv = forms.CharField(max_length=6, initial='303366',
+ widget=HiddenInput())
+ refTran = forms.CharField(max_length=17,
+ widget=HiddenInput())
+ tpPagamento = forms.CharField(max_length=2, initial='21',
+ widget=HiddenInput())
+ valor = forms.CharField(max_length=15, widget=HiddenInput())
+ dtVenc = forms.CharField(max_length=8, widget=HiddenInput())
+ urlRetorno = forms.CharField(max_length=60, initial='/inscricao',
+ widget=HiddenInput())
+ urlInforma = forms.CharField(max_length=60, initial='/inscricao',
+ widget=HiddenInput())
+ nome = forms.CharField(max_length=60, widget=HiddenInput())
+ endereco = forms.CharField(max_length=60, widget=HiddenInput())
+ cidade = forms.CharField(max_length=18, widget=HiddenInput())
+ uf = forms.CharField(max_length=2, widget=HiddenInput())
+ cep = forms.CharField(max_length=8, widget=HiddenInput())
+ msgLoja = forms.CharField(max_length=480,
+ initial='Nao receber apos a data de vencimento',
+ widget=HiddenInput())