Browse Source

Merge b38627ac1e into 860d755d63

pull/2307/merge
Cesar Augusto de Carvalho 7 years ago
committed by GitHub
parent
commit
6534e6a27e
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 0
      .coveragerc
  2. 0
      .github/ISSUE_TEMPLATE.md
  3. 0
      .github/PULL_REQUEST_TEMPLATE.md
  4. 1
      .gitignore
  5. 0
      .travis.yml
  6. 0
      .tx/config
  7. 0
      Dockerfile
  8. 0
      LICENSE.txt
  9. 0
      MANIFEST.in
  10. 0
      README.rst
  11. 0
      busy-wait.sh
  12. 0
      codeclimate.yml
  13. 0
      config/env-sample
  14. 0
      config/env_dockerfile
  15. 0
      config/nginx/nginx.conf
  16. 0
      config/nginx/sapl.conf
  17. 0
      conftest.py
  18. 0
      docker-compose.yml
  19. 0
      docker-env.sh
  20. 0
      docs/CODE_OF_CONDUCT.md
  21. 0
      docs/CONTRIBUTING.md
  22. 0
      docs/credits.txt
  23. 0
      docs/deploy.rst
  24. 0
      docs/howtogit.rst
  25. 0
      docs/implementacoes.rst
  26. 0
      docs/instalacao31.rst
  27. 0
      docs/logo_partidos.rst
  28. 0
      docs/logo_partidos/dem.png
  29. 0
      docs/logo_partidos/pdt.png
  30. 0
      docs/logo_partidos/pfl.png
  31. 0
      docs/logo_partidos/phs.png
  32. 0
      docs/logo_partidos/pl.png
  33. 0
      docs/logo_partidos/pmdb.png
  34. 0
      docs/logo_partidos/pmn.png
  35. 0
      docs/logo_partidos/pp.png
  36. 0
      docs/logo_partidos/pps.png
  37. 0
      docs/logo_partidos/prb.png
  38. 0
      docs/logo_partidos/prona.png
  39. 0
      docs/logo_partidos/prp.png
  40. 0
      docs/logo_partidos/prtb.png
  41. 0
      docs/logo_partidos/psb.png
  42. 0
      docs/logo_partidos/psc.png
  43. 0
      docs/logo_partidos/psdb.png
  44. 0
      docs/logo_partidos/psdc.png
  45. 0
      docs/logo_partidos/psl.png
  46. 0
      docs/logo_partidos/psol.png
  47. 0
      docs/logo_partidos/pt.png
  48. 0
      docs/logo_partidos/ptb.png
  49. 0
      docs/logo_partidos/ptc.png
  50. 0
      docs/logo_partidos/ptdob.png
  51. 0
      docs/logo_partidos/ptn.png
  52. 0
      docs/logo_partidos/pv.png
  53. 0
      docs/solr.rst
  54. 0
      docs/traducao.rst
  55. 0
      genkey.py
  56. 0
      media/.gitkeep
  57. 0
      pytest.ini
  58. 0
      requirements/dev-requirements.txt
  59. 0
      requirements/migration-requirements.txt
  60. 0
      requirements/requirements.txt
  61. 0
      requirements/test-requirements.txt
  62. 0
      sapl/.env_test
  63. 0
      sapl/__init__.py
  64. 0
      sapl/api/__init__.py
  65. 0
      sapl/api/admin.py
  66. 0
      sapl/api/apps.py
  67. 5
      sapl/api/forms.py
  68. 0
      sapl/api/pagination.py
  69. 0
      sapl/api/permissions.py
  70. 0
      sapl/api/serializers.py
  71. 0
      sapl/api/urls.py
  72. 11
      sapl/api/views.py
  73. 0
      sapl/audiencia/__init__.py
  74. 0
      sapl/audiencia/admin.py
  75. 0
      sapl/audiencia/apps.py
  76. 12
      sapl/audiencia/forms.py
  77. 0
      sapl/audiencia/migrations/0001_initial.py
  78. 0
      sapl/audiencia/migrations/0002_auto_20180302_0926.py
  79. 0
      sapl/audiencia/migrations/0003_auto_20180302_1111.py
  80. 0
      sapl/audiencia/migrations/0004_auto_20180305_1006.py
  81. 0
      sapl/audiencia/migrations/0005_auto_20180806_1236.py
  82. 0
      sapl/audiencia/migrations/0006_auto_20180808_0856.py
  83. 0
      sapl/audiencia/migrations/__init__.py
  84. 0
      sapl/audiencia/models.py
  85. 0
      sapl/audiencia/tests/test_audiencia.py
  86. 0
      sapl/audiencia/urls.py
  87. 0
      sapl/audiencia/views.py
  88. 0
      sapl/base/__init__.py
  89. 0
      sapl/base/admin.py
  90. 0
      sapl/base/apps.py
  91. 0
      sapl/base/email_utils.py
  92. 56
      sapl/base/forms.py
  93. 0
      sapl/base/legacy.yaml
  94. 0
      sapl/base/migrations/0001_initial.py
  95. 0
      sapl/base/migrations/0002_auto_20170331_1900.py
  96. 0
      sapl/base/migrations/0003_auto_20170519_1106.py
  97. 0
      sapl/base/migrations/0004_auto_20170714_1838.py
  98. 0
      sapl/base/migrations/0005_auto_20170802_1428.py
  99. 0
      sapl/base/migrations/0006_auto_20170802_1908.py
  100. 0
      sapl/base/migrations/0007_auto_20170808_0850.py

0
.coveragerc

0
.github/ISSUE_TEMPLATE.md

0
.github/PULL_REQUEST_TEMPLATE.md

1
.gitignore

@ -87,6 +87,7 @@ target/
*.sublime-workspace
.ipynb_checkpoints/
*.ipynb
.vscode/*
# specific to this project

0
.travis.yml

0
.tx/config

0
Dockerfile

0
LICENSE.txt

0
MANIFEST.in

0
README.rst

0
busy-wait.sh

0
codeclimate.yml

0
config/env-sample

0
config/env_dockerfile

0
config/nginx/nginx.conf

0
config/nginx/sapl.conf

0
conftest.py

0
docker-compose.yml

0
docker-env.sh

0
docs/CODE_OF_CONDUCT.md

0
docs/CONTRIBUTING.md

0
docs/credits.txt

0
docs/deploy.rst

0
docs/howtogit.rst

0
docs/implementacoes.rst

0
docs/instalacao31.rst

0
docs/logo_partidos.rst

0
docs/logo_partidos/dem.png

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

0
docs/logo_partidos/pdt.png

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

0
docs/logo_partidos/pfl.png

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

0
docs/logo_partidos/phs.png

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

0
docs/logo_partidos/pl.png

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

0
docs/logo_partidos/pmdb.png

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

0
docs/logo_partidos/pmn.png

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

0
docs/logo_partidos/pp.png

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

0
docs/logo_partidos/pps.png

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

0
docs/logo_partidos/prb.png

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

0
docs/logo_partidos/prona.png

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

0
docs/logo_partidos/prp.png

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

0
docs/logo_partidos/prtb.png

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

0
docs/logo_partidos/psb.png

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

0
docs/logo_partidos/psc.png

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

0
docs/logo_partidos/psdb.png

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

0
docs/logo_partidos/psdc.png

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

0
docs/logo_partidos/psl.png

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

0
docs/logo_partidos/psol.png

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

0
docs/logo_partidos/pt.png

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

0
docs/logo_partidos/ptb.png

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

0
docs/logo_partidos/ptc.png

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

0
docs/logo_partidos/ptdob.png

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

0
docs/logo_partidos/ptn.png

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

0
docs/logo_partidos/pv.png

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

0
docs/solr.rst

0
docs/traducao.rst

0
genkey.py

0
media/.gitkeep

0
pytest.ini

0
requirements/dev-requirements.txt

0
requirements/migration-requirements.txt

0
requirements/requirements.txt

0
requirements/test-requirements.txt

0
sapl/.env_test

0
sapl/__init__.py

0
sapl/api/__init__.py

0
sapl/api/admin.py

0
sapl/api/apps.py

5
sapl/api/forms.py

@ -1,3 +1,5 @@
import logging
from django.db.models import Q
from django.forms.fields import CharField, MultiValueField
from django.forms.widgets import MultiWidget, TextInput
@ -135,9 +137,12 @@ class AutoresPossiveisFilterSet(FilterSet):
return queryset
def filter_tipo(self, queryset, value):
logger = logging.getLogger(__name__)
try:
logger.info("- Tentando obter Tipo de Autor correspondente.")
tipo = TipoAutor.objects.get(pk=value)
except:
logger.error("- Tipo de Autor inexistente.")
raise serializers.ValidationError(_('Tipo de Autor inexistente.'))
qs = queryset.filter(tipo=tipo)

0
sapl/api/pagination.py

0
sapl/api/permissions.py

0
sapl/api/serializers.py

0
sapl/api/urls.py

11
sapl/api/views.py

@ -1,4 +1,4 @@
import logging
from django.contrib.contenttypes.models import ContentType
from django.db.models import Q
from django.http import Http404
@ -138,14 +138,15 @@ class AutorListView(ListAPIView):
@property
def tr(self):
logger = logging.getLogger(__name__)
try:
tr = int(self.request.GET.get
('tr', AutorListView.TR_AUTOR_CHOICE_SERIALIZER))
if tr not in (AutorListView.TR_AUTOR_CHOICE_SERIALIZER,
AutorListView.TR_AUTOR_SERIALIZER):
return AutorListView.TR_AUTOR_CHOICE_SERIALIZER
except:
except Exception as e:
logger.error("- " + str(e))
return AutorListView.TR_AUTOR_CHOICE_SERIALIZER
return tr
@ -171,6 +172,7 @@ class AutoresProvaveisListView(ListAPIView):
serializer_class = ChoiceSerializer
def get_queryset(self):
logger = logging.getLogger(__name__)
params = {'content_type__isnull': False}
tipo = ''
@ -178,7 +180,8 @@ class AutoresProvaveisListView(ListAPIView):
tipo = int(self.request.GET.get('tipo', ''))
if tipo:
params['id'] = tipo
except:
except Exception as e:
logger.error("- " + str(e))
pass
tipos = TipoAutor.objects.filter(**params)

0
sapl/audiencia/__init__.py

0
sapl/audiencia/admin.py

0
sapl/audiencia/apps.py

12
sapl/audiencia/forms.py

@ -1,3 +1,5 @@
import logging
from django import forms
from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.db import transaction
@ -58,6 +60,8 @@ class AudienciaForm(forms.ModelForm):
def clean(self):
logger = logging.getLogger(__name__)
cleaned_data = super(AudienciaForm, self).clean()
if not self.is_valid():
return cleaned_data
@ -68,21 +72,26 @@ class AudienciaForm(forms.ModelForm):
if materia and ano_materia and tipo_materia:
try:
logger.info("- Tentando obter matéria correspondente.")
materia = MateriaLegislativa.objects.get(
numero=materia,
ano=ano_materia,
tipo=tipo_materia)
except ObjectDoesNotExist:
msg = _('A matéria %s%s/%s não existe no cadastro'
msg = _('- A matéria %s%s/%s não existe no cadastro'
' de matérias legislativas.' % (tipo_materia, materia, ano_materia))
logger.error('- A matéria %s%s/%s não existe no cadastro'
' de matérias legislativas.' % (tipo_materia, materia, ano_materia))
raise ValidationError(msg)
else:
logger.info("- Matéria obtida com sucesso.")
cleaned_data['materia'] = materia
else:
campos = [materia, tipo_materia, ano_materia]
if campos.count(None) + campos.count('') < len(campos):
msg = _('Preencha todos os campos relacionados à Matéria Legislativa')
logger.error('- Algum campo relacionado à Matéria Legislativa não foi preenchido.')
raise ValidationError(msg)
if not cleaned_data['numero']:
@ -99,6 +108,7 @@ class AudienciaForm(forms.ModelForm):
if (self.cleaned_data['hora_fim'] <
self.cleaned_data['hora_inicio']):
msg = _('A hora de fim não pode ser anterior a hora de início')
logger.error('- Hora de fim anterior à hora de início.')
raise ValidationError(msg)
return cleaned_data

0
sapl/audiencia/migrations/0001_initial.py

0
sapl/audiencia/migrations/0002_auto_20180302_0926.py

0
sapl/audiencia/migrations/0003_auto_20180302_1111.py

0
sapl/audiencia/migrations/0004_auto_20180305_1006.py

0
sapl/audiencia/migrations/0005_auto_20180806_1236.py

0
sapl/audiencia/migrations/0006_auto_20180808_0856.py

0
sapl/audiencia/migrations/__init__.py

0
sapl/audiencia/models.py

0
sapl/audiencia/tests/test_audiencia.py

0
sapl/audiencia/urls.py

0
sapl/audiencia/views.py

0
sapl/base/__init__.py

0
sapl/base/admin.py

0
sapl/base/apps.py

0
sapl/base/email_utils.py

56
sapl/base/forms.py

@ -1,4 +1,6 @@
import django_filters
import logging
from crispy_forms.bootstrap import FieldWithButtons, InlineRadios, StrictButton
from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Button, Div, Field, Fieldset, Layout, Row
@ -74,6 +76,7 @@ class UsuarioCreateForm(ModelForm):
'password1', 'password2', 'user_active', 'roles']
def clean(self):
logger = logging.getLogger(__name__)
super(UsuarioCreateForm, self).clean()
if not self.is_valid():
@ -81,6 +84,7 @@ class UsuarioCreateForm(ModelForm):
data = self.cleaned_data
if data['password1'] != data['password2']:
logger.error('- Erro de validação. Senha incorreta.')
raise ValidationError('Senhas informadas são diferentes')
return data
@ -148,6 +152,7 @@ class UsuarioEditForm(ModelForm):
row3)
def clean(self):
logger = logging.getLogger(__name__)
super(UsuarioEditForm, self).clean()
if not self.is_valid():
@ -155,6 +160,7 @@ class UsuarioEditForm(ModelForm):
data = self.cleaned_data
if data['password1'] and data['password1'] != data['password2']:
logger.error('- Erro de validação. Senha incorreta.')
raise ValidationError('Senhas informadas são diferentes')
return data
@ -166,6 +172,7 @@ class SessaoLegislativaForm(ModelForm):
exclude = []
def clean(self):
logger = logging.getLogger(__name__)
cleaned_data = super(SessaoLegislativaForm, self).clean()
if not self.is_valid():
@ -209,20 +216,27 @@ class SessaoLegislativaForm(ModelForm):
ult = 0
if numero <= ult and flag_edit:
logger.error('- O número da Sessão Legislativa é menor ou igual '
'que o de Sessões Legislativas passadas')
raise ValidationError('O número da Sessão Legislativa não pode ser menor ou igual '
'que o de Sessões Legislativas passadas')
if data_inicio < data_inicio_leg or \
data_inicio > data_fim_leg:
logger.error('- A data de início da Sessão Legislativa está compreendida '
'fora da data início e fim da Legislatura selecionada')
raise ValidationError('A data de início da Sessão Legislativa deve estar compreendida '
'entre a data início e fim da Legislatura selecionada')
if data_fim > data_fim_leg or \
data_fim < data_inicio_leg:
logger.error('- A data de fim da Sessão Legislativa está compreendida '
'fora da data início e fim da Legislatura selecionada')
raise ValidationError('A data de fim da Sessão Legislativa deve estar compreendida '
'entre a data início e fim da Legislatura selecionada')
if data_inicio > data_fim:
logger.error('- Data início superior à data fim')
raise ValidationError('Data início não pode ser superior à data fim')
data_inicio_intervalo = cleaned_data['data_inicio_intervalo']
@ -230,6 +244,8 @@ class SessaoLegislativaForm(ModelForm):
if data_inicio_intervalo and data_fim_intervalo and \
data_inicio_intervalo > data_fim_intervalo:
logger.error(' - Data início de intervalo'
'superior à data fim de intervalo')
raise ValidationError('Data início de intervalo não pode ser '
'superior à data fim de intervalo')
@ -238,6 +254,9 @@ class SessaoLegislativaForm(ModelForm):
data_inicio_intervalo < data_inicio_leg or \
data_inicio_intervalo > data_fim or \
data_inicio_intervalo > data_fim_leg:
logger.error('- A data de início do intervalo não está compreendida entre '
'as datas de início e fim tanto da Legislatura quanto da '
'própria Sessão Legislativa')
raise ValidationError('A data de início do intervalo deve estar compreendida entre '
'as datas de início e fim tanto da Legislatura quanto da '
'própria Sessão Legislativa')
@ -246,6 +265,9 @@ class SessaoLegislativaForm(ModelForm):
data_fim_intervalo > data_fim_leg or \
data_fim_intervalo < data_inicio or \
data_fim_intervalo < data_inicio_leg:
logger.error('- A data de fim do intervalo não está compreendida entre '
'as datas de início e fim tanto da Legislatura quanto da '
'própria Sessão Legislativa')
raise ValidationError('A data de fim do intervalo deve estar compreendida entre '
'as datas de início e fim tanto da Legislatura quanto da '
'própria Sessão Legislativa')
@ -410,11 +432,14 @@ class AutorForm(ModelForm):
if self.instance.user else ''})
def valida_igualdade(self, texto1, texto2, msg):
logger = logging.getLogger(__name__)
if texto1 != texto2:
logger.error('- Textos diferentes.')
raise ValidationError(msg)
return True
def clean(self):
logger = logging.getLogger(__name__)
super(AutorForm, self).clean()
if not self.is_valid():
@ -424,6 +449,8 @@ class AutorForm(ModelForm):
cd = self.cleaned_data
if 'action_user' not in cd or not cd['action_user']:
logger.error('- Não Informado se o Autor terá usuário '
'vinculado para acesso ao Sistema.')
raise ValidationError(_('Informe se o Autor terá usuário '
'vinculado para acesso ao Sistema.'))
@ -433,6 +460,9 @@ class AutorForm(ModelForm):
self.instance.user,
get_user_model().USERNAME_FIELD) != cd['username']:
if 'status_user' not in cd or not cd['status_user']:
logger.error('- Foi trocado ou removido o usuário deste Autor, '
'mas não foi informado como se deve proceder '
'com o usuário que está sendo desvinculado?')
raise ValidationError(
_('Foi trocado ou removido o usuário deste Autor, '
'mas não foi informado como se deve proceder '
@ -449,6 +479,7 @@ class AutorForm(ModelForm):
if cd['action_user'] == 'A':
param_username = {get_user_model().USERNAME_FIELD: cd['username']}
if not User.objects.filter(**param_username).exists():
logger.error('- Não existe usuário com username "%s". ' % cd['username'])
raise ValidationError(
_('Não existe usuário com username "%s". '
'Para utilizar esse username você deve selecionar '
@ -457,11 +488,13 @@ class AutorForm(ModelForm):
if cd['action_user'] != 'N':
if 'username' not in cd or not cd['username']:
logger.error('- Username não informado.')
raise ValidationError(_('O username deve ser informado.'))
param_username = {
'user__' + get_user_model().USERNAME_FIELD: cd['username']}
if qs_autor.filter(**param_username).exists():
logger.error('Já existe um Autor para este usuário.')
raise ValidationError(
_('Já existe um Autor para este usuário.'))
@ -471,6 +504,7 @@ class AutorForm(ModelForm):
ainda assim para renderizar um message.danger no topo do form.
"""
if 'tipo' not in cd or not cd['tipo']:
logger.error('Tipo do Autor não selecionado.')
raise ValidationError(
_('O Tipo do Autor deve ser selecionado.'))
@ -478,18 +512,23 @@ class AutorForm(ModelForm):
if not tipo.content_type:
if 'nome' not in cd or not cd['nome']:
logger.error('- Nome do Autor não informado.')
raise ValidationError(
_('O Nome do Autor deve ser informado.'))
else:
if 'autor_related' not in cd or not cd['autor_related']:
logger.error('- Registro de %s não escolhido para ser '
'vinculado ao cadastro de Autor' % tipo.descricao)
raise ValidationError(
_('Um registro de %s deve ser escolhido para ser '
'vinculado ao cadastro de Autor') % tipo.descricao)
if not tipo.content_type.model_class().objects.filter(
pk=cd['autor_related']).exists():
logger.error('O Registro definido (%s-%s) não está na base '
'de %s.' % cd['autor_related'], cd['q'], tipo.descricao)
raise ValidationError(
_('O Registro definido (%s-%s) não está na base de %s.'
_('- O Registro definido (%s-%s) não está na base de %s.'
) % (cd['autor_related'], cd['q'], tipo.descricao))
qs_autor_selected = qs_autor.filter(
@ -497,6 +536,8 @@ class AutorForm(ModelForm):
content_type_id=cd['tipo'].content_type_id)
if qs_autor_selected.exists():
autor = qs_autor_selected.first()
logger.error('- Já existe um autor Cadastrado para '
'%s' % autor.autor_related)
raise ValidationError(
_('Já existe um autor Cadastrado para %s'
) % autor.autor_related)
@ -1000,14 +1041,18 @@ class ConfiguracoesAppForm(ModelForm):
def clean_mostrar_brasao_painel(self):
logger = logging.getLogger(__name__)
mostrar_brasao_painel = self.cleaned_data.get(
'mostrar_brasao_painel', False)
casa = CasaLegislativa.objects.first()
if not casa:
logger.error('- Não há casa legislativa relacionada.')
raise ValidationError("Não há casa legislativa relacionada")
if (not bool(casa.logotipo) and mostrar_brasao_painel):
logger.error('Não há logitipo configurado para esta '
'Casa legislativa.')
raise ValidationError("Não há logitipo configurado para esta "
"Casa legislativa.")
@ -1029,6 +1074,7 @@ class RecuperarSenhaForm(PasswordResetForm):
super(RecuperarSenhaForm, self).__init__(*args, **kwargs)
def clean(self):
logger = logging.getLogger(__name__)
super(RecuperarSenhaForm, self).clean()
if not self.is_valid():
@ -1039,6 +1085,7 @@ class RecuperarSenhaForm(PasswordResetForm):
if not email_existente:
msg = 'Não existe nenhum usuário cadastrado com este e-mail.'
logger.error('- ' + msg)
raise ValidationError(msg)
return self.cleaned_data
@ -1093,6 +1140,7 @@ class AlterarSenhaForm(Form):
form_actions(label='Alterar Senha'))
def clean(self):
logger = logging.getLogger(__name__)
super(AlterarSenhaForm, self).clean()
if not self.is_valid():
@ -1104,6 +1152,7 @@ class AlterarSenhaForm(Form):
new_password2 = data['new_password2']
if new_password1 != new_password2:
logger.error("'Nova Senha' diferente de 'Confirmar Senha'")
raise ValidationError("'Nova Senha' diferente de 'Confirmar Senha'")
# TODO: colocar mais regras como: tamanho mínimo,
@ -1111,6 +1160,7 @@ class AlterarSenhaForm(Form):
# TODO: senha atual igual a senha anterior, etc
if len(new_password1) < 6:
logger.error('- A senha informada não tem o mínimo de 6 caracteres')
raise ValidationError("A senha informada deve ter no mínimo 6 caracteres")
username = data['username']
@ -1118,13 +1168,17 @@ class AlterarSenhaForm(Form):
user = User.objects.get(username=username)
if user.is_anonymous():
logger.error('- Não é possível alterar senha de usuário anônimo')
raise ValidationError("Não é possível alterar senha de usuário anônimo")
if not user.check_password(old_password):
logger.error('Senha atual informada não confere '
'com a senha armazenada')
raise ValidationError("Senha atual informada não confere "
"com a senha armazenada")
if user.check_password(new_password1):
logger.error('Nova senha igual à senha anterior')
raise ValidationError("Nova senha não pode ser igual à senha anterior")
return self.cleaned_data

0
sapl/base/legacy.yaml

0
sapl/base/migrations/0001_initial.py

0
sapl/base/migrations/0002_auto_20170331_1900.py

0
sapl/base/migrations/0003_auto_20170519_1106.py

0
sapl/base/migrations/0004_auto_20170714_1838.py

0
sapl/base/migrations/0005_auto_20170802_1428.py

0
sapl/base/migrations/0006_auto_20170802_1908.py

0
sapl/base/migrations/0007_auto_20170808_0850.py

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save