Browse Source

Muda form, template, e view

pull/1652/head
Edward Ribeiro 8 years ago
parent
commit
597f905511
  1. 86
      sapl/base/forms.py
  2. 2
      sapl/base/urls.py
  3. 23
      sapl/base/views.py
  4. 1
      sapl/templates/base.html
  5. 12
      sapl/templates/base/alterar_senha.html
  6. 1
      sapl/templates/base/alterar_senha_form.html

86
sapl/base/forms.py

@ -7,10 +7,9 @@ from django.contrib.auth import get_user_model
from django.contrib.auth.forms import (AuthenticationForm, PasswordResetForm, from django.contrib.auth.forms import (AuthenticationForm, PasswordResetForm,
SetPasswordForm) SetPasswordForm)
from django.contrib.auth.models import Group, User from django.contrib.auth.models import Group, User
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.db import models, transaction from django.db import models, transaction
from django.forms import ModelForm from django.forms import ModelForm, Form
from django.utils.translation import string_concat from django.utils.translation import string_concat
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
@ -714,19 +713,70 @@ class NovaSenhaForm(SetPasswordForm):
row1, row1,
form_actions(label='Enviar')) form_actions(label='Enviar'))
class AlterarSenhaForm(forms.Form):
new_password1 = forms.PasswordInput() class AlterarSenhaForm(Form):
new_password2 = forms.PasswordInput()
username = forms.CharField(widget=forms.HiddenInput())
# def __init__(self, *args, **kwargs):
# old_password = forms.CharField(label='Senha atual',
# super(AlterarSenhaForm, self).__init__(*args, **kwargs) max_length=50,
# widget=forms.PasswordInput())
# row1 = to_row( new_password1 = forms.CharField(label='Nova senha',
# [('new_password1', 6), max_length=50,
# ('new_password2', 6)]) widget=forms.PasswordInput())
# new_password2 = forms.CharField(label='Confirmar senha',
# self.helper = FormHelper() max_length=50,
# self.helper.layout = Layout( widget=forms.PasswordInput())
# row1,
# form_actions(label='Alterar'))
class Meta:
fields = ['username', 'old_password', 'new_password1', 'new_password2']
def __init__(self, *args, **kwargs):
super(AlterarSenhaForm, self).__init__(*args, **kwargs)
row1 = to_row([('old_password', 12)])
row2 = to_row(
[('new_password1', 6),
('new_password2', 6)])
self.helper = FormHelper()
self.helper.layout = Layout(
row1,
row2,
form_actions(label='Alterar Senha'))
def clean(self):
super(AlterarSenhaForm, self).clean()
data = self.cleaned_data
new_password1 = data['new_password1']
new_password2 = data['new_password2']
if new_password1 != new_password2:
raise ValidationError("'Nova Senha' diferente de 'Confirmar Senha'")
# TODO: colocar mais regras como: tamanho mínimo,
# TODO: caracteres alfanuméricos, maiúsculas (?),
# TODO: senha atual igual a senha anterior, etc
if len(new_password1) < 6:
raise ValidationError("A senha informada deve ter no mínimo 6 caracteres")
username = data['username']
old_password = data['old_password']
user = User.objects.get(username=username)
if user.is_anonymous():
raise ValidationError("Não é possível alterar senha de usuário anônimo")
if not user.check_password(old_password):
raise ValidationError("Senha atual informada não confere "
"com a senha armazenada")
if user.check_password(new_password1):
raise ValidationError("Nova senha não pode ser igual à senha anterior")
return self.cleaned_data

2
sapl/base/urls.py

@ -21,7 +21,7 @@ from .views import (AppConfigCrud, CasaLegislativaCrud, HelpTopicView,
app_name = AppConfig.name app_name = AppConfig.name
alterar_senha = [ alterar_senha = [
url(r'^alterar-senha/$', url(r'^sistema/alterar-senha/$',
AlterarSenha.as_view(), AlterarSenha.as_view(),
name='alterar_senha'), name='alterar_senha'),

23
sapl/base/views.py

@ -605,9 +605,24 @@ class SaplSearchView(SearchView):
return context return context
class AlterarSenha(FormView): class AlterarSenha(FormView):
from sapl.settings import LOGIN_URL
form_class = AlterarSenhaForm form_class = AlterarSenhaForm
template_name = 'base/alterar_senha_form.html' template_name = 'base/alterar_senha.html'
def post(self, request, *args, **kwargs): success_url = LOGIN_URL
self.get_form()
return self.get(request, *args, **kwargs) def get_initial(self):
initial = super(AlterarSenha, self).get_initial()
initial['username'] = self.request.user
return initial
def form_valid(self, form):
new_password = form.cleaned_data['new_password1']
user = self.request.user
user.set_password(new_password)
user.save()
return super().form_valid(form)

1
sapl/templates/base.html

@ -69,6 +69,7 @@
Votar Matéria Votar Matéria
</a></li> </a></li>
{% endif %} {% endif %}
<li><a href="{% url 'sapl.base:alterar_senha' %}">Alterar senha</a></li>
<li><a href="{% url 'sapl.base:logout' %}">Sair</a></li> <li><a href="{% url 'sapl.base:logout' %}">Sair</a></li>
</ul> </ul>
</li> </li>

12
sapl/templates/base/alterar_senha.html

@ -0,0 +1,12 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %}{% endblock %}
{% block detail_content %}
<h1>Alterar Senha</h1>
{% crispy form %}
</br>
Atenção, a mudança de senha fará com que o usuário atual seja deslogado do sistema.</br>
Favor entrar novamente com a nova senha após a mudança com sucesso.
{% endblock detail_content %}

1
sapl/templates/base/alterar_senha_form.html

@ -1 +0,0 @@
{% extends "crud/form.html" %}
Loading…
Cancel
Save