Commits

Francisco Souza committed cc71c14

Versão praticamente final da página de cadastro.

Também foram efetuados alguns ajustes no layout da aplicação.

Comments (0)

Files changed (6)

 from models import Aluno
 from util.validacoes import validar_cpf
 
-class CPFField(forms.CharField):
-    def clean(self, value):
-        if not value:
-            raise forms.ValidationError('Este campo é obrigatório.')
-        cpf = value.replace('.', '').replace('-', '')
-        if not validar_cpf(cpf):
-            raise forms.ValidationError('Você deve digitar um CPF válido.')
-
 class AlunoForm(forms.ModelForm):
     class Meta:
         model = Aluno
         fields = ('username', 'first_name', 'last_name', 'email', 'password')
 
-    cpf = CPFField(max_length = 15, widget = forms.TextInput())
+    cpf = forms.CharField(max_length = 15, widget = forms.TextInput())
     password = forms.CharField(max_length = 16, min_length = 4, widget = forms.PasswordInput, label = 'Senha')
     confirmacao_senha = forms.CharField(max_length = 16, min_length = 4, widget = forms.PasswordInput)
 
+    def clean_cpf(self):
+        self.cleaned_data['cpf'] = self.cleaned_data['cpf'].replace('.', '').replace('-', '')
+        if not validar_cpf(self.cleaned_data['cpf']):
+            raise forms.ValidationError('Você deve digitar um CPF válido.')
+
+        if Aluno.objects.filter(cpf = self.cleaned_data['cpf']).count() > 0:
+            raise forms.ValidationError('Este CPF já está cadastrado.')
+
+        return self.cleaned_data['cpf']
+
     def clean_username(self):
         if User.objects.filter(username = self.cleaned_data['username']).count() > 0:
             raise forms.ValidationError('Já existe um usuário com este login.')
     def save(self, commit = True):
         aluno = super(AlunoForm, self).save(commit = False)
         aluno.set_password(self.cleaned_data['password'])
+        aluno.cpf = self.cleaned_data['cpf']
 
         if commit:
             aluno.save()
         verbose_name = gettext_lazy('Aluno')
         verbose_name_plural = gettext_lazy('Alunos')
 
-    cpf = models.CharField(max_length = 11)
+    cpf = models.CharField(max_length = 11, unique = True)
 
     def __unicode__(self):
         return self.username
 	font-weight: bold;
 }
 
+#mensagem_usuario {
+	text-align: right;
+	color: #777;
+	font-size: 11px;
+}
+
 .divAfastada {
 	margin-right: 20em;
 }
+
+.table_form {
+	width: 70%;
+	margin-left: 6em;
+}
+
+.label_table_form {
+	text-align: right;
+}
+
+.wid_table_form {
+	text-align: left;
+}

templates/cursos.html

 {% block conteudo %}
     <p>Veja abaixo uma lista de cursos. Para visualizar detalhes de um curso, clique sobre o mesmo.
     Você deve estar autenticado para visualizar os detalhes dos cursos.</p>
+    {% if not cursos %}
+        <p>Nenhum curso cadastrado.</p>
+    {% endif %}
     <ul>
         {% for curso in cursos %}
             <li><a href="{{ curso.get_url }}">{{ curso.titulo }}</a> (instrutor: {{ curso.instrutor.nome }});</li>

templates/super.html

             {% endblock menu %}
         </div>
         
+        {% if user.is_authenticated %}
+            <div id="mensagem_usuario">
+                Seja-bem vindo {{ user.first_name }} {{ user.last_name }}.
+            </div>
+        {% endif %}
+        
         <div id="topo">
             {% block topo %}
             {% endblock topo %}
     (r'^$', 'views.bemvindo'),
     (r'^cursos/', include('cursos.urls')),
     (r'^media/(.*)$', 'django.views.static.serve', { 'document_root' : settings.MEDIA_ROOT }),
-    (r'^login/$', 'django.contrib.auth.views.login', { 'template_name' : os.path.join(dir, 'templates/login.html')}),
-    (r'^logout/$', 'django.contrib.auth.views.logout'),
+    (r'^login/$', 'django.contrib.auth.views.login', { 'template_name' : 'login.html'}),
+    (r'^logout/$', 'django.contrib.auth.views.logout', { 'template_name' : 'logout.html'}),
 )