Terminando o cadastro de inscrições de caravanas
[cascardo/eventmanager.git] / views.py
index 0ba1092..97da703 100644 (file)
--- a/views.py
+++ b/views.py
@@ -148,22 +148,118 @@ def cadastro_palestrante(request):
 
 @enable_login_form
 def inscricao(request):
-    post = request.POST
-    post2 = 'post2' in post and post or None
+    return build_response(request, 'inscricao.html')
 
-    # 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)
+@enable_login_form
+@transaction.commit_manually
+def inscricao_individual(request):
+    form = Inscricao(request.POST or None)
+    ok = False
+    if request.POST and form.is_valid():
+        cd = form.cleaned_data
+        badattr = form.errors
+        wrong = False
 
-    # primeiro passo...
-    else:
-        form = Inscricao(post or None)
+        # 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.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()
+
+            ok = True
+            transaction.commit()
+    c = {'form': form, 'ok': ok}
+    return build_response(request, 'inscricao_individual.html', c)
+
+
+@enable_login_form
+@transaction.commit_manually
+def inscricao_caravana(request):
+    form = InscricaoCaravana(request.POST or None)
+    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
 
-    return build_response(request, 'inscricao.html', {'form': form})
+        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
@@ -209,16 +305,17 @@ 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):
+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)
+    trabalho = get_object_or_404(Trabalho, id=codigo, palestrante=p)
     Formulario = form_for_instance(trabalho)
     if request.method == 'POST':
         form = Formulario(request.POST)
@@ -234,6 +331,7 @@ def editar_trabalho(request,codigo):
     c = {'formulario':form}
     return build_response(request, 'editar_trabalho.html', c)
 
+
 @login_required
 def meus_dados(request):
     form = EditarPalestrante(request.POST or None)