|
|
@ -1,347 +1,74 @@ |
|
|
|
""" |
|
|
|
Todas as permissões do django framework seguem o padrão |
|
|
|
|
|
|
|
[app_label].[radical_de_permissao]_[model] |
|
|
|
|
|
|
|
ou seja, em sapl.norma.NormaJuridica, por exemplo, o django framework cria |
|
|
|
três permissões registadas na classe Permission: |
|
|
|
|
|
|
|
definição uso |
|
|
|
|
|
|
|
- add_normajuridica norma.add_normajuridica |
|
|
|
- change_normajuridica norma.change_normajuridica |
|
|
|
- delete_normajuridica norma.delete_normajuridica |
|
|
|
|
|
|
|
No SAPL foram acrescidas em todos os models as duas regras abaixo, adicionadas |
|
|
|
com o Signal post_migrate `create_proxy_permissions` |
|
|
|
localizado em sapl.rules.apps.py. |
|
|
|
|
|
|
|
- list_normajuridica norma.list_normajuridica |
|
|
|
- detail_normajuridica norma.detail_normajuridica |
|
|
|
|
|
|
|
Tanto o Crud implementado em sapl.crud.base.py quanto o Signal post_migrate |
|
|
|
`update_groups` que é responsável por ler o mapa deste |
|
|
|
arquivo (sapl.rules.map_rules.py) e criar os grupos definidos na regra de |
|
|
|
negócio trabalham com os cinco radiais de permissão |
|
|
|
e com qualquer outro tipo de permissão customizada, nesta ordem de precedência. |
|
|
|
|
|
|
|
""" |
|
|
|
from sapl.audiencia import models as audiencia |
|
|
|
from sapl.base import models as base |
|
|
|
from sapl.comissoes import models as comissoes |
|
|
|
from sapl.compilacao import models as compilacao |
|
|
|
from sapl.lexml import models as lexml |
|
|
|
from sapl.materia import models as materia |
|
|
|
from sapl.norma import models as norma |
|
|
|
from sapl.painel import models as painel |
|
|
|
from sapl.parlamentares import models as parlamentares |
|
|
|
from sapl.protocoloadm import models as protocoloadm |
|
|
|
from sapl.rules import (RP_ADD, RP_CHANGE, RP_DELETE, RP_DETAIL, RP_LIST, |
|
|
|
SAPL_GROUP_ADMINISTRATIVO, SAPL_GROUP_ANONYMOUS, |
|
|
|
SAPL_GROUP_AUTOR, SAPL_GROUP_COMISSOES, |
|
|
|
SAPL_GROUP_GERAL, SAPL_GROUP_LOGIN_SOCIAL, |
|
|
|
SAPL_GROUP_MATERIA, SAPL_GROUP_NORMA, |
|
|
|
SAPL_GROUP_PAINEL, |
|
|
|
SAPL_GROUP_PROTOCOLO, SAPL_GROUP_SESSAO, |
|
|
|
SAPL_GROUP_VOTANTE) |
|
|
|
from sapl.sessao import models as sessao |
|
|
|
|
|
|
|
from sapl.rules import SAPL_GROUP_LOGIN_SOCIAL |
|
|
|
from sapl.rules.group_administrativo import rules_group_administrativo |
|
|
|
from sapl.rules.group_anonymous import rules_group_anonymous |
|
|
|
from sapl.rules.group_audiencia import rules_group_audiencia |
|
|
|
from sapl.rules.group_autor import rules_group_autor |
|
|
|
from sapl.rules.group_comissoes import rules_group_comissoes |
|
|
|
from sapl.rules.group_geral import rules_group_geral |
|
|
|
from sapl.rules.group_materia import rules_group_materia |
|
|
|
from sapl.rules.group_norma import rules_group_norma |
|
|
|
from sapl.rules.group_painel import rules_group_painel |
|
|
|
from sapl.rules.group_protocolo import rules_group_protocolo |
|
|
|
from sapl.rules.group_sessao import rules_group_sessao |
|
|
|
from sapl.rules.group_votante import rules_group_votante |
|
|
|
|
|
|
|
__base__ = [RP_LIST, RP_DETAIL, RP_ADD, RP_CHANGE, RP_DELETE] |
|
|
|
__listdetailchange__ = [RP_LIST, RP_DETAIL, RP_CHANGE] |
|
|
|
|
|
|
|
__perms_publicas__ = {RP_LIST, RP_DETAIL} |
|
|
|
|
|
|
|
|
|
|
|
rules_group_administrativo = { |
|
|
|
'group': SAPL_GROUP_ADMINISTRATIVO, |
|
|
|
'rules': [ |
|
|
|
(materia.MateriaLegislativa, [ |
|
|
|
'can_access_impressos'], __perms_publicas__), |
|
|
|
# TODO: tratar em sapl.api a questão de ostencivo e restritivo |
|
|
|
(protocoloadm.DocumentoAdministrativo, __base__, set()), |
|
|
|
(protocoloadm.Anexado, __base__, set()), |
|
|
|
(protocoloadm.DocumentoAcessorioAdministrativo, __base__, set()), |
|
|
|
(protocoloadm.TramitacaoAdministrativo, __base__, set()), |
|
|
|
] |
|
|
|
} |
|
|
|
|
|
|
|
rules_group_audiencia = { |
|
|
|
'group': SAPL_GROUP_GERAL, |
|
|
|
'rules': [ |
|
|
|
(audiencia.AudienciaPublica, __base__, __perms_publicas__), |
|
|
|
(audiencia.TipoAudienciaPublica, __base__, __perms_publicas__), |
|
|
|
(audiencia.AnexoAudienciaPublica, __base__, __perms_publicas__), |
|
|
|
] |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
rules_group_protocolo = { |
|
|
|
'group': SAPL_GROUP_PROTOCOLO, |
|
|
|
'rules': [ |
|
|
|
(protocoloadm.Protocolo, __base__ + [ |
|
|
|
'action_anular_protocolo'], set()), |
|
|
|
(protocoloadm.DocumentoAdministrativo, |
|
|
|
[RP_ADD] + __listdetailchange__, set()), |
|
|
|
(protocoloadm.DocumentoAcessorioAdministrativo, __listdetailchange__, set()), |
|
|
|
|
|
|
|
(materia.MateriaLegislativa, __listdetailchange__, __perms_publicas__), |
|
|
|
(materia.MateriaLegislativa, [ |
|
|
|
'can_access_impressos'], __perms_publicas__), |
|
|
|
(materia.DocumentoAcessorio, __listdetailchange__, __perms_publicas__), |
|
|
|
(materia.Anexada, __base__, __perms_publicas__), |
|
|
|
(materia.Autoria, __base__, __perms_publicas__), |
|
|
|
|
|
|
|
(materia.Proposicao, ['detail_proposicao_enviada', |
|
|
|
'detail_proposicao_devolvida', |
|
|
|
'detail_proposicao_incorporada'], set()), # TODO: tratar em sapl.api questão de que proposições incorporadas serem públicas |
|
|
|
(materia.HistoricoProposicao, __base__, set()), |
|
|
|
(compilacao.TextoArticulado, [ |
|
|
|
'view_restricted_textoarticulado'], __perms_publicas__) |
|
|
|
] |
|
|
|
} |
|
|
|
|
|
|
|
rules_group_comissoes = { |
|
|
|
'group': SAPL_GROUP_COMISSOES, |
|
|
|
'rules': [ |
|
|
|
(materia.PautaReuniao, __base__, __perms_publicas__), |
|
|
|
(comissoes.Comissao, __base__, __perms_publicas__), |
|
|
|
(comissoes.Composicao, __base__, __perms_publicas__), |
|
|
|
(comissoes.Participacao, __base__, __perms_publicas__), |
|
|
|
(materia.Relatoria, __base__, __perms_publicas__), |
|
|
|
(comissoes.Reuniao, __base__, __perms_publicas__), |
|
|
|
(comissoes.DocumentoAcessorio, __base__, __perms_publicas__), |
|
|
|
] |
|
|
|
} |
|
|
|
|
|
|
|
rules_group_materia = { |
|
|
|
'group': SAPL_GROUP_MATERIA, |
|
|
|
'rules': [ |
|
|
|
(materia.Anexada, __base__, __perms_publicas__), |
|
|
|
(materia.Autoria, __base__, __perms_publicas__), |
|
|
|
(materia.DespachoInicial, __base__, __perms_publicas__), |
|
|
|
(materia.DocumentoAcessorio, __base__, __perms_publicas__), |
|
|
|
(materia.MateriaAssunto, __base__, __perms_publicas__), |
|
|
|
(materia.AssuntoMateria, __base__, __perms_publicas__), |
|
|
|
|
|
|
|
(materia.MateriaLegislativa, __base__ + |
|
|
|
['can_access_impressos'], __perms_publicas__), |
|
|
|
(materia.Numeracao, __base__, __perms_publicas__), |
|
|
|
(materia.Tramitacao, __base__, __perms_publicas__), |
|
|
|
(materia.MateriaEmTramitacao, __base__, __perms_publicas__), |
|
|
|
(norma.LegislacaoCitada, __base__, __perms_publicas__), |
|
|
|
(norma.AutoriaNorma, __base__, __perms_publicas__), |
|
|
|
(compilacao.Dispositivo, __base__ + [ |
|
|
|
'change_dispositivo_edicao_dinamica', |
|
|
|
|
|
|
|
# TODO: adicionar 'change_dispositivo_registros_compilacao' |
|
|
|
# quando testes forem feitos para permtir que matérias possam |
|
|
|
# ser vinculadas a outras matérias via registro de compilação. |
|
|
|
# Normalmente emendas e/ou projetos substitutivos podem alterar |
|
|
|
# uma matéria original. |
|
|
|
# Fazer esse registro de compilação ofereceria |
|
|
|
# um autografo eletrônico pronto para ser convertido em Norma. |
|
|
|
], __perms_publicas__) |
|
|
|
] |
|
|
|
rules_group_login_social = { |
|
|
|
'group': SAPL_GROUP_LOGIN_SOCIAL, |
|
|
|
'rules': [] |
|
|
|
} |
|
|
|
""" |
|
|
|
ESTRUTURA DAS RULES DEFINIDAS NOS ARQUIVOS GROUP_[DEFINICAO].PY |
|
|
|
|
|
|
|
rules_group_norma = { |
|
|
|
'group': SAPL_GROUP_NORMA, |
|
|
|
'rules': [ |
|
|
|
(norma.NormaJuridica, __base__, __perms_publicas__), |
|
|
|
(norma.NormaRelacionada, __base__, __perms_publicas__), |
|
|
|
(norma.AnexoNormaJuridica, __base__, __perms_publicas__), |
|
|
|
(norma.AutoriaNorma, __base__, __perms_publicas__), |
|
|
|
(norma.NormaEstatisticas, __base__, __perms_publicas__), |
|
|
|
|
|
|
|
# Publicacao está com permissão apenas para norma e não para matéria |
|
|
|
# e proposições apenas por análise do contexto, não é uma limitação |
|
|
|
# da ferramenta. |
|
|
|
(compilacao.Publicacao, __base__, __perms_publicas__), |
|
|
|
(compilacao.Vide, __base__, __perms_publicas__), |
|
|
|
(compilacao.Nota, __base__, __perms_publicas__), |
|
|
|
(compilacao.Dispositivo, __base__ + [ |
|
|
|
'view_dispositivo_notificacoes', |
|
|
|
'change_dispositivo_edicao_dinamica', |
|
|
|
'change_dispositivo_edicao_avancada', |
|
|
|
'change_dispositivo_registros_compilacao', |
|
|
|
'change_dispositivo_de_vigencia_global' |
|
|
|
], __perms_publicas__) |
|
|
|
] |
|
|
|
} |
|
|
|
todos as rules de groups são um dicionario com duas chaves: 'group' e 'rules' |
|
|
|
|
|
|
|
rules_group_sessao = { |
|
|
|
'group': SAPL_GROUP_SESSAO, |
|
|
|
'rules': [ |
|
|
|
(sessao.SessaoPlenaria, __base__, __perms_publicas__), |
|
|
|
(sessao.SessaoPlenariaPresenca, __base__, __perms_publicas__), |
|
|
|
(sessao.ExpedienteMateria, __base__, __perms_publicas__), |
|
|
|
(sessao.OcorrenciaSessao, __base__, __perms_publicas__), |
|
|
|
(sessao.IntegranteMesa, __base__, __perms_publicas__), |
|
|
|
(sessao.ExpedienteSessao, __base__, __perms_publicas__), |
|
|
|
(sessao.Orador, __base__, __perms_publicas__), |
|
|
|
(sessao.OradorExpediente, __base__, __perms_publicas__), |
|
|
|
(sessao.OradorOrdemDia, __base__, __perms_publicas__), |
|
|
|
(sessao.OrdemDia, __base__, __perms_publicas__), |
|
|
|
(sessao.PresencaOrdemDia, __base__, __perms_publicas__), |
|
|
|
(sessao.RegistroVotacao, __base__, __perms_publicas__), |
|
|
|
(sessao.VotoParlamentar, __base__, __perms_publicas__), |
|
|
|
(sessao.JustificativaAusencia, __base__, __perms_publicas__), |
|
|
|
(sessao.RetiradaPauta, __base__, __perms_publicas__), |
|
|
|
(sessao.RegistroLeitura, __base__, __perms_publicas__), |
|
|
|
] |
|
|
|
} |
|
|
|
'group' precisa ser um dos grupos definidos em sapl.rules.__init__.py |
|
|
|
|
|
|
|
rules_group_painel = { |
|
|
|
'group': SAPL_GROUP_PAINEL, |
|
|
|
'rules': [ |
|
|
|
(painel.Painel, __base__, __perms_publicas__), |
|
|
|
(painel.Cronometro, __base__, __perms_publicas__), |
|
|
|
] |
|
|
|
} |
|
|
|
'rules' é uma lista de tuplas de três posições, onde |
|
|
|
0 - de que model se trata |
|
|
|
1 - list - quais permissões possui um usuário ligado ao grupo para o model da posição 0 |
|
|
|
- também indica ao CRUD que sua subclasse ligada a um radical precisa exigir credencial |
|
|
|
2 - set - indica a API quais permissões são públicas, ou seja, |
|
|
|
se está no set é um o acesso ao endpoint é público |
|
|
|
|
|
|
|
rules_group_autor = { |
|
|
|
'group': SAPL_GROUP_AUTOR, |
|
|
|
'rules': [ |
|
|
|
(materia.Proposicao, __base__, set()), |
|
|
|
(materia.HistoricoProposicao, __base__, set()), |
|
|
|
(compilacao.Dispositivo, __base__ + [ |
|
|
|
'change_your_dispositivo_edicao_dinamica', |
|
|
|
], __perms_publicas__) |
|
|
|
] |
|
|
|
} |
|
|
|
exemplo: |
|
|
|
|
|
|
|
rules_group_votante = { |
|
|
|
'group': SAPL_GROUP_VOTANTE, |
|
|
|
rules_group_exemplo = { |
|
|
|
'group': SAPL_GROUP_EXEMPLO, |
|
|
|
'rules': [ |
|
|
|
(parlamentares.Votante, ['can_vote'], set()) |
|
|
|
( |
|
|
|
model_exemplo1, |
|
|
|
( RP_LIST, RP_DETAIL ), |
|
|
|
set() |
|
|
|
), |
|
|
|
( |
|
|
|
model_exemplo2, |
|
|
|
(RP_LIST, RP_DETAIL, RP_ADD, RP_CHANGE, RP_DELETE), |
|
|
|
{RP_LIST, RP_DETAIL} |
|
|
|
), |
|
|
|
] |
|
|
|
} |
|
|
|
|
|
|
|
rules_group_geral = { |
|
|
|
'group': SAPL_GROUP_GERAL, |
|
|
|
'rules': [ |
|
|
|
(base.AppConfig, __base__ + [ |
|
|
|
'menu_sistemas', |
|
|
|
'view_tabelas_auxiliares' |
|
|
|
], set()), |
|
|
|
|
|
|
|
(base.CasaLegislativa, __listdetailchange__ + |
|
|
|
[RP_ADD], __perms_publicas__), |
|
|
|
(base.TipoAutor, __base__, __perms_publicas__), |
|
|
|
(base.Autor, __base__, __perms_publicas__), |
|
|
|
(base.OperadorAutor, __base__, __perms_publicas__), |
|
|
|
(base.AuditLog, __base__, set()), |
|
|
|
|
|
|
|
(protocoloadm.StatusTramitacaoAdministrativo, __base__, set()), |
|
|
|
(protocoloadm.TipoDocumentoAdministrativo, __base__, set()), |
|
|
|
|
|
|
|
(comissoes.CargoComissao, __base__, __perms_publicas__), |
|
|
|
(comissoes.TipoComissao, __base__, __perms_publicas__), |
|
|
|
(comissoes.Periodo, __base__, __perms_publicas__), |
|
|
|
|
|
|
|
(materia.AssuntoMateria, __base__, |
|
|
|
__perms_publicas__), # não há implementação |
|
|
|
(materia.MateriaAssunto, __base__, |
|
|
|
__perms_publicas__), # não há implementação |
|
|
|
(materia.MateriaLegislativa, [ |
|
|
|
'can_access_impressos'], __perms_publicas__), |
|
|
|
(materia.TipoProposicao, __base__, __perms_publicas__), |
|
|
|
(materia.TipoMateriaLegislativa, __base__, __perms_publicas__), |
|
|
|
(materia.RegimeTramitacao, __base__, __perms_publicas__), |
|
|
|
(materia.Origem, __base__, __perms_publicas__), |
|
|
|
(materia.TipoDocumento, __base__, __perms_publicas__), |
|
|
|
(materia.Orgao, __base__, __perms_publicas__), |
|
|
|
(materia.TipoFimRelatoria, __base__, __perms_publicas__), |
|
|
|
(materia.Parecer, __base__, __perms_publicas__), |
|
|
|
(materia.StatusTramitacao, __base__, __perms_publicas__), |
|
|
|
(materia.UnidadeTramitacao, __base__, __perms_publicas__), |
|
|
|
(materia.ConfigEtiquetaMateriaLegislativa, __base__, set()), |
|
|
|
|
|
|
|
|
|
|
|
(norma.AssuntoNorma, __base__, __perms_publicas__), |
|
|
|
(norma.TipoNormaJuridica, __base__, __perms_publicas__), |
|
|
|
(norma.TipoVinculoNormaJuridica, __base__, __perms_publicas__), |
|
|
|
(norma.NormaEstatisticas, __base__, __perms_publicas__), |
|
|
|
rules_group_exemplo['rules'][0] |
|
|
|
1 significa q usuários que estão no grupo SAPL_GROUP_EXEMPLO |
|
|
|
só podem acessar o que está em rules_group_exemplo['rules'][0][1], ou seja, |
|
|
|
listar e ver os detalhes de model_exemplo1 |
|
|
|
|
|
|
|
(parlamentares.Legislatura, __base__, __perms_publicas__), |
|
|
|
(parlamentares.SessaoLegislativa, __base__, __perms_publicas__), |
|
|
|
(parlamentares.Coligacao, __base__, __perms_publicas__), |
|
|
|
(parlamentares.ComposicaoColigacao, __base__, __perms_publicas__), |
|
|
|
(parlamentares.Partido, __base__, __perms_publicas__), |
|
|
|
(parlamentares.NivelInstrucao, __base__, __perms_publicas__), |
|
|
|
(parlamentares.SituacaoMilitar, __base__, __perms_publicas__), |
|
|
|
(parlamentares.Parlamentar, __base__, __perms_publicas__), |
|
|
|
(parlamentares.TipoDependente, __base__, __perms_publicas__), |
|
|
|
(parlamentares.Dependente, __base__, __perms_publicas__), |
|
|
|
(parlamentares.Filiacao, __base__, __perms_publicas__), |
|
|
|
(parlamentares.TipoAfastamento, __base__, __perms_publicas__), |
|
|
|
(parlamentares.Mandato, __base__, __perms_publicas__), |
|
|
|
(parlamentares.CargoMesa, __base__, __perms_publicas__), |
|
|
|
(parlamentares.ComposicaoMesa, __base__, __perms_publicas__), |
|
|
|
(parlamentares.Frente, __base__, __perms_publicas__), |
|
|
|
(parlamentares.FrenteCargo, __base__, __perms_publicas__), |
|
|
|
(parlamentares.FrenteParlamentar, __base__, __perms_publicas__), |
|
|
|
(parlamentares.Votante, __base__, __perms_publicas__), |
|
|
|
(parlamentares.Bloco, __base__, __perms_publicas__), |
|
|
|
(parlamentares.BlocoCargo, __base__, __perms_publicas__), |
|
|
|
(parlamentares.BlocoMembro, __base__, __perms_publicas__), |
|
|
|
1 significa também que o crud exigirá tais credenciais no listview e detailview |
|
|
|
|
|
|
|
2 set() diz que, na API, não existe acesso anônimo |
|
|
|
|
|
|
|
(sessao.CargoBancada, __base__, __perms_publicas__), |
|
|
|
(sessao.Bancada, __base__, __perms_publicas__), |
|
|
|
(sessao.TipoSessaoPlenaria, __base__, __perms_publicas__), |
|
|
|
(sessao.TipoResultadoVotacao, __base__, __perms_publicas__), |
|
|
|
(sessao.TipoExpediente, __base__, __perms_publicas__), |
|
|
|
(sessao.TipoJustificativa, __base__, __perms_publicas__), |
|
|
|
(sessao.JustificativaAusencia, __base__, __perms_publicas__), |
|
|
|
(sessao.ResumoOrdenacao, __base__, __perms_publicas__), |
|
|
|
(sessao.TipoRetiradaPauta, __base__, __perms_publicas__), |
|
|
|
-------------------------- |
|
|
|
|
|
|
|
(lexml.LexmlProvedor, __base__, set()), |
|
|
|
(lexml.LexmlPublicador, __base__, set()), |
|
|
|
rules_group_exemplo['rules'][1] |
|
|
|
1 significa q usuários que estão no grupo SAPL_GROUP_EXEMPLO |
|
|
|
podem acessar o que está em rules_group_exemplo['rules'][1][1], ou seja, |
|
|
|
listar, ver detalhes, editar, apagar e adicionar registros de model_exemplo2 |
|
|
|
|
|
|
|
(compilacao.VeiculoPublicacao, __base__, __perms_publicas__), |
|
|
|
(compilacao.TipoTextoArticulado, __base__, __perms_publicas__), |
|
|
|
(compilacao.TipoNota, __base__, __perms_publicas__), |
|
|
|
(compilacao.TipoVide, __base__, __perms_publicas__), |
|
|
|
(compilacao.TipoPublicacao, __base__, __perms_publicas__), |
|
|
|
1 significa também que o crud exigirá tais credenciais em todos as suas views |
|
|
|
|
|
|
|
# este model é um espelho do model integrado e sua edição pode |
|
|
|
# confundir Autores, operadores de matéria e/ou norma. |
|
|
|
# Por isso está adicionado apenas para o operador geral |
|
|
|
(compilacao.TextoArticulado, |
|
|
|
__base__ + ['lock_unlock_textoarticulado'], set()), |
|
|
|
2 {RP_LIST, RP_DETAIL} diz que, na API, só list e detail pode ser acessado sem credencial. |
|
|
|
|
|
|
|
# estes tres models são complexos e a principio apenas o admin tem perm |
|
|
|
(compilacao.TipoDispositivo, [], set()), |
|
|
|
(compilacao.TipoDispositivoRelationship, [], set()), |
|
|
|
(compilacao.PerfilEstruturalTextoArticulado, [], set()), |
|
|
|
|
|
|
|
(audiencia.AudienciaPublica, __base__, __perms_publicas__), |
|
|
|
(audiencia.TipoAudienciaPublica, __base__, __perms_publicas__), |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
] |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
# não possui efeito e é usada nos testes que verificam se todos os models estão |
|
|
|
# neste arquivo rules.py |
|
|
|
rules_group_anonymous = { |
|
|
|
'group': SAPL_GROUP_ANONYMOUS, |
|
|
|
'rules': [ |
|
|
|
(materia.AcompanhamentoMateria, [RP_ADD, RP_DELETE], set()), |
|
|
|
(protocoloadm.AcompanhamentoDocumento, [RP_ADD, RP_DELETE], set()), |
|
|
|
] |
|
|
|
} |
|
|
|
|
|
|
|
rules_group_login_social = { |
|
|
|
'group': SAPL_GROUP_LOGIN_SOCIAL, |
|
|
|
'rules': [] |
|
|
|
} |
|
|
|
""" |
|
|
|
|
|
|
|
rules_group_geral['rules'] = (rules_group_geral['rules'] + |
|
|
|
rules_group_administrativo['rules'] + |
|
|
@ -354,7 +81,6 @@ rules_group_geral['rules'] = (rules_group_geral['rules'] + |
|
|
|
rules_group_painel['rules'] + |
|
|
|
rules_group_login_social['rules']) |
|
|
|
|
|
|
|
|
|
|
|
rules_patterns = [ |
|
|
|
rules_group_audiencia, |
|
|
|
rules_group_administrativo, |
|
|
@ -372,7 +98,6 @@ rules_patterns = [ |
|
|
|
rules_group_login_social # TODO não implementado |
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
rules_patterns_public = {} |
|
|
|
|
|
|
|
|
|
|
@ -381,13 +106,13 @@ def _get_registration_key(model): |
|
|
|
|
|
|
|
|
|
|
|
for rules_group in rules_patterns: |
|
|
|
for rules in rules_group['rules']: |
|
|
|
key = _get_registration_key(rules[0]) |
|
|
|
for rs in rules_group['rules']: |
|
|
|
key = _get_registration_key(rs[0]) |
|
|
|
if key not in rules_patterns_public: |
|
|
|
rules_patterns_public[key] = set() |
|
|
|
|
|
|
|
r = set(map(lambda x, m=rules[0]: '{}{}{}'.format( |
|
|
|
r = set(map(lambda x, m=rs[0]: '{}{}{}'.format( |
|
|
|
m._meta.app_label, |
|
|
|
x, |
|
|
|
m._meta.model_name), rules[2])) |
|
|
|
m._meta.model_name), rs[2])) |
|
|
|
rules_patterns_public[key] = rules_patterns_public[key] | r |
|
|
|