From: Lincoln de Sousa Date: Tue, 25 Sep 2007 00:15:35 +0000 (-0300) Subject: Terminando o cadastro de inscrições de caravanas X-Git-Url: http://git.cascardo.info/?p=cascardo%2Feventmanager.git;a=commitdiff_plain;h=036722efd74222e5807a031952faa50bf0f71f32 Terminando o cadastro de inscrições de caravanas --- diff --git a/eventos/models.py b/eventos/models.py index 6bc01f6..3dd623e 100644 --- a/eventos/models.py +++ b/eventos/models.py @@ -95,6 +95,7 @@ class Participante(models.Model): bairro = models.CharField(maxlength=100) cidade = models.CharField(maxlength=100) uf = models.CharField(maxlength=3) + usuario = models.ForeignKey(User) class Admin: pass @@ -103,6 +104,17 @@ class Participante(models.Model): return self.nome +class Caravana(models.Model): + coordenador = models.ForeignKey(Participante) + participantes = models.TextField() + + class Admin: + pass + + def __str__(self): + return str(self.coordenador) + + class CategoriaTrabalho(models.Model): nome = models.CharField(maxlength=100) diff --git a/forms.py b/forms.py index 9a60daf..ed1034d 100644 --- a/forms.py +++ b/forms.py @@ -102,12 +102,6 @@ class EditarSenha(forms.Form): nova_senha_2 = forms.CharField(max_length=100, widget=PasswordInput(), label='Conferir Senha') -class InscricaoCaravana(forms.Form): - 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>') - class InscricaoBase(forms.Form): nome_completo = forms.CharField(max_length=100) rg = forms.CharField(max_length=100) @@ -130,5 +124,8 @@ class Inscricao(InscricaoBase): inscricao_comercial = forms.BooleanField(required=False, label='Inscrição Comercial') -class InscricaoCoordenador(InscricaoBase): - pass +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>') diff --git a/templates/inscricao_caravana.html b/templates/inscricao_caravana.html index e3b529d..38fd346 100644 --- a/templates/inscricao_caravana.html +++ b/templates/inscricao_caravana.html @@ -6,16 +6,12 @@ {% if ok %}
-

Cadastro efetuado com sucesso, você já foi autenticado.

+

Cadastro efetuado com sucesso.

{% else %}
-

Dados do coordenador da caravana

- {{ form_coordenador.as_p }} - -

Dados dos participantes da caravana

{{ form.as_p }} diff --git a/views.py b/views.py index b6d3471..97da703 100644 --- a/views.py +++ b/views.py @@ -204,11 +204,62 @@ def inscricao_individual(request): @enable_login_form +@transaction.commit_manually def inscricao_caravana(request): - form_coordenador = InscricaoCoordenador(request.POST or None) form = InscricaoCaravana(request.POST or None) - return build_response(request, 'inscricao_caravana.html', - {'form_coordenador': form_coordenador, 'form': form}) + ok = False + if request.POST and form.is_valid(): + cd = form.cleaned_data + badattr = form.errors + wrong = False + + # don't save duplicated users... + try: + User.objects.get(username=cd['nome_usuario']) + badattr['nome_usuario'] = ['Este nome de usuário já existe!'] + wrong = True + transaction.rollback() + except User.DoesNotExist: + pass + + if not wrong and cd['senha'] != cd['senha_2']: + badattr['senha_2'] = ['A senha não confere'] + wrong = True + transaction.rollback() + + if not wrong: + group = Group.objects.get_or_create(name='participantes')[0] + + user = User(username=cd['nome_usuario'], email=cd['email']) + user.set_password(cd['senha']) + user.is_active = False + user.save() + user.groups.add(group) + + p = Participante() + p.usuario = user + p.nome = cd['nome_completo'] + p.rg = cd['rg'] + p.email = cd['email'] + p.rua = cd['rua'] + p.numero = cd['numero'] + p.bairro = cd['bairro'] + p.cidade = cd['cidade'] + p.uf = cd['uf'] + p.telefone = cd['telefone'] + p.home_page = cd['home_page'] + p.save() + + c = Caravana() + c.coordenador = p + c.participantes = cd['lista_nomes'] + c.save() + + ok = True + transaction.commit() + + c = {'form': form, 'ok': ok} + return build_response(request, 'inscricao_caravana.html', c) @login_required