Browse Source

Fix #1370 remove criacao user de autor e votante (#1417)

* Fix #1370 Remove Criação de usuário das telas de Autor e Votante

Signed-off-by: Eliseu Egewarth <eliseuegewarth@gmail.com>

* Minor QA Fix. Fix import ordering and remove unused import

Signed-off-by: Eliseu Egewarth <eliseuegewarth@gmail.com>
pull/1425/head
Eliseu Egewarth 8 years ago
committed by Edward
parent
commit
c600e698ca
  1. 60
      sapl/base/forms.py
  2. 7
      sapl/compilacao/views.py
  3. 60
      sapl/parlamentares/forms.py
  4. 3
      sapl/parlamentares/views.py
  5. 6
      sapl/templates/base/autor_form.html
  6. 2
      sapl/templates/parlamentares/votante_list.html

60
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:

7
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')

60
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)

3
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}))

6
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');

2
sapl/templates/parlamentares/votante_list.html

@ -7,7 +7,7 @@
<div class="actions btn-group pull-right btn-group-lg" role="group">
{% if view.create_url %}
<a href="{{ view.create_url }}" class="btn btn-default">
{% blocktrans with verbose_name=view.verbose_name %} Adicionar {{ verbose_name }} {% endblocktrans %}
{% blocktrans with verbose_name=view.verbose_name %} Vincular {{ verbose_name }} {% endblocktrans %}
</a>
{% endif %}
{% block more_buttons %}{% endblock more_buttons %}

Loading…
Cancel
Save