mirror of https://github.com/interlegis/sapl.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
269 lines
8.9 KiB
269 lines
8.9 KiB
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from sapl.base import SAPL_GROUP_ADMINISTRATIVO, SAPL_GROUP_GERAL,\
|
|
SAPL_GROUP_PROTOCOLO, SAPL_GROUP_COMISSOES, SAPL_GROUP_MATERIA,\
|
|
SAPL_GROUP_ANONYMOUS, SAPL_GROUP_LOGIN_SOCIAL, SAPL_GROUP_NORMA,\
|
|
SAPL_GROUP_AUTOR, SAPL_GROUP_PAINEL, SAPL_GROUP_SESSAO,\
|
|
SAPL_GROUP_PARLAMENTAR
|
|
from sapl.base import models as base
|
|
from sapl.comissoes import models as comissoes
|
|
from sapl.compilacao import models as compilacao
|
|
from sapl.crud.base import RP_LIST, RP_DETAIL, RP_ADD, RP_CHANGE, RP_DELETE
|
|
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.sessao import models as sessao
|
|
|
|
# RP = Radicao de Permissão
|
|
__base__ = [RP_LIST, RP_DETAIL, RP_ADD, RP_CHANGE, RP_DELETE]
|
|
__listdetailchange__ = [RP_LIST, RP_DETAIL, RP_CHANGE]
|
|
|
|
|
|
rules_group_administrativo = {
|
|
'group': SAPL_GROUP_ADMINISTRATIVO,
|
|
'rules': [
|
|
(protocoloadm.DocumentoAdministrativo, __base__),
|
|
(protocoloadm.DocumentoAcessorioAdministrativo, __base__),
|
|
(protocoloadm.TramitacaoAdministrativo, __base__),
|
|
]
|
|
}
|
|
|
|
rules_group_protocolo = {
|
|
'group': SAPL_GROUP_PROTOCOLO,
|
|
'rules': [
|
|
(protocoloadm.Protocolo, __base__),
|
|
(protocoloadm.DocumentoAdministrativo, __listdetailchange__),
|
|
(protocoloadm.DocumentoAcessorioAdministrativo, __listdetailchange__),
|
|
|
|
(materia.MateriaLegislativa, __listdetailchange__),
|
|
(materia.DocumentoAcessorio, __listdetailchange__),
|
|
(materia.Anexada, __base__),
|
|
(materia.Autoria, __base__),
|
|
|
|
(materia.Proposicao, [RP_CHANGE]),
|
|
]
|
|
}
|
|
|
|
rules_group_comissoes = {
|
|
'group': SAPL_GROUP_COMISSOES,
|
|
'rules': [
|
|
(comissoes.Comissao, __base__),
|
|
(comissoes.Composicao, __base__),
|
|
(comissoes.Participacao, __base__),
|
|
]
|
|
}
|
|
|
|
rules_group_materia = {
|
|
'group': SAPL_GROUP_MATERIA,
|
|
'rules': [
|
|
(materia.Anexada, __base__),
|
|
(materia.Autoria, __base__),
|
|
(materia.DespachoInicial, __base__),
|
|
(materia.DocumentoAcessorio, __base__),
|
|
|
|
(materia.MateriaLegislativa, __base__),
|
|
(materia.Numeracao, __base__),
|
|
(materia.Relatoria, __base__),
|
|
(materia.Tramitacao, __base__),
|
|
(materia.Relatoria, __base__),
|
|
(norma.LegislacaoCitada, __base__),
|
|
(compilacao.Dispositivo, __base__ + [
|
|
'change_dispositivo_edicao_dinamica',
|
|
|
|
# sobre a regra abaixo deve ser pensada sobre isso
|
|
# abre possibilidade pra haver compilacao de emenda com projeto
|
|
# mas testes devem ser feitos especificamente para materia
|
|
# 'change_dispositivo_registros_compilacao'
|
|
])
|
|
]
|
|
}
|
|
|
|
rules_group_norma = {
|
|
'group': SAPL_GROUP_NORMA,
|
|
'rules': [
|
|
(norma.NormaJuridica, __base__),
|
|
(norma.AssuntoNormaRelationship, __base__),
|
|
(norma.VinculoNormaJuridica, __base__),
|
|
|
|
# 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__),
|
|
(compilacao.Vide, __base__),
|
|
(compilacao.Nota, __base__),
|
|
(compilacao.Dispositivo, __base__ + [
|
|
'change_dispositivo_notificacoes',
|
|
'change_dispositivo_edicao_dinamica',
|
|
'change_dispositivo_edicao_avancada',
|
|
'change_dispositivo_registros_compilacao'
|
|
])
|
|
]
|
|
}
|
|
|
|
rules_group_sessao = {
|
|
'group': SAPL_GROUP_SESSAO,
|
|
'rules': [
|
|
(sessao.SessaoPlenaria, __base__),
|
|
(sessao.SessaoPlenariaPresenca, __base__),
|
|
(sessao.ExpedienteMateria, __base__),
|
|
(sessao.IntegranteMesa, __base__),
|
|
(sessao.ExpedienteSessao, __base__),
|
|
(sessao.Orador, __base__),
|
|
(sessao.OradorExpediente, __base__),
|
|
(sessao.OrdemDia, __base__),
|
|
(sessao.PresencaOrdemDia, __base__),
|
|
(sessao.RegistroVotacao, __base__),
|
|
(sessao.VotoParlamentar, __base__),
|
|
]
|
|
}
|
|
|
|
rules_group_painel = {
|
|
'group': SAPL_GROUP_PAINEL,
|
|
'rules': [
|
|
(painel.Painel, __base__),
|
|
(painel.Cronometro, __base__),
|
|
]
|
|
}
|
|
|
|
rules_group_autor = {
|
|
'group': SAPL_GROUP_AUTOR,
|
|
'rules': [
|
|
(materia.Proposicao, __base__),
|
|
(compilacao.Dispositivo, __base__ + [
|
|
'change_dispositivo_edicao_dinamica',
|
|
])
|
|
]
|
|
}
|
|
|
|
rules_group_parlamentar = {
|
|
'group': SAPL_GROUP_PARLAMENTAR,
|
|
'rules': []
|
|
}
|
|
|
|
rules_group_geral = {
|
|
'group': SAPL_GROUP_GERAL,
|
|
'rules': [
|
|
(base.AppConfig, __base__ + [
|
|
'menu_sistemas',
|
|
'view_tabelas_auxiliares'
|
|
]),
|
|
|
|
(base.CasaLegislativa, __listdetailchange__),
|
|
(base.ProblemaMigracao, []),
|
|
(base.TipoAutor, __base__),
|
|
(base.Autor, __base__),
|
|
|
|
(protocoloadm.StatusTramitacaoAdministrativo, __base__),
|
|
(protocoloadm.TipoDocumentoAdministrativo, __base__),
|
|
|
|
(comissoes.CargoComissao, __base__),
|
|
(comissoes.TipoComissao, __base__),
|
|
(comissoes.Periodo, __base__),
|
|
|
|
(materia.AssuntoMateria, []), # não há implementação
|
|
(materia.MateriaAssunto, []), # não há implementação
|
|
(materia.TipoProposicao, __base__),
|
|
(materia.TipoMateriaLegislativa, __base__),
|
|
(materia.RegimeTramitacao, __base__),
|
|
(materia.Origem, __base__),
|
|
(materia.TipoDocumento, __base__),
|
|
(materia.Orgao, __base__),
|
|
(materia.TipoFimRelatoria, __base__),
|
|
(materia.Parecer, __base__),
|
|
(materia.StatusTramitacao, __base__),
|
|
(materia.UnidadeTramitacao, __base__),
|
|
|
|
(norma.AssuntoNorma, __base__),
|
|
(norma.TipoNormaJuridica, __base__),
|
|
|
|
(parlamentares.Legislatura, __base__),
|
|
(parlamentares.SessaoLegislativa, __base__),
|
|
(parlamentares.Coligacao, __base__),
|
|
(parlamentares.ComposicaoColigacao, __base__),
|
|
(parlamentares.Partido, __base__),
|
|
(parlamentares.Municipio, __base__),
|
|
(parlamentares.NivelInstrucao, __base__),
|
|
(parlamentares.SituacaoMilitar, __base__),
|
|
(parlamentares.Parlamentar, __base__),
|
|
(parlamentares.TipoDependente, __base__),
|
|
(parlamentares.Dependente, __base__),
|
|
(parlamentares.Filiacao, __base__),
|
|
(parlamentares.TipoAfastamento, __base__),
|
|
(parlamentares.Mandato, __base__),
|
|
(parlamentares.CargoMesa, __base__),
|
|
(parlamentares.ComposicaoMesa, __base__),
|
|
(parlamentares.Frente, __base__),
|
|
|
|
(sessao.CargoBancada, __base__),
|
|
(sessao.Bancada, __base__),
|
|
(sessao.TipoSessaoPlenaria, __base__),
|
|
(sessao.TipoResultadoVotacao, __base__),
|
|
(sessao.TipoExpediente, __base__),
|
|
(sessao.Bloco, __base__),
|
|
|
|
(lexml.LexmlProvedor, __base__),
|
|
(lexml.LexmlPublicador, __base__),
|
|
|
|
(compilacao.VeiculoPublicacao, __base__),
|
|
(compilacao.TipoTextoArticulado, __base__),
|
|
(compilacao.TipoNota, __base__),
|
|
(compilacao.TipoVide, __base__),
|
|
(compilacao.TipoPublicacao, __base__),
|
|
|
|
# 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__),
|
|
|
|
# estes tres models são complexos e a principio apenas o admin tem perm
|
|
(compilacao.TipoDispositivo, []),
|
|
(compilacao.TipoDispositivoRelationship, []),
|
|
(compilacao.PerfilEstruturalTextoArticulado, []),
|
|
]
|
|
}
|
|
|
|
|
|
# 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]),
|
|
]
|
|
}
|
|
|
|
rules_group_login_social = {
|
|
'group': SAPL_GROUP_LOGIN_SOCIAL,
|
|
'rules': []
|
|
}
|
|
|
|
rules_group_geral['rules'] = (rules_group_geral['rules'] +
|
|
rules_group_administrativo['rules'] +
|
|
rules_group_protocolo['rules'] +
|
|
rules_group_comissoes['rules'] +
|
|
rules_group_materia['rules'] +
|
|
rules_group_norma['rules'] +
|
|
rules_group_sessao['rules'] +
|
|
rules_group_painel['rules'] +
|
|
rules_group_login_social['rules'])
|
|
|
|
|
|
rules_patterns = [
|
|
rules_group_administrativo,
|
|
rules_group_protocolo,
|
|
rules_group_comissoes,
|
|
rules_group_materia,
|
|
rules_group_norma,
|
|
rules_group_sessao,
|
|
rules_group_painel,
|
|
rules_group_geral,
|
|
rules_group_autor,
|
|
rules_group_parlamentar,
|
|
|
|
rules_group_anonymous, # anotação para validação do teste de rules
|
|
rules_group_login_social # TODO não implementado
|
|
]
|
|
|