+ fakepost = request.POST.copy()
+ fakepost['username'] = cd['nome_usuario']
+ fakepost['password'] = cd['senha']
+
+ 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)
+ 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, request.POST or None)
+ ok = False
+
+ if request.POST and form.is_valid():
+ cd = form.cleaned_data
+ t = Trabalho()
+ t.titulo = cd['titulo']
+ t.tipo = TipoTrabalho.objects.get(pk=cd['tipo'])
+ 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']
+ t.evento = Evento.objects.get(pk=1) # let the hammer play arround!
+ t.save()
+
+ logged_in = request.user.palestrante_set.get()
+ t.palestrante.add(logged_in)
+ for i in cd.get('outros_palestrantes', []):
+ up = Palestrante.objects.get(pk=int(i))
+ t.palestrante.add(up)
+ ok = True
+
+ c = {'form': form, 'ok': ok}
+ return build_response(request, 'inscrever_palestra.html', c)
+
+
+@login_required
+@user_passes_test(lambda u:u.palestrante_set.count() == 1, login_url='/')
+def meus_trabalhos(request):
+ 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)
+
+ t = Trabalho.objects.filter(palestrante=p)
+ c = {'trabalhos': t, 'palestrante': 1}
+ return build_response(request, 'meus_trabalhos.html', c)
+
+
+@login_required
+def meus_dados(request):
+ form = EditarPalestrante(request.POST or None)
+ palestrante = request.user.palestrante_set.get()
+ ok = False
+
+ for name, field in form.fields.items():
+ field.initial = getattr(palestrante, name)
+
+ if request.POST and form.is_valid():
+ cd = form.cleaned_data
+ for name, field in form.fields.items():
+ setattr(palestrante, name, cd[name])
+ palestrante.save()
+ ok = True
+
+ c = {'form': form, 'ok': ok}
+ return build_response(request, 'editar_palestrante.html', c)
+
+
+@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')