From c600e698ca673428d21057cbb72d07ac68dd827b Mon Sep 17 00:00:00 2001 From: Eliseu Egewarth Date: Tue, 22 Aug 2017 10:49:35 -0300 Subject: [PATCH] Fix #1370 remove criacao user de autor e votante (#1417) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix #1370 Remove Criação de usuário das telas de Autor e Votante Signed-off-by: Eliseu Egewarth * Minor QA Fix. Fix import ordering and remove unused import Signed-off-by: Eliseu Egewarth --- sapl/base/forms.py | 60 +------------------ sapl/compilacao/views.py | 7 +-- sapl/parlamentares/forms.py | 60 +++++-------------- sapl/parlamentares/views.py | 3 +- sapl/templates/base/autor_form.html | 6 +- .../templates/parlamentares/votante_list.html | 2 +- 6 files changed, 22 insertions(+), 116 deletions(-) diff --git a/sapl/base/forms.py b/sapl/base/forms.py index 13880703c..3a751b64a 100644 --- a/sapl/base/forms.py +++ b/sapl/base/forms.py @@ -8,7 +8,6 @@ from django.contrib.auth import get_user_model from django.contrib.auth.forms import (AuthenticationForm, PasswordResetForm, SetPasswordForm) from django.contrib.auth.models import Group, User -from django.contrib.auth.password_validation import validate_password from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.db import models, transaction @@ -29,15 +28,8 @@ from sapl.utils import (RANGE_ANOS, ChoiceWithoutValidationField, from .models import AppConfig, CasaLegislativa -ACTION_CREATE_USERS_AUTOR_CHOICE = [ - ('C', _('Criar novo Usuário')), - ('A', _('Associar um usuário existente')), - ('N', _('Autor sem Usuário de Acesso ao Sapl')), -] - ACTION_CREATE_USERS_AUTOR_CHOICE = [ - ('C', _('Criar novo Usuário')), ('A', _('Associar um usuário existente')), ('N', _('Autor sem Usuário de Acesso ao Sapl')), ] @@ -256,42 +248,7 @@ class AutorForm(ModelForm): if self.instance.user: qs_user = qs_user.exclude(pk=self.instance.user.pk) - if cd['action_user'] == 'C': - param_username = {get_user_model().USERNAME_FIELD: cd['username']} - if User.objects.filter(**param_username).exists(): - raise ValidationError( - _('Já existe usuário com o username "%s". ' - 'Para utilizar esse username você deve selecionar ' - '"Associar um usuário existente".') % cd['username']) - - if ('senha' not in cd or 'senha_confirma' not in cd or - not cd['senha'] or not cd['senha_confirma']): - raise ValidationError(_( - 'A senha e sua confirmação devem ser informadas.')) - msg = _('As senhas não conferem.') - self.valida_igualdade(cd['senha'], cd['senha_confirma'], msg) - - try: - validate_password(self.cleaned_data['senha']) - except ValidationError as error: - raise ValidationError(error) - - if ('email' not in cd or 'confirma_email' not in cd or - not cd['email'] or not cd['confirma_email']): - raise ValidationError(_( - 'O email e sua confirmação devem ser informados.')) - msg = _('Os emails não conferem.') - self.valida_igualdade(cd['email'], cd['confirma_email'], msg) - - if not settings.DEBUG: - if qs_user.filter(email=cd['email']).exists(): - raise ValidationError(_('Este email já foi cadastrado.')) - - if qs_autor.filter(user__email=cd['email']).exists(): - raise ValidationError( - _('Já existe um Autor com este email.')) - - elif cd['action_user'] == 'A': + if cd['action_user'] == 'A': param_username = {get_user_model().USERNAME_FIELD: cd['username']} if not User.objects.filter(**param_username).exists(): raise ValidationError( @@ -362,22 +319,7 @@ class AutorForm(ModelForm): if not u.is_active: u.is_active = settings.DEBUG u.save() - elif self.cleaned_data['action_user'] == 'C': - - param_username = { - get_user_model().USERNAME_FIELD: self.cleaned_data['username']} - - if get_user_model().USERNAME_FIELD != 'email': - param_username['email'] = self.cleaned_data['email'] - - u = get_user_model().objects.create(**param_username) - u.set_password(self.cleaned_data['senha']) - # Define usuário como ativo em ambiente de desenvolvimento - # pode logar sem a necessidade de passar pela validação de email - # troque par False para testar o envio de email em desenvolvimento - u.is_active = settings.DEBUG - u.save() autor.user = u if not autor.tipo.content_type: diff --git a/sapl/compilacao/views.py b/sapl/compilacao/views.py index e30e047ff..2096f9cb0 100644 --- a/sapl/compilacao/views.py +++ b/sapl/compilacao/views.py @@ -1,7 +1,7 @@ -from collections import OrderedDict -from datetime import timedelta import logging import sys +from collections import OrderedDict +from datetime import timedelta from braces.views import FormMessagesMixin from django import forms @@ -19,8 +19,8 @@ from django.http.response import (HttpResponse, HttpResponseRedirect, from django.shortcuts import get_object_or_404, redirect from django.utils.dateparse import parse_date from django.utils.encoding import force_text -from django.utils.translation import string_concat from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import string_concat from django.views.generic.base import TemplateView from django.views.generic.detail import DetailView from django.views.generic.edit import (CreateView, DeleteView, FormView, @@ -50,7 +50,6 @@ from sapl.compilacao.utils import (DISPOSITIVO_SELECT_RELATED, from sapl.crud.base import Crud, CrudListView, make_pagination from sapl.settings import BASE_DIR - TipoNotaCrud = Crud.build(TipoNota, 'tipo_nota') TipoVideCrud = Crud.build(TipoVide, 'tipo_vide') TipoPublicacaoCrud = Crud.build(TipoPublicacao, 'tipo_publicacao') diff --git a/sapl/parlamentares/forms.py b/sapl/parlamentares/forms.py index 63a1bb0d9..e6cac615e 100644 --- a/sapl/parlamentares/forms.py +++ b/sapl/parlamentares/forms.py @@ -275,44 +275,23 @@ class FrenteForm(ModelForm): class VotanteForm(ModelForm): - senha = forms.CharField( - max_length=20, - label=_('Senha'), - required=True, - widget=forms.PasswordInput()) - - senha_confirma = forms.CharField( - max_length=20, - label=_('Confirmar Senha'), - required=True, - widget=forms.PasswordInput()) username = forms.CharField( label=_('Usuário'), required=True, max_length=30) - email = forms.EmailField( - required=True, - label=_('Email')) - - email_confirma = forms.EmailField( - required=True, - label=_('Confirmar Email')) - class Meta: model = Votante - fields = ['username', 'senha', 'senha_confirma', 'email', - 'email_confirma'] + fields = ['username'] def __init__(self, *args, **kwargs): - row1 = to_row([('username', 4), ('senha', 4), ('senha_confirma', 4)]) - row2 = to_row([('email', 6), ('email_confirma', 6)]) + row1 = to_row([('username', 4)]) self.helper = FormHelper() self.helper.layout = Layout( Fieldset(_('Votante'), - row1, row2, form_actions(save_label='Salvar')) + row1, form_actions(save_label='Salvar')) ) super(VotanteForm, self).__init__(*args, **kwargs) @@ -327,23 +306,19 @@ class VotanteForm(ModelForm): cd = self.cleaned_data username = cd['username'] - if get_user_model().objects.filter(username=username).exists(): - raise ValidationError(_('Não foi possível salvar registro,\ - pois usuário existente')) - - if ('senha' not in cd or 'senha_confirma' not in cd or - not cd['senha'] or not cd['senha_confirma']): + user = get_user_model().objects.filter(username=username) + if not user.exists(): raise ValidationError(_( - 'A senha e sua confirmação devem ser informadas.')) - msg = _('As senhas não conferem.') - self.valida_igualdade(cd['senha'], cd['senha_confirma'], msg) - - if ('email' not in cd or 'email_confirma' not in cd or - not cd['email'] or not cd['email_confirma']): + "{} [{}] {}".format( + 'Não foi possível vincular usuário. Usuário', + username, + 'não existe'))) + if Votante.objects.filter(user=user[0].pk).exists(): raise ValidationError(_( - 'O email e sua confirmação devem ser informados.')) - msg = _('Os emails não conferem.') - self.valida_igualdade(cd['email'], cd['email_confirma'], msg) + "{} [{}] {}".format( + 'Não foi possível vincular usuário. Usuário', + username, + 'já esta vinculado à outro parlamentar'))) return self.cleaned_data @@ -352,12 +327,7 @@ class VotanteForm(ModelForm): votante = super(VotanteForm, self).save(commit) # Cria user - u = User.objects.create( - username=self.cleaned_data['username'], - email=self.cleaned_data['email']) - u.set_password(self.cleaned_data['senha']) - u.save() - + u = User.objects.get(username=self.cleaned_data['username']) # Adiciona user ao grupo g = Group.objects.filter(name=SAPL_GROUP_VOTANTE)[0] u.groups.add(g) diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py index 2890dc384..46a6dc7d4 100644 --- a/sapl/parlamentares/views.py +++ b/sapl/parlamentares/views.py @@ -66,8 +66,7 @@ class VotanteView(MasterDetailCrud): def delete(self, *args, **kwargs): obj = self.get_object() - if obj.user: - obj.user.delete() + obj.delete() return HttpResponseRedirect( reverse('sapl.parlamentares:votante_list', kwargs={'pk': obj.parlamentar.pk})) diff --git a/sapl/templates/base/autor_form.html b/sapl/templates/base/autor_form.html index ec7ddfe7e..b5c16fd9f 100644 --- a/sapl/templates/base/autor_form.html +++ b/sapl/templates/base/autor_form.html @@ -95,11 +95,7 @@ $(document).ready(function(){ $('#div_id_username input').prop('readonly', ''); - if (event.target.value == 'C') { - $('.new_user_fields, #div_id_username').removeClass('hidden'); - $('input[name=username]').val(''); - } - else if (event.target.value == 'N') { + if (event.target.value == 'N') { $('.new_user_fields').addClass('hidden'); if ($('input[name=username]').attr('data') != '') $('.radiogroup-status').removeClass('hidden'); diff --git a/sapl/templates/parlamentares/votante_list.html b/sapl/templates/parlamentares/votante_list.html index 8c9847846..58756f6be 100644 --- a/sapl/templates/parlamentares/votante_list.html +++ b/sapl/templates/parlamentares/votante_list.html @@ -7,7 +7,7 @@