Browse Source

Ordenação dos cargos de comissão (#3047)

* Adiciona id_ordenacao em CargoComissao

* Adiciona Ordenação dos Cargos - Tabelas Auxiliares

* Adiciona rotas

* Adiciona ordenação de cargos de comissão

* fix migrations

* Add mudança para posição ocupada/livre

* Corrige orderings e adiciona link p/ cargo

* Adiciona migration

* Adiciona comentários

* Update sapl/comissoes/forms.py

* Update sapl/comissoes/forms.py

* Adiciona correções

* Refatoração
pull/3074/head
João Rodrigues 5 years ago
committed by Cesar Augusto de Carvalho
parent
commit
4c3e1f5794
  1. 6
      sapl/comissoes/forms.py
  2. 33
      sapl/comissoes/migrations/0023_auto_20191211_1752.py
  3. 10
      sapl/comissoes/models.py
  4. 11
      sapl/comissoes/urls.py
  5. 28
      sapl/comissoes/views.py
  6. 3
      sapl/templates/comissoes/layouts.yaml

6
sapl/comissoes/forms.py

@ -15,13 +15,13 @@ from sapl.base.models import Autor, TipoAutor
from sapl.comissoes.models import (Comissao, Composicao, from sapl.comissoes.models import (Comissao, Composicao,
DocumentoAcessorio, Participacao, DocumentoAcessorio, Participacao,
Periodo, Reuniao) Periodo, Reuniao)
from sapl.crispy_layout_mixin import (form_actions, SaplFormHelper, from sapl.crispy_layout_mixin import (form_actions, SaplFormHelper,
to_row) to_row)
from sapl.materia.models import MateriaEmTramitacao, PautaReuniao from sapl.materia.models import MateriaEmTramitacao, PautaReuniao
from sapl.parlamentares.models import (Legislatura, Mandato, from sapl.parlamentares.models import (Legislatura, Mandato,
Parlamentar) Parlamentar)
from sapl.utils import (FileFieldCheckMixin, FilterOverridesMetaMixin, from sapl.utils import (FileFieldCheckMixin,
validar_arquivo) FilterOverridesMetaMixin, validar_arquivo)
class ComposicaoForm(forms.ModelForm): class ComposicaoForm(forms.ModelForm):

33
sapl/comissoes/migrations/0023_auto_20191211_1752.py

@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-12-11 20:52
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('comissoes', '0022_auto_20191120_1440'),
]
operations = [
migrations.AlterModelOptions(
name='cargocomissao',
options={'ordering': ['id_ordenacao'], 'verbose_name': 'Cargo de Comissão', 'verbose_name_plural': 'Cargos de Comissão'},
),
migrations.AlterModelOptions(
name='participacao',
options={'ordering': ['-titular', 'cargo__id_ordenacao'], 'verbose_name': 'Participação em Comissão', 'verbose_name_plural': 'Participações em Comissão'},
),
migrations.AddField(
model_name='cargocomissao',
name='id_ordenacao',
field=models.PositiveIntegerField(blank=True, null=True, verbose_name='Posição na Ordenação'),
),
migrations.AlterField(
model_name='cargocomissao',
name='nome',
field=models.CharField(max_length=50, verbose_name='Nome do Cargo'),
),
]

10
sapl/comissoes/models.py

@ -121,13 +121,18 @@ class Periodo(models.Model): # PeriodoCompComissao
@reversion.register() @reversion.register()
class CargoComissao(models.Model): class CargoComissao(models.Model):
nome = models.CharField(max_length=50, verbose_name=_('Cargo')) id_ordenacao = models.PositiveIntegerField(
blank=True, null=True, verbose_name=_('Posição na Ordenação'),
)
nome = models.CharField(max_length=50, verbose_name=_('Nome do Cargo'))
unico = models.BooleanField( unico = models.BooleanField(
choices=YES_NO_CHOICES, verbose_name=_('Único'), default=True) choices=YES_NO_CHOICES, verbose_name=_('Único'), default=True
)
class Meta: class Meta:
verbose_name = _('Cargo de Comissão') verbose_name = _('Cargo de Comissão')
verbose_name_plural = _('Cargos de Comissão') verbose_name_plural = _('Cargos de Comissão')
ordering = ['id_ordenacao']
def __str__(self): def __str__(self):
return self.nome return self.nome
@ -180,6 +185,7 @@ class Participacao(models.Model): # ComposicaoComissao
class Meta: class Meta:
verbose_name = _('Participação em Comissão') verbose_name = _('Participação em Comissão')
verbose_name_plural = _('Participações em Comissão') verbose_name_plural = _('Participações em Comissão')
ordering = ['-titular', 'cargo__id_ordenacao']
def __str__(self): def __str__(self):
return '%s : %s' % (self.cargo, self.parlamentar) return '%s : %s' % (self.cargo, self.parlamentar)

11
sapl/comissoes/urls.py

@ -1,8 +1,9 @@
from django.conf.urls import include, url from django.conf.urls import include, url
from sapl.comissoes.views import (CargoCrud, ComissaoCrud, ComposicaoCrud, from sapl.comissoes.views import (AdicionaPautaView, CargoComissaoCrud, ComissaoCrud,
DocumentoAcessorioCrud, MateriasTramitacaoListView, ParticipacaoCrud, ComposicaoCrud, DocumentoAcessorioCrud,
PeriodoComposicaoCrud, ReuniaoCrud, TipoComissaoCrud, get_participacoes_comissao, MateriasTramitacaoListView, ParticipacaoCrud,
AdicionaPautaView, RemovePautaView) get_participacoes_comissao, PeriodoComposicaoCrud,
RemovePautaView, ReuniaoCrud, TipoComissaoCrud)
from .apps import AppConfig from .apps import AppConfig
@ -21,7 +22,7 @@ urlpatterns = [
url(r'^comissao/(?P<pk>\d+)/pauta/add', AdicionaPautaView.as_view(), name='pauta_add'), url(r'^comissao/(?P<pk>\d+)/pauta/add', AdicionaPautaView.as_view(), name='pauta_add'),
url(r'^comissao/(?P<pk>\d+)/pauta/remove', RemovePautaView.as_view(), name='pauta_remove'), url(r'^comissao/(?P<pk>\d+)/pauta/remove', RemovePautaView.as_view(), name='pauta_remove'),
url(r'^sistema/comissao/cargo/', include(CargoCrud.get_urls())), url(r'^sistema/comissao/cargo/', include(CargoComissaoCrud.get_urls())),
url(r'^sistema/comissao/periodo-composicao/', url(r'^sistema/comissao/periodo-composicao/',
include(PeriodoComposicaoCrud.get_urls())), include(PeriodoComposicaoCrud.get_urls())),
url(r'^sistema/comissao/tipo/', include(TipoComissaoCrud.get_urls())), url(r'^sistema/comissao/tipo/', include(TipoComissaoCrud.get_urls())),

28
sapl/comissoes/views.py

@ -1,12 +1,12 @@
import logging import logging
from django.core.urlresolvers import reverse
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.mixins import PermissionRequiredMixin from django.contrib.auth.mixins import PermissionRequiredMixin
from django.core.urlresolvers import reverse
from django.db.models import F from django.db.models import F
from django.http.response import HttpResponseRedirect, JsonResponse from django.http.response import HttpResponseRedirect, JsonResponse
from django.views.decorators.clickjacking import xframe_options_exempt from django.views.decorators.clickjacking import xframe_options_exempt
from django.views.generic import ListView, CreateView, DeleteView from django.views.generic import CreateView, DeleteView, FormView, ListView
from django.views.generic.base import RedirectView from django.views.generic.base import RedirectView
from django.views.generic.detail import DetailView from django.views.generic.detail import DetailView
from django.views.generic.edit import FormMixin, UpdateView from django.views.generic.edit import FormMixin, UpdateView
@ -19,14 +19,15 @@ from sapl.comissoes.apps import AppConfig
from sapl.comissoes.forms import (ComissaoForm, ComposicaoForm, from sapl.comissoes.forms import (ComissaoForm, ComposicaoForm,
DocumentoAcessorioCreateForm, DocumentoAcessorioCreateForm,
DocumentoAcessorioEditForm, DocumentoAcessorioEditForm,
ParticipacaoCreateForm, ParticipacaoEditForm, ParticipacaoCreateForm,
PautaReuniaoForm, PeriodoForm, ReuniaoForm, ParticipacaoEditForm,
PautaReuniaoFilterSet) PautaReuniaoFilterSet, PautaReuniaoForm,
from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux, PeriodoForm, ReuniaoForm)
MasterDetailCrud, from sapl.crud.base import (Crud, CrudAux, MasterDetailCrud,
PermissionRequiredForAppCrudMixin) PermissionRequiredForAppCrudMixin, RP_DETAIL,
from sapl.materia.models import (MateriaLegislativa, Tramitacao, PautaReuniao, RP_LIST)
MateriaEmTramitacao) from sapl.materia.models import (MateriaEmTramitacao, MateriaLegislativa,
PautaReuniao, Tramitacao)
from sapl.utils import show_results_filter_set from sapl.utils import show_results_filter_set
from .models import (CargoComissao, Comissao, Composicao, DocumentoAcessorio, from .models import (CargoComissao, Comissao, Composicao, DocumentoAcessorio,
@ -46,7 +47,10 @@ def pegar_url_reuniao(pk):
url = reverse('sapl.comissoes:reuniao_detail', kwargs={'pk': r_pk}) url = reverse('sapl.comissoes:reuniao_detail', kwargs={'pk': r_pk})
return url return url
CargoCrud = CrudAux.build(CargoComissao, 'cargo_comissao') CargoComissaoCrud = CrudAux.build(
CargoComissao, 'cargo_comissao',
list_field_names=['nome', 'id_ordenacao', 'unico']
)
TipoComissaoCrud = CrudAux.build( TipoComissaoCrud = CrudAux.build(
TipoComissao, 'tipo_comissao', list_field_names=[ TipoComissao, 'tipo_comissao', list_field_names=[
@ -143,7 +147,7 @@ class ComposicaoCrud(MasterDetailCrud):
context['participacao_set'] = Participacao.objects.filter( context['participacao_set'] = Participacao.objects.filter(
composicao__pk=context['composicao_pk'] composicao__pk=context['composicao_pk']
).order_by('id') ).order_by('-titular', 'cargo__id_ordenacao', 'id')
return context return context

3
sapl/templates/comissoes/layouts.yaml

@ -1,7 +1,8 @@
{% load i18n %} {% load i18n %}
CargoComissao: CargoComissao:
{% trans 'Cargo de Comissão' %}: {% trans 'Cargo de Comissão' %}:
- nome:10 unico - nome:6 unico id_ordenacao
Periodo: Periodo:
{% trans 'Período de composição de Comissão' %}: {% trans 'Período de composição de Comissão' %}:

Loading…
Cancel
Save