Browse Source

add model OperadorAutor

pull/3371/head
Leandro Roberto 5 years ago
parent
commit
4f6c914b90
  1. 61
      sapl/base/migrations/0046_auto_20210314_1532.py
  2. 41
      sapl/base/models.py
  3. 6
      sapl/rules/__init__.py
  4. 10
      sapl/rules/map_rules.py

61
sapl/base/migrations/0046_auto_20210314_1532.py

@ -0,0 +1,61 @@
# Generated by Django 2.2.13 on 2021-03-14 18:32
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
def adjust_user_oto_m2m(apps, schema_editor):
Autor = apps.get_model('base', 'Autor')
autores = Autor.objects.all()
for a in autores:
if a.user:
a.operadores.add(a.user)
def adjust_remove_grupo_parlamentar(apps, schema_editor):
Group = apps.get_model('auth', 'Group')
Group.objects.filter(name='Parlamentar').delete()
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('base', '0045_auto_20210301_1537'),
]
operations = [
migrations.CreateModel(
name='OperadorAutor',
fields=[
('id', models.AutoField(auto_created=True,
primary_key=True, serialize=False, verbose_name='ID')),
('autor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
related_name='operadorautor_set', to='base.Autor', verbose_name='Autor')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
related_name='operadorautor_set', to=settings.AUTH_USER_MODEL, verbose_name='Operador do Autor')),
],
options={
'verbose_name': 'Operador do Autor',
'verbose_name_plural': 'Operadores do Autor',
'unique_together': {('user', 'autor')},
},
),
migrations.AddField(
model_name='autor',
name='operadores',
field=models.ManyToManyField(
related_name='autor_set', through='base.OperadorAutor', to=settings.AUTH_USER_MODEL),
),
migrations.RunPython(adjust_user_oto_m2m),
migrations.RunPython(adjust_remove_grupo_parlamentar),
migrations.RemoveField(
model_name='autor',
name='user',
),
]

41
sapl/base/models.py

@ -1,6 +1,7 @@
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.db.models.deletion import CASCADE
from django.db.models.signals import post_migrate
from django.db.utils import DEFAULT_DB_ALIAS
from django.utils.translation import ugettext_lazy as _
@ -9,6 +10,7 @@ import reversion
from sapl.utils import (LISTA_DE_UFS, YES_NO_CHOICES,
get_settings_auth_user_model, models_with_gr_for_model)
DOC_ADM_OSTENSIVO = 'O'
DOC_ADM_RESTRITIVO = 'R'
@ -256,10 +258,13 @@ class TipoAutor(models.Model):
@reversion.register()
class Autor(models.Model):
user = models.OneToOneField(
operadores = models.ManyToManyField(
get_settings_auth_user_model(),
on_delete=models.SET_NULL,
null=True)
through='OperadorAutor',
through_fields=('autor', 'user'),
symmetrical=False,
related_name='autor_set')
tipo = models.ForeignKey(
TipoAutor,
verbose_name=_('Tipo do Autor'),
@ -303,6 +308,36 @@ class Autor(models.Model):
return '?'
class OperadorAutor(models.Model):
user = models.ForeignKey(
get_settings_auth_user_model(),
verbose_name=_('Operador do Autor'),
related_name='operadorautor_set',
on_delete=CASCADE)
autor = models.ForeignKey(
Autor,
related_name='operadorautor_set',
verbose_name=_('Autor'),
on_delete=CASCADE)
@property
def user_name(self):
return '%s - %s' % (
self.user.get_display_name(),
self.user.email)
class Meta:
verbose_name = _('Operador do Autor')
verbose_name_plural = _('Operadores do Autor')
unique_together = (
('user', 'autor', ),)
def __str__(self):
return self.user_name
class AuditLog(models.Model):
operation = ('C', 'D', 'U')

6
sapl/rules/__init__.py

@ -27,7 +27,6 @@ SAPL_GROUP_SESSAO = _("Operador de Sessão Plenária")
SAPL_GROUP_PAINEL = _("Operador de Painel Eletrônico")
SAPL_GROUP_GERAL = _("Operador Geral")
SAPL_GROUP_AUTOR = _("Autor")
SAPL_GROUP_PARLAMENTAR = _("Parlamentar")
SAPL_GROUP_VOTANTE = _("Votante")
# TODO - funcionalidade ainda não existe mas está aqui para efeito de anotação
@ -48,8 +47,11 @@ SAPL_GROUPS = [
SAPL_GROUP_PAINEL,
SAPL_GROUP_GERAL,
SAPL_GROUP_AUTOR,
SAPL_GROUP_PARLAMENTAR,
SAPL_GROUP_VOTANTE,
SAPL_GROUP_LOGIN_SOCIAL,
SAPL_GROUP_ANONYMOUS,
]
SAPL_GROUPS_DELETE = [
]

10
sapl/rules/map_rules.py

@ -41,7 +41,7 @@ from sapl.rules import (RP_ADD, RP_CHANGE, RP_DELETE, RP_DETAIL, RP_LIST,
SAPL_GROUP_AUTOR, SAPL_GROUP_COMISSOES,
SAPL_GROUP_GERAL, SAPL_GROUP_LOGIN_SOCIAL,
SAPL_GROUP_MATERIA, SAPL_GROUP_NORMA,
SAPL_GROUP_PAINEL, SAPL_GROUP_PARLAMENTAR,
SAPL_GROUP_PAINEL,
SAPL_GROUP_PROTOCOLO, SAPL_GROUP_SESSAO,
SAPL_GROUP_VOTANTE)
from sapl.sessao import models as sessao
@ -211,11 +211,6 @@ rules_group_autor = {
]
}
rules_group_parlamentar = {
'group': SAPL_GROUP_PARLAMENTAR,
'rules': []
}
rules_group_votante = {
'group': SAPL_GROUP_VOTANTE,
'rules': [
@ -261,7 +256,7 @@ rules_group_geral = {
(materia.StatusTramitacao, __base__, __perms_publicas__),
(materia.UnidadeTramitacao, __base__, __perms_publicas__),
(materia.ConfigEtiquetaMateriaLegislativa, __base__, set()),
(norma.AssuntoNorma, __base__, __perms_publicas__),
(norma.TipoNormaJuridica, __base__, __perms_publicas__),
@ -370,7 +365,6 @@ rules_patterns = [
rules_group_painel,
rules_group_geral,
rules_group_autor,
rules_group_parlamentar,
rules_group_votante,
rules_group_anonymous, # anotação para validação do teste de rules

Loading…
Cancel
Save