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. 8
      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.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
from django.db.models.deletion import CASCADE
from django.db.models.signals import post_migrate from django.db.models.signals import post_migrate
from django.db.utils import DEFAULT_DB_ALIAS from django.db.utils import DEFAULT_DB_ALIAS
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
@ -9,6 +10,7 @@ import reversion
from sapl.utils import (LISTA_DE_UFS, YES_NO_CHOICES, from sapl.utils import (LISTA_DE_UFS, YES_NO_CHOICES,
get_settings_auth_user_model, models_with_gr_for_model) get_settings_auth_user_model, models_with_gr_for_model)
DOC_ADM_OSTENSIVO = 'O' DOC_ADM_OSTENSIVO = 'O'
DOC_ADM_RESTRITIVO = 'R' DOC_ADM_RESTRITIVO = 'R'
@ -256,10 +258,13 @@ class TipoAutor(models.Model):
@reversion.register() @reversion.register()
class Autor(models.Model): class Autor(models.Model):
user = models.OneToOneField( operadores = models.ManyToManyField(
get_settings_auth_user_model(), get_settings_auth_user_model(),
on_delete=models.SET_NULL, through='OperadorAutor',
null=True) through_fields=('autor', 'user'),
symmetrical=False,
related_name='autor_set')
tipo = models.ForeignKey( tipo = models.ForeignKey(
TipoAutor, TipoAutor,
verbose_name=_('Tipo do Autor'), verbose_name=_('Tipo do Autor'),
@ -303,6 +308,36 @@ class Autor(models.Model):
return '?' 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): class AuditLog(models.Model):
operation = ('C', 'D', 'U') 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_PAINEL = _("Operador de Painel Eletrônico")
SAPL_GROUP_GERAL = _("Operador Geral") SAPL_GROUP_GERAL = _("Operador Geral")
SAPL_GROUP_AUTOR = _("Autor") SAPL_GROUP_AUTOR = _("Autor")
SAPL_GROUP_PARLAMENTAR = _("Parlamentar")
SAPL_GROUP_VOTANTE = _("Votante") SAPL_GROUP_VOTANTE = _("Votante")
# TODO - funcionalidade ainda não existe mas está aqui para efeito de anotação # 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_PAINEL,
SAPL_GROUP_GERAL, SAPL_GROUP_GERAL,
SAPL_GROUP_AUTOR, SAPL_GROUP_AUTOR,
SAPL_GROUP_PARLAMENTAR,
SAPL_GROUP_VOTANTE, SAPL_GROUP_VOTANTE,
SAPL_GROUP_LOGIN_SOCIAL, SAPL_GROUP_LOGIN_SOCIAL,
SAPL_GROUP_ANONYMOUS, SAPL_GROUP_ANONYMOUS,
] ]
SAPL_GROUPS_DELETE = [
]

8
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_AUTOR, SAPL_GROUP_COMISSOES,
SAPL_GROUP_GERAL, SAPL_GROUP_LOGIN_SOCIAL, SAPL_GROUP_GERAL, SAPL_GROUP_LOGIN_SOCIAL,
SAPL_GROUP_MATERIA, SAPL_GROUP_NORMA, SAPL_GROUP_MATERIA, SAPL_GROUP_NORMA,
SAPL_GROUP_PAINEL, SAPL_GROUP_PARLAMENTAR, SAPL_GROUP_PAINEL,
SAPL_GROUP_PROTOCOLO, SAPL_GROUP_SESSAO, SAPL_GROUP_PROTOCOLO, SAPL_GROUP_SESSAO,
SAPL_GROUP_VOTANTE) SAPL_GROUP_VOTANTE)
from sapl.sessao import models as sessao 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 = { rules_group_votante = {
'group': SAPL_GROUP_VOTANTE, 'group': SAPL_GROUP_VOTANTE,
'rules': [ 'rules': [
@ -370,7 +365,6 @@ rules_patterns = [
rules_group_painel, rules_group_painel,
rules_group_geral, rules_group_geral,
rules_group_autor, rules_group_autor,
rules_group_parlamentar,
rules_group_votante, rules_group_votante,
rules_group_anonymous, # anotação para validação do teste de rules rules_group_anonymous, # anotação para validação do teste de rules

Loading…
Cancel
Save