From 242f7712ed42b1bd82dbb1572703d6a238291869 Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Mon, 26 Sep 2016 09:47:24 -0300 Subject: [PATCH] Subst uso do model User pelo indicado no README --- sapl/materia/forms.py | 12 ++++++---- sapl/materia/models.py | 8 ++++--- sapl/materia/tests/test_materia.py | 10 ++++---- sapl/materia/views.py | 29 +++++++++++++++-------- scripts/inicializa_grupos_autorizacoes.py | 8 ++++--- 5 files changed, 41 insertions(+), 26 deletions(-) diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index c4ddf8658..7f34dba76 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -1,16 +1,17 @@ from datetime import datetime -import django_filters from crispy_forms.helper import FormHelper from crispy_forms.layout import HTML, Button, Column, Fieldset, Layout from django import forms -from django.contrib.auth.models import Group, User +from django.contrib.auth import get_user_model +from django.contrib.auth.models import Group from django.contrib.auth.password_validation import validate_password from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.db import models, transaction from django.db.models import Max from django.forms import ModelForm from django.utils.translation import ugettext_lazy as _ +import django_filters from sapl.comissoes.models import Comissao from sapl.crispy_layout_mixin import form_actions, to_row @@ -25,6 +26,7 @@ from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria, Numeracao, Proposicao, Relatoria, TipoMateriaLegislativa, Tramitacao, UnidadeTramitacao) + ANO_CHOICES = [('', '---------')] + RANGE_ANOS @@ -670,11 +672,11 @@ class AutorForm(ModelForm): return True def valida_email_existente(self): - return User.objects.filter( + return get_user_model().objects.filter( email=self.cleaned_data['email']).exists() def usuario_existente(self): - return User.objects.filter( + return get_user_model().objects.filter( username=self.cleaned_data['username']).exists() def clean(self): @@ -721,7 +723,7 @@ class AutorForm(ModelForm): autor = super(AutorForm, self).save(commit) try: - u = User.objects.get( + u = get_user_model().objects.get( username=autor.username, email=autor.email) except ObjectDoesNotExist: diff --git a/sapl/materia/models.py b/sapl/materia/models.py index ac179f714..50bbd000b 100644 --- a/sapl/materia/models.py +++ b/sapl/materia/models.py @@ -1,4 +1,4 @@ -from django.contrib.auth.models import Group, User +from django.contrib.auth.models import Group from django.db import models from django.utils.translation import ugettext_lazy as _ from model_utils import Choices @@ -6,7 +6,8 @@ from model_utils import Choices from sapl.comissoes.models import Comissao from sapl.parlamentares.models import Parlamentar, Partido from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES, - restringe_tipos_de_arquivo_txt, xstr) + restringe_tipos_de_arquivo_txt, xstr, + get_settings_auth_user_model) def grupo_autor(): @@ -208,7 +209,8 @@ class TipoAutor(models.Model): class Autor(models.Model): - user = models.ForeignKey(User, blank=True, null=True) + user = models.ForeignKey( + get_settings_auth_user_model(), blank=True, null=True) partido = models.ForeignKey(Partido, blank=True, null=True) comissao = models.ForeignKey(Comissao, blank=True, null=True) parlamentar = models.ForeignKey(Parlamentar, blank=True, null=True) diff --git a/sapl/materia/tests/test_materia.py b/sapl/materia/tests/test_materia.py index d3a9573c9..953546c27 100644 --- a/sapl/materia/tests/test_materia.py +++ b/sapl/materia/tests/test_materia.py @@ -1,8 +1,8 @@ -import pytest -from django.contrib.auth.models import User +from django.contrib.auth import get_user_model from django.core.files.uploadedfile import SimpleUploadedFile from django.core.urlresolvers import reverse from model_mommy import mommy +import pytest from sapl.comissoes.models import Comissao, TipoComissao from sapl.materia.models import (Anexada, Autor, Autoria, DespachoInicial, @@ -434,7 +434,7 @@ def test_form_errors_relatoria(admin_client): @pytest.mark.django_db(transaction=False) def test_proposicao_submit(admin_client): tipo_autor = mommy.make(TipoAutor, descricao='Teste Tipo_Autor') - user = User.objects.filter(is_active=True)[0] + user = get_user_model().objects.filter(is_active=True)[0] autor = mommy.make( Autor, @@ -469,7 +469,7 @@ def test_proposicao_submit(admin_client): def test_form_errors_proposicao(admin_client): tipo_autor = mommy.make(TipoAutor, descricao='Teste Tipo_Autor') - user = User.objects.filter(is_active=True)[0] + user = get_user_model().objects.filter(is_active=True)[0] autor = mommy.make( Autor, @@ -484,7 +484,7 @@ def test_form_errors_proposicao(admin_client): {'autor': autor.pk, 'justificativa_devolucao': ' ', 'texto_original': texto, - 'salvar': 'salvar'}, + 'salvar': 'salvar'}, follow=True) assert (response.context_data['form'].errors['tipo'] == diff --git a/sapl/materia/views.py b/sapl/materia/views.py index ff1a849f4..4d0bcd5e2 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -6,8 +6,8 @@ from crispy_forms.helper import FormHelper from crispy_forms.layout import HTML, Button from django.conf import settings from django.contrib import messages +from django.contrib.auth import get_user_model from django.contrib.auth.mixins import PermissionRequiredMixin -from django.contrib.auth.models import User from django.contrib.auth.tokens import default_token_generator from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist from django.core.mail import send_mail @@ -54,6 +54,7 @@ from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria, TipoFimRelatoria, TipoMateriaLegislativa, TipoProposicao, Tramitacao, UnidadeTramitacao) + AnexadaCrud = Crud.build(Anexada, '') @@ -62,6 +63,7 @@ class OrigemCrud(Crud): help_path = 'origem' class BaseMixin(PermissionRequiredMixin, CrudBaseMixin): + def has_permission(self): return permissao_tb_aux(self) @@ -71,6 +73,7 @@ class TipoMateriaCrud(Crud): help_path = 'tipo_materia_legislativa' class BaseMixin(PermissionRequiredMixin, CrudBaseMixin): + def has_permission(self): return permissao_tb_aux(self) @@ -80,6 +83,7 @@ class RegimeTramitacaoCrud(Crud): help_path = 'regime_tramitacao' class BaseMixin(PermissionRequiredMixin, CrudBaseMixin): + def has_permission(self): return permissao_tb_aux(self) @@ -89,6 +93,7 @@ class TipoDocumentoCrud(Crud): help_path = 'tipo_documento' class BaseMixin(PermissionRequiredMixin, CrudBaseMixin): + def has_permission(self): return permissao_tb_aux(self) @@ -98,6 +103,7 @@ class TipoFimRelatoriaCrud(Crud): help_path = 'fim_relatoria' class BaseMixin(PermissionRequiredMixin, CrudBaseMixin): + def has_permission(self): return permissao_tb_aux(self) @@ -107,6 +113,7 @@ class TipoAutorCrud(Crud): help_path = 'tipo_autor' class BaseMixin(PermissionRequiredMixin, CrudBaseMixin): + def has_permission(self): return permissao_tb_aux(self) @@ -130,7 +137,8 @@ class AutorCrud(Crud): pk_autor = Autor.objects.get( email=self.request.POST.get('email')).id kwargs = {} - user = User.objects.get(email=self.request.POST.get('email')) + user = get_user_model().objects.get( + email=self.request.POST.get('email')) kwargs['token'] = default_token_generator.make_token(user) kwargs['uidb64'] = urlsafe_base64_encode(force_bytes(user.pk)) assunto = "SAPL - Confirmação de Conta" @@ -159,7 +167,7 @@ class ConfirmarEmailView(TemplateView): def get(self, request, *args, **kwargs): uid = urlsafe_base64_decode(self.kwargs['uidb64']) - user = User.objects.get(id=uid) + user = get_user_model().objects.get(id=uid) user.is_active = True user.save() context = self.get_context_data(**kwargs) @@ -181,6 +189,7 @@ class TipoProposicaoCrud(Crud): help_path = 'tipo_proposicao' class BaseMixin(PermissionRequiredMixin, CrudBaseMixin): + def has_permission(self): return permissao_tb_aux(self) @@ -453,7 +462,7 @@ class ProposicaoCrud(Crud): id=self.kwargs['pk'], autor__user_id=self.request.user.id) if (not proposicao.data_recebimento or - proposicao.data_devolucao): + proposicao.data_devolucao): return True else: msg = _('Essa proposição já foi recebida. ' + @@ -544,13 +553,13 @@ class ReciboProposicaoView(TemplateView): permission_required = permissoes_autor() def has_permission(self): - perms = self.get_permission_required() - if not self.request.user.has_perms(perms): - return False + perms = self.get_permission_required() + if not self.request.user.has_perms(perms): + return False - return (Proposicao.objects.filter( - id=self.kwargs['pk'], - autor__user_id=self.request.user.id).exists()) + return (Proposicao.objects.filter( + id=self.kwargs['pk'], + autor__user_id=self.request.user.id).exists()) def get_context_data(self, **kwargs): context = super(ReciboProposicaoView, self).get_context_data( diff --git a/scripts/inicializa_grupos_autorizacoes.py b/scripts/inicializa_grupos_autorizacoes.py index 378301910..1377d66e6 100644 --- a/scripts/inicializa_grupos_autorizacoes.py +++ b/scripts/inicializa_grupos_autorizacoes.py @@ -1,5 +1,6 @@ from django.apps import apps -from django.contrib.auth.models import Group, Permission, User +from django.contrib.auth import get_user_model +from django.contrib.auth.models import Group, Permission from django.contrib.contenttypes.models import ContentType @@ -12,7 +13,7 @@ def cria_ou_reseta_grupo(nome): def cria_usuario(nome, grupo): nome_usuario = nome - usuario = User.objects.get_or_create(username=nome_usuario)[0] + usuario = get_user_model().objects.get_or_create(username=nome_usuario)[0] usuario.set_password('interlegis') usuario.save() grupo.user_set.add(usuario) @@ -82,7 +83,8 @@ def cria_grupos_permissoes(): # Cria o Usuario nome_usuario = 'operador_%s' % nome_app - usuario = User.objects.get_or_create(username=nome_usuario)[0] + usuario = get_user_model().objects.get_or_create( + username=nome_usuario)[0] usuario.set_password('interlegis') usuario.save() grupo.user_set.add(usuario)