bairro = models.CharField(maxlength=100)
cidade = models.CharField(maxlength=100)
uf = models.CharField(maxlength=3)
+ usuario = models.ForeignKey(User)
class Admin:
pass
return self.nome
+class Caravana(models.Model):
+ coordenador = models.ForeignKey(Participante)
+ participantes = models.TextField()
+
+ class Admin:
+ pass
+
+ def __str__(self):
+ return str(self.coordenador)
+
+
class CategoriaTrabalho(models.Model):
nome = models.CharField(maxlength=100)
nova_senha_2 = forms.CharField(max_length=100, widget=PasswordInput(),
label='Conferir Senha')
-class InscricaoCaravana(forms.Form):
- lista_nomes = forms.CharField(label='Lista de nomes',
- widget=forms.Textarea(), help_text='Um participante por linha, '
- 'informando nome completo e email no seguine formato: '
- 'Nome Completo <email@server.domain>')
-
class InscricaoBase(forms.Form):
nome_completo = forms.CharField(max_length=100)
rg = forms.CharField(max_length=100)
inscricao_comercial = forms.BooleanField(required=False,
label='Inscrição Comercial')
-class InscricaoCoordenador(InscricaoBase):
- pass
+class InscricaoCaravana(InscricaoBase):
+ lista_nomes = forms.CharField(label='Lista de nomes',
+ widget=forms.Textarea(), help_text='Um participante por linha, '
+ 'informando nome completo e email no seguine formato: '
+ 'Nome Completo <email@server.domain>')
{% if ok %}
<div class="confirmation">
- <p>Cadastro efetuado com sucesso, você já foi autenticado.</p>
+ <p>Cadastro efetuado com sucesso.</p>
</div>
{% else %}
<form id="cadastro" method="post" action=".">
- <h3>Dados do coordenador da caravana</h3>
- {{ form_coordenador.as_p }}
-
- <h3>Dados dos participantes da caravana</h3>
{{ form.as_p }}
<input type="submit" value="Ok" />
@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