706 refatorar model autor tipoautor (#739)
* Ref Autor, TipoAutor, cria app api DRF
- Autor e TipoAutor migrados para app base.
- Foram refatorados para GR - Generic Relations
- Em TipoAutor: passou se a apontar também para um ContentType que
é usado para contextualização de dados da GR em Autor.
- A captura da combo de ContentTypes é feita através do apontamento
reverso nos models que se queira disponibilizar conceitualmente como
Autor
- Em Autor: neste commit, o form de create está em desenvolvimento, com
o buscador de possiveis autores baseados na seleção do usuário de
TipoAutor que, se não possui ContentType, abre o campo nome para
insersão, se possui ContentType, abre caixa de busca com atualização
jquery de radiobox's para o usuário selecionar um possível autor.
- api rest: para a busca funcionar e como objetivo de futuras
implementações em DRF, a app api foi criada, anotada nas configurações
gerais de sapl.urls com o prefixo /api.
- na api foi criada a uma ListAPIView para pesquisa de possiveis autores
baseados no tipo autor enviado, url /api/autor/possiveis/?P<pk>[0-9]*)$
que sem pk devolve a lista de TipoAutor e, com pk, devolve a lista dos
registros ligados ao ContentType, filtrados pelo parametro q
* Ajusta front para busca por possiveis autores
Ajusta front e implementa SaplGenericRelation, uma customização que
adiciona o atributo fields_search que possibilita passar para qualquer
implementação de busca quais são os campos de busca padrão do do
GenericRelation
* Conc refatoração no Cada de Autor e Tipos de Autor
* Alt backend de perm e pag de drf e ref layout topo
* Add procedimento na alteração de username de Autor
Na edição de Autores foi adicionado o tratamento por opção do usuário do
que deve ser feito com o usuário que está sendo desvinculado no caso de
uma alteração do username de um Autor.
Foram dadas três opções:
1) Apenas retirar Perfil de Autor do Usuário que está sendo desvinculado
2) Retirar Perfil de Autor e desativar Usuário que está sendo desvinculado
3) Excluir Usuário
* Add field cargo em AutorForm para tipos sem CT
Cadastro de Autores de Tipos sem ContentType podem adicionar nome, cargo
e usuário.
* Add Bloco, Bancada, Frente possíveis Tip de Autores
* Corrige frase de mensagem no cadastro de Autor
* ref buscador modal de Autores c pesq param reversa
* Add documentação e faz modificações na api/autor
* Ref Crud para Listar GenericRelations
* Ref List da aba Proposições para parlamentares
* Altera imports de teste na app materia
* Corrige comentários da classe AutorListView
* Customiza layout do drf docs.
* Altera criação do grp Autor para inc list e detail
* Remove customização do bootstrap
Após fork e ajustes feitos no tema drunken-parrot-ui-flat, alterações
feitas nos arquivos deste commit não são mais necessárias, passando a
ser renderizado os arquivos que são padrão da biblioteca
django-crispy-forms.
* Adequa inserção dinamica de radio ao crispy-forms
8 years ago
|
|
|
from rest_framework.permissions import DjangoModelPermissions
|
|
|
|
from sapl.rules.map_rules import rules_patterns_public
|
|
|
|
|
|
|
|
|
|
|
|
class SaplModelPermissions(DjangoModelPermissions):
|
|
|
|
|
|
|
|
perms_map = {
|
|
|
|
'GET': ['%(app_label)s.list_%(model_name)s',
|
|
|
|
'%(app_label)s.detail_%(model_name)s'],
|
|
|
|
'OPTIONS': ['%(app_label)s.list_%(model_name)s',
|
|
|
|
'%(app_label)s.detail_%(model_name)s'],
|
|
|
|
'HEAD': ['%(app_label)s.list_%(model_name)s',
|
|
|
|
'%(app_label)s.detail_%(model_name)s'],
|
|
|
|
'POST': ['%(app_label)s.add_%(model_name)s'],
|
|
|
|
'PUT': ['%(app_label)s.change_%(model_name)s'],
|
|
|
|
'PATCH': ['%(app_label)s.change_%(model_name)s'],
|
|
|
|
'DELETE': ['%(app_label)s.delete_%(model_name)s'],
|
|
|
|
|
706 refatorar model autor tipoautor (#739)
* Ref Autor, TipoAutor, cria app api DRF
- Autor e TipoAutor migrados para app base.
- Foram refatorados para GR - Generic Relations
- Em TipoAutor: passou se a apontar também para um ContentType que
é usado para contextualização de dados da GR em Autor.
- A captura da combo de ContentTypes é feita através do apontamento
reverso nos models que se queira disponibilizar conceitualmente como
Autor
- Em Autor: neste commit, o form de create está em desenvolvimento, com
o buscador de possiveis autores baseados na seleção do usuário de
TipoAutor que, se não possui ContentType, abre o campo nome para
insersão, se possui ContentType, abre caixa de busca com atualização
jquery de radiobox's para o usuário selecionar um possível autor.
- api rest: para a busca funcionar e como objetivo de futuras
implementações em DRF, a app api foi criada, anotada nas configurações
gerais de sapl.urls com o prefixo /api.
- na api foi criada a uma ListAPIView para pesquisa de possiveis autores
baseados no tipo autor enviado, url /api/autor/possiveis/?P<pk>[0-9]*)$
que sem pk devolve a lista de TipoAutor e, com pk, devolve a lista dos
registros ligados ao ContentType, filtrados pelo parametro q
* Ajusta front para busca por possiveis autores
Ajusta front e implementa SaplGenericRelation, uma customização que
adiciona o atributo fields_search que possibilita passar para qualquer
implementação de busca quais são os campos de busca padrão do do
GenericRelation
* Conc refatoração no Cada de Autor e Tipos de Autor
* Alt backend de perm e pag de drf e ref layout topo
* Add procedimento na alteração de username de Autor
Na edição de Autores foi adicionado o tratamento por opção do usuário do
que deve ser feito com o usuário que está sendo desvinculado no caso de
uma alteração do username de um Autor.
Foram dadas três opções:
1) Apenas retirar Perfil de Autor do Usuário que está sendo desvinculado
2) Retirar Perfil de Autor e desativar Usuário que está sendo desvinculado
3) Excluir Usuário
* Add field cargo em AutorForm para tipos sem CT
Cadastro de Autores de Tipos sem ContentType podem adicionar nome, cargo
e usuário.
* Add Bloco, Bancada, Frente possíveis Tip de Autores
* Corrige frase de mensagem no cadastro de Autor
* ref buscador modal de Autores c pesq param reversa
* Add documentação e faz modificações na api/autor
* Ref Crud para Listar GenericRelations
* Ref List da aba Proposições para parlamentares
* Altera imports de teste na app materia
* Corrige comentários da classe AutorListView
* Customiza layout do drf docs.
* Altera criação do grp Autor para inc list e detail
* Remove customização do bootstrap
Após fork e ajustes feitos no tema drunken-parrot-ui-flat, alterações
feitas nos arquivos deste commit não são mais necessárias, passando a
ser renderizado os arquivos que são padrão da biblioteca
django-crispy-forms.
* Adequa inserção dinamica de radio ao crispy-forms
8 years ago
|
|
|
}
|
|
|
|
|
|
|
|
def has_permission(self, request, view):
|
|
|
|
if getattr(view, '_ignore_model_permissions', False):
|
|
|
|
return True
|
|
|
|
|
|
|
|
if hasattr(view, 'get_queryset'):
|
|
|
|
queryset = view.get_queryset()
|
|
|
|
else:
|
|
|
|
queryset = getattr(view, 'queryset', None)
|
|
|
|
|
|
|
|
assert queryset is not None, (
|
|
|
|
'Cannot apply DjangoModelPermissions on a view that '
|
|
|
|
'does not set `.queryset` or have a `.get_queryset()` method.'
|
|
|
|
)
|
|
|
|
|
|
|
|
perms = self.get_required_permissions(request.method, queryset.model)
|
|
|
|
|
|
|
|
key = '{}:{}'.format(
|
|
|
|
queryset.model._meta.app_label,
|
|
|
|
queryset.model._meta.model_name)
|
|
|
|
|
|
|
|
if key in rules_patterns_public:
|
|
|
|
perms = set(perms)
|
|
|
|
perms_publicas = rules_patterns_public[key]
|
|
|
|
|
|
|
|
private_perms = perms - perms_publicas
|
|
|
|
if not private_perms:
|
|
|
|
return True
|
|
|
|
|
|
|
|
return (
|
|
|
|
request.user and
|
|
|
|
(request.user.is_authenticated() or not self.authenticated_users_only) and
|
|
|
|
request.user.has_perms(perms)
|
|
|
|
)
|