diff --git a/sapl/parlamentares/migrations/0037_auto_20191025_1140.py b/sapl/parlamentares/migrations/0037_auto_20191025_1140.py new file mode 100644 index 000000000..06f23c096 --- /dev/null +++ b/sapl/parlamentares/migrations/0037_auto_20191025_1140.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.25 on 2019-10-25 14:40 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('parlamentares', '0036_parlamentarfrente'), + ] + + operations = [ + migrations.CreateModel( + name='CargoFrente', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nome_cargo', models.CharField(max_length=80, verbose_name='Cargo de Frente Parlamentar')), + ('cargo_unico', models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Cargo Único ?')), + ], + options={ + 'verbose_name': 'Cargo de Frente Parlamentar', + 'ordering': ('nome_cargo',), + 'verbose_name_plural': 'Cargos de Frente Parlamentar', + }, + ), + migrations.AlterField( + model_name='parlamentarfrente', + name='frente', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='parlamentares.Frente', verbose_name='Frente'), + ), + migrations.AlterField( + model_name='parlamentarfrente', + name='parlamentar', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='parlamentares.Parlamentar', verbose_name='Parlamentar'), + ), + ] diff --git a/sapl/parlamentares/migrations/0038_auto_20191025_1142.py b/sapl/parlamentares/migrations/0038_auto_20191025_1142.py new file mode 100644 index 000000000..d54c45420 --- /dev/null +++ b/sapl/parlamentares/migrations/0038_auto_20191025_1142.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.25 on 2019-10-25 14:42 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('parlamentares', '0037_auto_20191025_1140'), + ] + + operations = [ + migrations.AlterModelOptions( + name='parlamentarfrente', + options={'ordering': ('cargo',), 'verbose_name': 'Parlamentar', 'verbose_name_plural': 'Parlamentares'}, + ), + migrations.AddField( + model_name='parlamentarfrente', + name='cargo', + field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.PROTECT, to='parlamentares.CargoFrente', verbose_name='Cargo'), + preserve_default=False, + ), + ] diff --git a/sapl/parlamentares/models.py b/sapl/parlamentares/models.py index 015add869..01fb8f5d3 100644 --- a/sapl/parlamentares/models.py +++ b/sapl/parlamentares/models.py @@ -605,12 +605,38 @@ class Frente(models.Model): def __str__(self): return self.nome - + + +class CargoFrente(models.Model): + nome_cargo = models.CharField(max_length=80, + verbose_name=_('Cargo de Frente Parlamentar')) + + cargo_unico = models.BooleanField(default=False, + choices=YES_NO_CHOICES, + verbose_name=_('Cargo Único ?')) + + class Meta: + verbose_name = _('Cargo de Frente Parlamentar') + verbose_name_plural = _('Cargos de Frente Parlamentar') + ordering = ('nome_cargo',) + + def __str__(self): + return self.nome_cargo + + @reversion.register() class ParlamentarFrente(models.Model): - frente = models.ForeignKey(Frente, verbose_name=_('Frente')) + frente = models.ForeignKey(Frente, + verbose_name=_('Frente'), + on_delete=models.PROTECT) + parlamentar = models.ForeignKey(Parlamentar, - verbose_name=_('Parlamentar')) + verbose_name=_('Parlamentar'), + on_delete=models.PROTECT) + + cargo = models.ForeignKey(CargoFrente, + verbose_name=_('Cargo'), + on_delete=models.PROTECT) data_entrada = models.DateField(verbose_name=_('Data Entrada')) @@ -621,10 +647,12 @@ class ParlamentarFrente(models.Model): class Meta: verbose_name = _('Parlamentar') verbose_name_plural = _('Parlamentares') + ordering = ('cargo',) def __str__(self): return "%s - %s" % (self.frente, self.parlamentar) + class Votante(models.Model): parlamentar = models.ForeignKey( Parlamentar, verbose_name=_('Parlamentar'), diff --git a/sapl/parlamentares/urls.py b/sapl/parlamentares/urls.py index bdd57a4b4..c7a5401fd 100644 --- a/sapl/parlamentares/urls.py +++ b/sapl/parlamentares/urls.py @@ -2,7 +2,7 @@ from django.conf.urls import include, url from sapl.parlamentares.views import (CargoMesaCrud, ColigacaoCrud, ComposicaoColigacaoCrud, DependenteCrud, - BancadaCrud, CargoBancadaCrud, + BancadaCrud, CargoBancadaCrud, CargoFrenteCrud, FiliacaoCrud, FrenteCrud, FrenteList, LegislaturaCrud, MandatoCrud, MesaDiretoraView, NivelInstrucaoCrud, @@ -69,6 +69,8 @@ urlpatterns = [ include(BancadaCrud.get_urls())), url(r'^sistema/cargo-bancada/', include(CargoBancadaCrud.get_urls())), + url(r'^sistema/cargo-frente/', + include(CargoFrenteCrud.get_urls())), url(r'^sistema/bloco/', include(BlocoCrud.get_urls())), diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py index e7d55de07..e82ec0dc7 100644 --- a/sapl/parlamentares/views.py +++ b/sapl/parlamentares/views.py @@ -45,10 +45,11 @@ from .models import (Bancada, CargoBancada, CargoMesa, Coligacao, ComposicaoColi NivelInstrucao, Parlamentar, Partido, SessaoLegislativa, SituacaoMilitar, TipoAfastamento, TipoDependente, Votante, Bloco, CargoBlocoPartido, HistoricoPartido, CargoBloco, - ParlamentarFrente, AfastamentoParlamentar) + ParlamentarFrente, AfastamentoParlamentar, CargoFrente) CargoBancadaCrud = CrudAux.build(CargoBancada, '') +CargoFrenteCrud = CrudAux.build(CargoFrente, '') CargoMesaCrud = CrudAux.build(CargoMesa, 'cargo_mesa') TipoDependenteCrud = CrudAux.build(TipoDependente, 'tipo_dependente') NivelInstrucaoCrud = CrudAux.build(NivelInstrucao, 'nivel_instrucao') @@ -420,15 +421,18 @@ class ParlamentarFrenteCrud(MasterDetailCrud): help_topic = 'parlamentar_frente' public = [RP_LIST, RP_DETAIL] - class BaseMixin(MasterDetailCrud.BaseMixin): - list_field_names = ['parlamentar', - 'frente', - 'data_entrada', - 'data_saida'] + class CreateView(MasterDetailCrud.CreateView): form_class = ParlamentarFrenteForm + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + + context['subnav_template_name'] = '' + + return context + def get_initial(self): self.initial['frente'] = Frente.objects.get(pk=self.kwargs['pk']) return self.initial @@ -436,13 +440,42 @@ class ParlamentarFrenteCrud(MasterDetailCrud): class UpdateView(MasterDetailCrud.UpdateView): form_class = ParlamentarFrenteForm - def form_valid(self, form): - return super(Crud.UpdateView, self).form_valid(form) + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + + context['subnav_template_name'] = '' + + return context + + + class DetailView(MasterDetailCrud.DetailView): + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['subnav_template_name'] = '' + + return context class ListView(MasterDetailCrud.ListView): layout_key = 'ParlamentarFrenteList' + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + + context['subnav_template_name'] = '' + + rows = context['rows'] + new_rows = [] + for row in rows: + parlamentar = Parlamentar.objects.get(nome_parlamentar=row[1][0]) + new_row = row + new_row[1] = (row[1][0], '/parlamentar/'+str(parlamentar.id)) + new_rows.append(new_row) + context['rows'] = new_rows + return context + + class MandatoCrud(MasterDetailCrud): model = Mandato diff --git a/sapl/templates/menu_tabelas_auxiliares.yaml b/sapl/templates/menu_tabelas_auxiliares.yaml index 8453dcb43..87ae7dbdd 100644 --- a/sapl/templates/menu_tabelas_auxiliares.yaml +++ b/sapl/templates/menu_tabelas_auxiliares.yaml @@ -77,6 +77,9 @@ - title: {% trans 'Frente Parlamentar' %} url: sapl.parlamentares:frente_list css_class: btn btn-link + - title: {% trans 'Cargo de Frente Parlamentar' %} + url: sapl.parlamentares:cargofrente_list + css_class: btn btn-link - title: {% trans 'Bloco Parlamentar' %} url: sapl.parlamentares:bloco_list css_class: btn btn-link diff --git a/sapl/templates/parlamentares/layouts.yaml b/sapl/templates/parlamentares/layouts.yaml index bf3d1ffb6..eba40f5a9 100644 --- a/sapl/templates/parlamentares/layouts.yaml +++ b/sapl/templates/parlamentares/layouts.yaml @@ -152,6 +152,11 @@ CargoBloco: - unico - descricao +CargoFrente: + {% trans 'Cargo' %}: + - nome_cargo + - cargo_unico + AfastamentoParlamentar: {% trans 'Afastamento' %}: - data_inicio data_fim @@ -162,11 +167,14 @@ ParlamentarFrente: {% trans 'Parlamentar Frente'%}: - frente - parlamentar + - cargo - data_entrada - data_saida ParlamentarFrenteList: {% trans 'Parlamentar Frente'%}: + - id - parlamentar + - cargo - data_entrada - data_saida \ No newline at end of file