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, 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.auth.password_validation import validate_password
from django.contrib.contenttypes.models import ContentType 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
@ -29,15 +28,8 @@ from sapl.utils import (RANGE_ANOS, ChoiceWithoutValidationField,
from .models import AppConfig, CasaLegislativa 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 = [ ACTION_CREATE_USERS_AUTOR_CHOICE = [
('C', _('Criar novo Usuário')),
('A', _('Associar um usuário existente')), ('A', _('Associar um usuário existente')),
('N', _('Autor sem Usuário de Acesso ao Sapl')), ('N', _('Autor sem Usuário de Acesso ao Sapl')),
] ]
@ -256,42 +248,7 @@ class AutorForm(ModelForm):
if self.instance.user: if self.instance.user:
qs_user = qs_user.exclude(pk=self.instance.user.pk) qs_user = qs_user.exclude(pk=self.instance.user.pk)
if cd['action_user'] == 'C': if cd['action_user'] == 'A':
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':
param_username = {get_user_model().USERNAME_FIELD: cd['username']} param_username = {get_user_model().USERNAME_FIELD: cd['username']}
if not User.objects.filter(**param_username).exists(): if not User.objects.filter(**param_username).exists():
raise ValidationError( raise ValidationError(
@ -362,22 +319,7 @@ class AutorForm(ModelForm):
if not u.is_active: if not u.is_active:
u.is_active = settings.DEBUG u.is_active = settings.DEBUG
u.save() 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 autor.user = u
if not autor.tipo.content_type: 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 logging
import sys import sys
from collections import OrderedDict
from datetime import timedelta
from braces.views import FormMessagesMixin from braces.views import FormMessagesMixin
from django import forms 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.shortcuts import get_object_or_404, redirect
from django.utils.dateparse import parse_date from django.utils.dateparse import parse_date
from django.utils.encoding import force_text 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 ugettext_lazy as _
from django.utils.translation import string_concat
from django.views.generic.base import TemplateView from django.views.generic.base import TemplateView
from django.views.generic.detail import DetailView from django.views.generic.detail import DetailView
from django.views.generic.edit import (CreateView, DeleteView, FormView, 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.crud.base import Crud, CrudListView, make_pagination
from sapl.settings import BASE_DIR from sapl.settings import BASE_DIR
TipoNotaCrud = Crud.build(TipoNota, 'tipo_nota') TipoNotaCrud = Crud.build(TipoNota, 'tipo_nota')
TipoVideCrud = Crud.build(TipoVide, 'tipo_vide') TipoVideCrud = Crud.build(TipoVide, 'tipo_vide')
TipoPublicacaoCrud = Crud.build(TipoPublicacao, 'tipo_publicacao') TipoPublicacaoCrud = Crud.build(TipoPublicacao, 'tipo_publicacao')

60
sapl/parlamentares/forms.py

@ -275,44 +275,23 @@ class FrenteForm(ModelForm):
class VotanteForm(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( username = forms.CharField(
label=_('Usuário'), label=_('Usuário'),
required=True, required=True,
max_length=30) max_length=30)
email = forms.EmailField(
required=True,
label=_('Email'))
email_confirma = forms.EmailField(
required=True,
label=_('Confirmar Email'))
class Meta: class Meta:
model = Votante model = Votante
fields = ['username', 'senha', 'senha_confirma', 'email', fields = ['username']
'email_confirma']
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
row1 = to_row([('username', 4), ('senha', 4), ('senha_confirma', 4)]) row1 = to_row([('username', 4)])
row2 = to_row([('email', 6), ('email_confirma', 6)])
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
Fieldset(_('Votante'), Fieldset(_('Votante'),
row1, row2, form_actions(save_label='Salvar')) row1, form_actions(save_label='Salvar'))
) )
super(VotanteForm, self).__init__(*args, **kwargs) super(VotanteForm, self).__init__(*args, **kwargs)
@ -327,23 +306,19 @@ class VotanteForm(ModelForm):
cd = self.cleaned_data cd = self.cleaned_data
username = cd['username'] username = cd['username']
if get_user_model().objects.filter(username=username).exists(): user = get_user_model().objects.filter(username=username)
raise ValidationError(_('Não foi possível salvar registro,\ if not user.exists():
pois usuário existente'))
if ('senha' not in cd or 'senha_confirma' not in cd or
not cd['senha'] or not cd['senha_confirma']):
raise ValidationError(_( raise ValidationError(_(
'A senha e sua confirmação devem ser informadas.')) "{} [{}] {}".format(
msg = _('As senhas não conferem.') 'Não foi possível vincular usuário. Usuário',
self.valida_igualdade(cd['senha'], cd['senha_confirma'], msg) username,
'não existe')))
if ('email' not in cd or 'email_confirma' not in cd or if Votante.objects.filter(user=user[0].pk).exists():
not cd['email'] or not cd['email_confirma']):
raise ValidationError(_( raise ValidationError(_(
'O email e sua confirmação devem ser informados.')) "{} [{}] {}".format(
msg = _('Os emails não conferem.') 'Não foi possível vincular usuário. Usuário',
self.valida_igualdade(cd['email'], cd['email_confirma'], msg) username,
'já esta vinculado à outro parlamentar')))
return self.cleaned_data return self.cleaned_data
@ -352,12 +327,7 @@ class VotanteForm(ModelForm):
votante = super(VotanteForm, self).save(commit) votante = super(VotanteForm, self).save(commit)
# Cria user # Cria user
u = User.objects.create( u = User.objects.get(username=self.cleaned_data['username'])
username=self.cleaned_data['username'],
email=self.cleaned_data['email'])
u.set_password(self.cleaned_data['senha'])
u.save()
# Adiciona user ao grupo # Adiciona user ao grupo
g = Group.objects.filter(name=SAPL_GROUP_VOTANTE)[0] g = Group.objects.filter(name=SAPL_GROUP_VOTANTE)[0]
u.groups.add(g) u.groups.add(g)

3
sapl/parlamentares/views.py

@ -66,8 +66,7 @@ class VotanteView(MasterDetailCrud):
def delete(self, *args, **kwargs): def delete(self, *args, **kwargs):
obj = self.get_object() obj = self.get_object()
if obj.user: obj.delete()
obj.user.delete()
return HttpResponseRedirect( return HttpResponseRedirect(
reverse('sapl.parlamentares:votante_list', reverse('sapl.parlamentares:votante_list',
kwargs={'pk': obj.parlamentar.pk})) 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', ''); $('#div_id_username input').prop('readonly', '');
if (event.target.value == 'C') { if (event.target.value == 'N') {
$('.new_user_fields, #div_id_username').removeClass('hidden');
$('input[name=username]').val('');
}
else if (event.target.value == 'N') {
$('.new_user_fields').addClass('hidden'); $('.new_user_fields').addClass('hidden');
if ($('input[name=username]').attr('data') != '') if ($('input[name=username]').attr('data') != '')
$('.radiogroup-status').removeClass('hidden'); $('.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"> <div class="actions btn-group pull-right btn-group-lg" role="group">
{% if view.create_url %} {% if view.create_url %}
<a href="{{ view.create_url }}" class="btn btn-default"> <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> </a>
{% endif %} {% endif %}
{% block more_buttons %}{% endblock more_buttons %} {% block more_buttons %}{% endblock more_buttons %}

Loading…
Cancel
Save