Browse Source

feat: cria MesaDiretoraCrud e ComposicaoMesaCrud sem forms e regras de negócio

3828_refatorar_mesa_diretora
LeandroJatai 14 hours ago
parent
commit
799f0ec7f0
  1. 37
      sapl/parlamentares/migrations/0046_mesadiretora_legislatura.py
  2. 23
      sapl/parlamentares/migrations/0047_auto_20260412_2256.py
  3. 17
      sapl/parlamentares/models.py
  4. 8
      sapl/parlamentares/urls.py
  5. 48
      sapl/parlamentares/views.py
  6. 2
      sapl/templates/index.html
  7. 2
      sapl/templates/navbar.yaml
  8. 0
      sapl/templates/parlamentares/composicaomesa_form_old.html
  9. 15
      sapl/templates/parlamentares/layouts.yaml
  10. 0
      sapl/templates/parlamentares/public_composicaomesa_form_old.html
  11. 5
      sapl/templates/parlamentares/subnav_mesa.yaml

37
sapl/parlamentares/migrations/0046_mesadiretora_legislatura.py

@ -0,0 +1,37 @@
# Generated by Django 2.2.28 on 2026-04-13 01:48
from django.db import migrations, models
import django.db.models.deletion
from datetime import date
def add_legislatura_to_mesa_diretora(apps, schema_editor):
MesaDiretora = apps.get_model('parlamentares', 'MesaDiretora')
SessaoLegislativa = apps.get_model('parlamentares', 'SessaoLegislativa')
for mesa in MesaDiretora.objects.all():
mesa.legislatura = mesa.sessao_legislativa.legislatura
data_inicio = mesa.sessao_legislativa.data_inicio
data_fim = mesa.sessao_legislativa.data_fim
if data_inicio.year == data_fim.year:
mesa.data_inicio = date(data_inicio.year, 1, 1)
mesa.data_fim = date(data_fim.year, 12, 31)
else:
mesa.data_inicio = data_inicio
mesa.data_fim = data_fim
mesa.save()
class Migration(migrations.Migration):
dependencies = [
('parlamentares', '0045_auto_20251201_1531'),
]
operations = [
migrations.AddField(
model_name='mesadiretora',
name='legislatura',
field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.PROTECT, to='parlamentares.Legislatura', verbose_name='Legislatura'),
),
migrations.RunPython(add_legislatura_to_mesa_diretora),
]

23
sapl/parlamentares/migrations/0047_auto_20260412_2256.py

@ -0,0 +1,23 @@
# Generated by Django 2.2.28 on 2026-04-13 01:56
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('parlamentares', '0046_mesadiretora_legislatura'),
]
operations = [
migrations.AlterField(
model_name='mesadiretora',
name='legislatura',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='parlamentares.Legislatura', verbose_name='Legislatura'),
),
migrations.RemoveField(
model_name='mesadiretora',
name='sessao_legislativa',
),
]

17
sapl/parlamentares/models.py

@ -493,27 +493,30 @@ class CargoMesa(models.Model):
class MesaDiretora(models.Model):
data_inicio = models.DateField(verbose_name=_('Data Início'), null=True)
data_fim = models.DateField(verbose_name=_('Data Fim'), null=True)
sessao_legislativa = models.ForeignKey(SessaoLegislativa,
on_delete=models.PROTECT)
legislatura = models.ForeignKey(Legislatura,
on_delete=models.PROTECT,
verbose_name=_('Legislatura'))
descricao = models.TextField(verbose_name=_('Descrição'), blank=True)
class Meta:
verbose_name = _('Mesa Diretora')
verbose_name_plural = _('Mesas Diretoras')
ordering = ('-data_inicio', '-sessao_legislativa')
ordering = ('-data_inicio', '-legislatura')
def __str__(self):
return _('Mesa da %(sessao)s sessao da %(legislatura)s Legislatura') % {
'sessao': self.sessao_legislativa, 'legislatura': self.sessao_legislativa.legislatura
return _('%(legislatura)s - %(data_inicio)s a %(data_fim)s') % {
'legislatura': self.legislatura,
'data_inicio': self.data_inicio,
'data_fim': self.data_fim
}
class ComposicaoMesa(models.Model):
# TODO M2M ???? Ternary?????
parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT)
cargo = models.ForeignKey(CargoMesa, on_delete=models.PROTECT)
mesa_diretora = models.ForeignKey(
MesaDiretora, on_delete=models.PROTECT, null=True)
MesaDiretora, on_delete=models.PROTECT, null=True,
related_name='composicaomesa_set')
class Meta:
verbose_name = _('Ocupação de cargo na Mesa')

8
sapl/parlamentares/urls.py

@ -1,6 +1,6 @@
from django.conf.urls import include, url
from sapl.parlamentares.views import (CargoMesaCrud, ColigacaoCrud,
from sapl.parlamentares.views import (CargoMesaCrud, ColigacaoCrud, ComposicaoMesaCrud, MesaDiretoraCrud,
coligacao_legislatura,
ComposicaoColigacaoCrud, DependenteCrud,
FiliacaoCrud, FrenteCrud, FrenteList,
@ -104,6 +104,12 @@ urlpatterns = [
url(r'^sistema/mesa-diretora/cargo-mesa/',
include(CargoMesaCrud.get_urls())),
url(r'^mesadiretora/', include(
MesaDiretoraCrud.get_urls() + ComposicaoMesaCrud.get_urls()
)),
]
urlpatterns_mesa_old = [
url(r'^mesa-diretora/$',
MesaDiretoraView.as_view(), name='mesa_diretora'),

48
sapl/parlamentares/views.py

@ -1007,20 +1007,58 @@ def parlamentares_filiados(request, pk):
return render(request, template_name, {'partido': partido, 'parlamentares': parlamentares_filiados})
class MesaDiretoraCrud(Crud):
model = MesaDiretora
help_topic = 'mesa_diretora'
public = [RP_DETAIL, RP_LIST]
class BaseMixin(Crud.BaseMixin):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
if 'subnav_template_name' not in context:
context['subnav_template_name'] = 'parlamentares/subnav_mesa.yaml'
return context
class ListView(Crud.ListView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['subnav_template_name'] = ''
return context
class CreateView(Crud.CreateView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['subnav_template_name'] = ''
return context
class ComposicaoMesaCrud(MasterDetailCrud):
model = ComposicaoMesa
parent_field = 'mesa_diretora'
help_topic = 'mesa_diretora'
public = [RP_LIST, RP_DETAIL]
class BaseMixin(MasterDetailCrud.BaseMixin):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['subnav_template_name'] = 'parlamentares/subnav_mesa.yaml'
return context
class MesaDiretoraView(FormView):
template_name = 'parlamentares/composicaomesa_form.html'
success_url = reverse_lazy('sapl.parlamentares:mesa_diretora')
template_name = 'parlamentares/composicaomesa_form_old.html'
success_url = ''#reverse_lazy('sapl.parlamentares:mesa_diretora')
logger = logging.getLogger(__name__)
def get_template_names(self):
if self.request.user.has_perm('parlamentares.change_composicaomesa'):
if 'iframe' not in self.request.GET:
if not self.request.session.get('iframe'):
return 'parlamentares/composicaomesa_form.html'
return 'parlamentares/composicaomesa_form_old.html'
elif self.request.GET['iframe'] == '0':
return 'parlamentares/composicaomesa_form.html'
return 'parlamentares/composicaomesa_form_old.html'
return 'parlamentares/public_composicaomesa_form.html'
return 'parlamentares/public_composicaomesa_form_old.html'
# Essa função avisa quando se pode compor uma Mesa Legislativa
def validation(self, request):

2
sapl/templates/index.html

@ -26,7 +26,7 @@
a dois anos.
</p>
</div>
<a href="{% url 'sapl.parlamentares:mesa_diretora' %}"></a>
<a href="{% url 'sapl.parlamentares:mesadiretora_list' %}"></a>
</div>
<div class="homeBlock">

2
sapl/templates/navbar.yaml

@ -6,7 +6,7 @@
- title: {% trans 'Institucional' %}
children:
- title: {% trans 'Mesa Diretora' %}
url: sapl.parlamentares:mesa_diretora
url: sapl.parlamentares:mesadiretora_list
- title: {% trans 'Bancadas Parlamentares' %}
url: sapl.sessao:bancada_list
- title: {% trans 'Blocos Parlamentares' %}

0
sapl/templates/parlamentares/composicaomesa_form.html → sapl/templates/parlamentares/composicaomesa_form_old.html

15
sapl/templates/parlamentares/layouts.yaml

@ -166,3 +166,18 @@ BlocoMembroList:
- id
- cargo:4 parlamentar
- data_entrada data_saida
MesaDiretora:
{% trans 'Período e Legislatura' %}:
- data_inicio data_fim legislatura:6
- descricao
MesaDiretoraDetail:
{% trans 'Período e Legislatura' %}:
- data_inicio data_fim legislatura:6
- descricao
- composicaomesa_set
ComposicaoMesa:
{% trans 'Composição da Mesa' %}:
- cargo:4 parlamentar

0
sapl/templates/parlamentares/public_composicaomesa_form.html → sapl/templates/parlamentares/public_composicaomesa_form_old.html

5
sapl/templates/parlamentares/subnav_mesa.yaml

@ -0,0 +1,5 @@
{% load i18n common_tags %}
- title: {% trans 'Mesa Diretora' %}
url: sapl.parlamentares:mesadiretora_list
- title: {% trans 'Composição da Mesa' %}
url: sapl.parlamentares:composicaomesa_list
Loading…
Cancel
Save