Terminando o cadastro de inscrições de caravanas
[cascardo/eventmanager.git] / views.py
index b6d3471..97da703 100644 (file)
--- a/views.py
+++ b/views.py
@@ -204,11 +204,62 @@ def inscricao_individual(request):
 
 
 @enable_login_form
+@transaction.commit_manually
 def inscricao_caravana(request):
-    form_coordenador = InscricaoCoordenador(request.POST or None)
     form = InscricaoCaravana(request.POST or None)
-    return build_response(request, 'inscricao_caravana.html',
-        {'form_coordenador': form_coordenador, 'form': form})
+    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
+
+        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