From: Lincoln de Sousa Date: Tue, 11 Sep 2007 19:14:03 +0000 (-0300) Subject: melhorias no formulário de inscrição e fazendo também a confirmação via email na... X-Git-Url: http://git.cascardo.info/?p=cascardo%2Feventmanager.git;a=commitdiff_plain;h=e7668c5632d7f0c13c2f7c2a1e1b5e9f3ac2d0f1 melhorias no formulário de inscrição e fazendo também a confirmação via email na hora de cadastrar o palestrante --- diff --git a/forms.py b/forms.py index 7890fc6..d33a8c5 100644 --- a/forms.py +++ b/forms.py @@ -116,4 +116,28 @@ class Inscricao(forms.Form): bairro = forms.CharField(max_length=100) cidade = forms.CharField(max_length=100) uf = forms.ChoiceField(choices=STATE_CHOICES) + pagina_pessoal = forms.CharField(max_length=100) + + telefone = forms.CharField(max_length=100) + estudante = forms.BooleanField(required=False) + + first_step = forms.CharField(max_length=1, + widget=forms.HiddenInput, initial='1') + + +class InscricaoEstudante(forms.Form): + post2 = forms.CharField(max_length=1, + widget=forms.HiddenInput, initial='1') + estudante = forms.CharField(max_length=1, + widget=forms.HiddenInput, initial='1') + + instituicao = forms.CharField(max_length=100) + curso = forms.CharField(max_length=100) + periodo = forms.CharField(max_length=100) + + +class InscricaoNormal(forms.Form): + empresa = forms.CharField(max_length=100) + post2 = forms.CharField(max_length=1, + widget=forms.HiddenInput, initial='1') diff --git a/templates/cadastro.html b/templates/cadastro.html index 9027481..4b7ca0e 100644 --- a/templates/cadastro.html +++ b/templates/cadastro.html @@ -6,9 +6,11 @@ {% if ok %}
-

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

+

Cadastro efetuado com sucesso!

-

Use o menu que apareceu para cadastrar uma palestra ou um minicurso

+

Foi enviado um email de confirmação para o endereço {{ email }}.

+

Siga as instruções do email para concluir o cadastro e prosseguir + com a submissão de trabalhos.

{% else %} diff --git a/templates/inscricao.html b/templates/inscricao.html index 33e3de0..1415736 100644 --- a/templates/inscricao.html +++ b/templates/inscricao.html @@ -13,7 +13,7 @@
{{ form.as_p }} - +
{% endif %} diff --git a/views.py b/views.py index f077444..7639c57 100644 --- a/views.py +++ b/views.py @@ -18,17 +18,20 @@ Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. """ from django.shortcuts import render_to_response -from django.template import RequestContext, Context +from django.template import RequestContext, Context, loader from django.contrib.auth.decorators import login_required, user_passes_test from django.contrib.auth.models import Group, User -from django.contrib.auth.forms import AuthenticationForm -from django.contrib.auth import login +from django.core.mail import EmailMessage from django.db import transaction +from django.http import get_host from eventmanager.decorators import enable_login_form from eventmanager.forms import * from eventmanager.conteudo.models import Noticia, Menu, Secao from eventmanager.eventos.models import * +import sha + +FROM_EMAIL = 'Emsl 2007 ' def build_response(request, template, extra={}): """ @@ -93,6 +96,7 @@ def cadastro_palestrante(request): user = User(username=cd['nome_usuario'], email=cd['email']) user.set_password(cd['senha']) + user.is_active = False user.save() user.groups.add(group) @@ -116,23 +120,44 @@ def cadastro_palestrante(request): for i in cd.get('area_interesse', []): p.area_interesse.add(i) - fakepost = request.POST.copy() - fakepost['username'] = cd['nome_usuario'] - fakepost['password'] = cd['senha'] + pid = p.id + md5_email = sha.new(cd['emai']).hexdigest() + email = '%s <%s>' % (cd['nome_completo'], cd['email']) + link = '%s/verificar?c=%s&c1=%s' % (get_host(request), + pid, md5_email) + t = loader.get_template('email-palestrante.html') + c = Context(dict(fulano=['nome_usuario'], link=link)) + try: + m = EmailMessage('Encontro Mineiro de Software Livre', + t.render(c), FROM_EMAIL, [email]) + m.send() + except Exception: + transaction.rollback() + else: + ok = True + transaction.commit() - manipulator = AuthenticationForm(request) - errors = manipulator.get_validation_errors(fakepost) - got_user = manipulator.get_user() - login(request, got_user) - transaction.commit() - ok = True c = {'form': form, 'ok': ok} return build_response(request, 'cadastro.html', c) @enable_login_form def inscricao(request): - form = Inscricao(request.POST or None) + post = request.POST + post2 = 'post2' in post and post or None + + # exibe o formulário de inscrição de estudantes. + if 'estudante' in post: + form = InscricaoEstudante(post2) + + # inscrição normal (sem ser estudante) + elif not 'estudante' in post or 'empresa' in post: + form = InscricaoNormal(post2) + + # primeiro passo... + else: + form = Inscricao(post or None) + return build_response(request, 'inscricao.html', {'form': form})