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. 4
      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). * Mantenha todo o código de acordo com o padrão da PEP8 (sem exceções).
* Antes de todo ``git push``: * Antes de todo ``git push``:
- Execute ``git pull --rebase`` (quase sempre). - Execute ``git pull --rebase`` (quase sempre).
- Em casos excepcionais, faça somente ``git pull`` para criar um merge. - Em casos excepcionais, faça somente ``git pull`` para criar um merge.
* Antes de ``git commit``, sempre: * Antes de ``git commit``, sempre:
- Execute ``./manage.py check`` - Execute ``./manage.py check``
- Execute todos os testes com ``py.test`` na pasta raiz do projeto - 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: 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 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. 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 Testes
------ ------

1
base/forms.py

@ -2,6 +2,7 @@ from django import forms
from django.contrib.auth.forms import AuthenticationForm from django.contrib.auth.forms import AuthenticationForm
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.forms import ModelForm from django.forms import ModelForm
import sapl import sapl
from sapl.settings import MAX_IMAGE_UPLOAD_SIZE 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.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.db import models 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 compilacao.utils import int_to_letter, int_to_roman
from sapl import utils from sapl import utils
from sapl.utils import get_user_model
class TimestampedMixin(models.Model): class TimestampedMixin(models.Model):
@ -1293,7 +1293,7 @@ class Nota(TimestampedMixin):
verbose_name=_('Dispositivo da Nota'), verbose_name=_('Dispositivo da Nota'),
related_name='dispositivo_nota_set') 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( publicidade = models.PositiveSmallIntegerField(
choices=NOTAS_PUBLICIDADE_CHOICES, choices=NOTAS_PUBLICIDADE_CHOICES,
verbose_name=_('Nível de Publicidade')) verbose_name=_('Nível de Publicidade'))

3
compilacao/views.py

@ -1,6 +1,6 @@
import sys
from collections import OrderedDict from collections import OrderedDict
from datetime import datetime, timedelta from datetime import datetime, timedelta
import sys
from braces.views import FormMessagesMixin from braces.views import FormMessagesMixin
from django import forms from django import forms
@ -37,7 +37,6 @@ from compilacao.models import (Dispositivo, Nota,
from compilacao.utils import DISPOSITIVO_SELECT_RELATED from compilacao.utils import DISPOSITIVO_SELECT_RELATED
from crud.base import Crud, CrudListView, make_pagination from crud.base import Crud, CrudListView, make_pagination
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')

4
materia/views.py

@ -599,7 +599,7 @@ def criar_email_confirmacao(request, casa_legislativa, materia, hash_txt=''):
casa_legislativa.municipio + '-' + casa_legislativa.municipio + '-' +
casa_legislativa.uf) casa_legislativa.uf)
base_url = get_base_url(request) base_url = sapl.utils.get_base_url(request)
materia_url = reverse('materia:acompanhar_materia', materia_url = reverse('materia:acompanhar_materia',
kwargs={'pk': materia.id}) kwargs={'pk': materia.id})
confirmacao_url = reverse('materia:acompanhar_confirmar', 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.municipio + '-' +
casa_legislativa.uf) casa_legislativa.uf)
base_url = get_base_url(request) base_url = sapl.utils.get_base_url(request)
url_materia = reverse('materia:acompanhar_materia', url_materia = reverse('materia:acompanhar_materia',
kwargs={'pk': materia.id}) kwargs={'pk': materia.id})
url_excluir = reverse('materia:acompanhar_excluir', 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_USE_TLS = config('EMAIL_USE_TLS', cast=bool)
EMAIL_HOST = config('EMAIL_HOST', cast=str) EMAIL_HOST = config('EMAIL_HOST', cast=str)
EMAIL_HOST_USER = config('EMAIL_HOST_USER', cast=str) EMAIL_HOST_USER = config('EMAIL_HOST_USER', cast=str)

7
sapl/utils.py

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

Loading…
Cancel
Save