X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=views.py;h=0ba109277506859e80589c603a86ec96ff30416b;hb=1ad497962cc719be182638fbf71ea5bfea91bc35;hp=684e59fc457a973f17b7930612f600f809b84f4e;hpb=6af39e3efaf3c57e0eed9fcd10c1f241c1aeee23;p=cascardo%2Feventmanager.git diff --git a/views.py b/views.py index 684e59f..0ba1092 100644 --- a/views.py +++ b/views.py @@ -1,4 +1,4 @@ -# -*- coding: utf8; -*- +# -*- coding: utf-8; -*- """ Copyright (C) 2007 Lincoln de Sousa @@ -17,18 +17,22 @@ License along with this program; if not, write to the 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.shortcuts import render_to_response, get_object_or_404 +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.newforms import form_for_instance +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={}): """ @@ -47,8 +51,10 @@ def build_response(request, template, extra={}): news = Noticia.objects.order_by('-data_criacao') menus = Menu.objects.all() index_sections = Secao.objects.filter(index=True) + login_failed = 'login_failed' in request.GET c = {'news': news, 'menu': menus, - 'index_sections': index_sections} + 'index_sections': index_sections, + 'login_failed': login_failed} c.update(extra) return render_to_response(template, Context(c), context_instance=RequestContext(request)) @@ -70,8 +76,8 @@ def cadastro_palestrante(request): wrong = False if not cd['telefone'] and not cd['celular']: - badattr['telefone_comercial'] = ['Algum número de telefone ' - 'precisa ser informado'] + badattr['telefone_comercial'] = \ + ['Algum número de telefone precisa ser informado'] wrong = True # don't save duplicated users... @@ -93,6 +99,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,30 +123,53 @@ 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['email']).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: + badattr['email'] = \ + ['Desculpe mas não pude enviar o email de confirmação'] + 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 and ('first_step' 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}) @login_required @user_passes_test(lambda u:u.palestrante_set.count() == 1, login_url='/') def submeter_trabalho(request): - form = SubmeterTrabalho(request.POST or None) + form = SubmeterTrabalho(request, request.POST or None) ok = False if request.POST and form.is_valid(): @@ -147,7 +177,7 @@ def submeter_trabalho(request): t = Trabalho() t.titulo = cd['titulo'] t.tipo = TipoTrabalho.objects.get(pk=cd['tipo']) - t.categoria = CategoriaTrabalho.objects.get(pk=cd['categoria']) + t.categoria = CategoriaTrabalho.objects.get_or_create(nome='Pendente')[0] t.descricao_curta = cd['descricao_curta'] t.descricao_longa = cd['descricao_longa'] t.recursos = cd['recursos'] @@ -179,6 +209,30 @@ def meus_trabalhos(request): c = {'trabalhos': t, 'palestrante': 1} return build_response(request, 'meus_trabalhos.html', c) +@login_required +@user_passes_test(lambda u:u.palestrante_set.count() == 1, login_url='/') +def editar_trabalho(request,codigo): + try: + p = Palestrante.objects.get(usuario=request.user) + except Palestrante.DoesNotExist: + # não palestrante... + c = {'palestrante': 0} + return build_response(request, 'meus_trabalhos.html', c) + trabalho = get_object_or_404(Trabalho, id=codigo,palestrante=p) + Formulario = form_for_instance(trabalho) + if request.method == 'POST': + form = Formulario(request.POST) + if form.is_valid(): + form.save() + t = Trabalho.objects.filter(palestrante=p) + c = {'trabalhos': t, 'palestrante': 1} + c['editado_sucesso']=trabalho.titulo + return build_response(request, 'meus_trabalhos.html', c) + else: + form = Formulario() + + c = {'formulario':form} + return build_response(request, 'editar_trabalho.html', c) @login_required def meus_dados(request): @@ -189,14 +243,6 @@ def meus_dados(request): for name, field in form.fields.items(): field.initial = getattr(palestrante, name) - deleted = request.POST.get('delete-account') - if deleted: - palestrante.trabalho_set.all().delete() - palestrante.delete() - request.user.delete() - return build_response(request, 'editar_palestrante.html', - {'removed': 1}) - if request.POST and form.is_valid(): cd = form.cleaned_data for name, field in form.fields.items(): @@ -211,3 +257,7 @@ def meus_dados(request): @enable_login_form def chamada_trabalhos(request): return build_response(request, 'chamada_trabalhos.html') + +@enable_login_form +def avaliacao(request): + return build_response(request, 'avaliacao.html')