Browse Source

adiciona abstração na obtenção do model User

pull/498/head
LeandroRoberto 9 years ago
parent
commit
6fd0057809
  1. 8
      README.rst
  2. 1
      base/forms.py
  3. 4
      compilacao/models.py
  4. 3
      compilacao/views.py
  5. 6
      materia/views.py
  6. 16
      norma/migrations/0014_merge.py
  7. 4
      sapl/settings.py
  8. 7
      sapl/utils.py

8
README.rst

@ -235,13 +235,20 @@ Boas Práticas
* Mantenha todo o código de acordo com o padrão da PEP8 (sem exceções).
* Antes de todo ``git push``:
- Execute ``git pull --rebase`` (quase sempre).
- Em casos excepcionais, faça somente ``git pull`` para criar um merge.
* Antes de ``git commit``, sempre:
- Execute ``./manage.py check``
- Execute todos os testes com ``py.test`` na pasta raiz do projeto
* Em caso de Implementação de modelo que envolva a classe from django.contrib.auth.models.User, não a use diretamente, use para isso a função get_user_model() de sapl.utils. Exemplo:
- no lugar de ``owner = models.ForeignKey(User, ... )``
- use ``owner = models.ForeignKey(get_user_model(), ... )``
Atenção:
O usuário do banco de dados ``sapl`` deve ter a permissão ``create database`` no postgres para que os testes tenham sucesso
@ -253,6 +260,7 @@ Atenção:
Nós sugerimos que você abra uma nova issue para discutir novas funcionalidades. Elas podem ser escritas tanto em Português, quanto em Inglês.
Testes
------

1
base/forms.py

@ -2,6 +2,7 @@ from django import forms
from django.contrib.auth.forms import AuthenticationForm
from django.core.exceptions import ValidationError
from django.forms import ModelForm
import sapl
from sapl.settings import MAX_IMAGE_UPLOAD_SIZE

4
compilacao/models.py

@ -1,4 +1,3 @@
from django.contrib.auth.models import User
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
from django.db import models
@ -9,6 +8,7 @@ from django.utils.translation import ugettext_lazy as _
from compilacao.utils import int_to_letter, int_to_roman
from sapl import utils
from sapl.utils import get_user_model
class TimestampedMixin(models.Model):
@ -1293,7 +1293,7 @@ class Nota(TimestampedMixin):
verbose_name=_('Dispositivo da Nota'),
related_name='dispositivo_nota_set')
owner = models.ForeignKey(User, verbose_name=_('Dono da Nota'))
owner = models.ForeignKey(get_user_model(), verbose_name=_('Dono da Nota'))
publicidade = models.PositiveSmallIntegerField(
choices=NOTAS_PUBLICIDADE_CHOICES,
verbose_name=_('Nível de Publicidade'))

3
compilacao/views.py

@ -1,6 +1,6 @@
import sys
from collections import OrderedDict
from datetime import datetime, timedelta
import sys
from braces.views import FormMessagesMixin
from django import forms
@ -37,7 +37,6 @@ from compilacao.models import (Dispositivo, Nota,
from compilacao.utils import DISPOSITIVO_SELECT_RELATED
from crud.base import Crud, CrudListView, make_pagination
TipoNotaCrud = Crud.build(TipoNota, 'tipo_nota')
TipoVideCrud = Crud.build(TipoVide, 'tipo_vide')
TipoPublicacaoCrud = Crud.build(TipoPublicacao, 'tipo_publicacao')

6
materia/views.py

@ -488,7 +488,7 @@ class MateriaLegislativaPesquisaView(FilterView):
# Então a ordem da URL está diferente
data = self.filterset.data
if (data and data.get('tipo') is not None):
url = "&"+str(self.request.environ['QUERY_STRING'])
url = "&" + str(self.request.environ['QUERY_STRING'])
if url.startswith("&page"):
ponto_comeco = url.find('tipo=') - 1
url = url[ponto_comeco:]
@ -599,7 +599,7 @@ def criar_email_confirmacao(request, casa_legislativa, materia, hash_txt=''):
casa_legislativa.municipio + '-' +
casa_legislativa.uf)
base_url = get_base_url(request)
base_url = sapl.utils.get_base_url(request)
materia_url = reverse('materia:acompanhar_materia',
kwargs={'pk': materia.id})
confirmacao_url = reverse('materia:acompanhar_confirmar',
@ -636,7 +636,7 @@ def criar_email_tramitacao(request, casa_legislativa, materia, hash_txt=''):
casa_legislativa.municipio + '-' +
casa_legislativa.uf)
base_url = get_base_url(request)
base_url = sapl.utils.get_base_url(request)
url_materia = reverse('materia:acompanhar_materia',
kwargs={'pk': materia.id})
url_excluir = reverse('materia:acompanhar_excluir',

16
norma/migrations/0014_merge.py

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2016-06-08 16:14
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('norma', '0013_auto_20160510_1404'),
('norma', '0013_auto_20160503_0926'),
]
operations = [
]

4
sapl/settings.py

@ -118,6 +118,10 @@ DATABASES = {
)
}
# troque no caso de reimplementação da classe User conforme
# https://docs.djangoproject.com/en/1.9/topics/auth/customizing/#substituting-a-custom-user-model
AUTH_USER_MODEL = 'auth.User'
EMAIL_USE_TLS = config('EMAIL_USE_TLS', cast=bool)
EMAIL_HOST = config('EMAIL_HOST', cast=str)
EMAIL_HOST_USER = config('EMAIL_HOST_USER', cast=str)

7
sapl/utils.py

@ -1,12 +1,13 @@
from datetime import date
from functools import wraps
import magic
from django.apps import apps
from django.conf import settings
from django.contrib import admin
from django.core.exceptions import ValidationError
from django.utils.translation import ugettext_lazy as _
from floppyforms import ClearableFileInput
import magic
autor_label = '''
@ -54,6 +55,10 @@ def xstr(s):
return '' if s is None else str(s)
def get_user_model():
return getattr(settings, 'AUTH_USER_MODEL', 'auth.User')
def get_client_ip(request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:

Loading…
Cancel
Save