Terminando o cadastro de inscrições de caravanas
[cascardo/eventmanager.git] / views.py
index bf5db99..97da703 100644 (file)
--- a/views.py
+++ b/views.py
@@ -51,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))
@@ -74,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...
@@ -133,7 +135,8 @@ def cadastro_palestrante(request):
                     t.render(c), FROM_EMAIL, [email])
                 m.send()
             except Exception:
-                badattr['email'] = ['Não pude enviar o email de confirmação']
+                badattr['email'] = \
+                    ['Desculpe mas não pude enviar o email de confirmação']
                 transaction.rollback()
             else:
                 ok = True
@@ -145,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
@@ -206,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)
@@ -231,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)