diff --git a/sapl/parlamentares/migrations/0025_frente.py b/sapl/parlamentares/migrations/0025_frente.py new file mode 100644 index 000000000..1ba6cdb15 --- /dev/null +++ b/sapl/parlamentares/migrations/0025_frente.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-09-16 13:25 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('parlamentares', '0024_merge'), + ] + + operations = [ + migrations.CreateModel( + name='Frente', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nome', models.CharField(max_length=80, verbose_name='Nome da Frente')), + ('data_criacao', models.DateField(verbose_name='Data Criação')), + ('data_extincao', models.DateField(blank=True, verbose_name='Data Dissolução')), + ('descricao', models.TextField(blank=True, verbose_name='Descrição')), + ('parlamentares', models.ManyToManyField(blank=True, to='parlamentares.Parlamentar', verbose_name='Parlamentares')), + ], + options={ + 'verbose_name': 'Frente', + 'verbose_name_plural': 'Frentes', + }, + ), + ] diff --git a/sapl/parlamentares/migrations/0026_auto_20160916_1034.py b/sapl/parlamentares/migrations/0026_auto_20160916_1034.py new file mode 100644 index 000000000..fecddb39a --- /dev/null +++ b/sapl/parlamentares/migrations/0026_auto_20160916_1034.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-09-16 13:34 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('parlamentares', '0025_frente'), + ] + + operations = [ + migrations.AlterField( + model_name='frente', + name='data_extincao', + field=models.DateField(blank=True, null=True, verbose_name='Data Dissolução'), + ), + ] diff --git a/sapl/parlamentares/models.py b/sapl/parlamentares/models.py index 735fc447f..67039a107 100644 --- a/sapl/parlamentares/models.py +++ b/sapl/parlamentares/models.py @@ -409,3 +409,31 @@ class ComposicaoMesa(models.Model): return _('%(parlamentar)s - %(cargo)s') % { 'parlamentar': self.parlamentar, 'cargo': self.cargo } + + +class Frente(models.Model): + ''' + * Uma frente agrupa vários parlamentares + * Cada parlamentar pode fazer parte de uma ou mais frentes + * Uma frente pode existir por mais de uma legislatura? + ''' + nome = models.CharField( + max_length=80, + verbose_name=_('Nome da Frente')) + parlamentares = models.ManyToManyField(Parlamentar, + blank=True, + verbose_name=_('Parlamentares')) + data_criacao = models.DateField(verbose_name=_('Data Criação')) + data_extincao = models.DateField( + blank=True, null=True, verbose_name=_('Data Dissolução')) + descricao = models.TextField(blank=True, verbose_name=_('Descrição')) + + class Meta: + verbose_name = _('Frente') + verbose_name_plural = _('Frentes') + + def get_parlamentares(self): + return Parlamentar.objects.filter(ativo=True) + + def __str__(self): + return self.nome diff --git a/sapl/parlamentares/urls.py b/sapl/parlamentares/urls.py index 09bc8bf3f..26304d3d8 100644 --- a/sapl/parlamentares/urls.py +++ b/sapl/parlamentares/urls.py @@ -2,9 +2,10 @@ from django.conf.urls import include, url from sapl.parlamentares.views import (CargoMesaCrud, ColigacaoCrud, ComposicaoColigacaoCrud, DependenteCrud, - FiliacaoCrud, LegislaturaCrud, - MandatoCrud, MesaDiretoraView, - NivelInstrucaoCrud, ParlamentarCrud, + FiliacaoCrud, FrenteCrud, + LegislaturaCrud, MandatoCrud, + MesaDiretoraView, NivelInstrucaoCrud, + ParlamentarCrud, ParticipacaoParlamentarCrud, PartidoCrud, ProposicaoParlamentarCrud, RelatoriaParlamentarCrud, @@ -24,10 +25,12 @@ urlpatterns = [ ProposicaoParlamentarCrud.get_urls() + RelatoriaParlamentarCrud.get_urls() )), + url(r'^sistema/coligacao/', include(ColigacaoCrud.get_urls() + ComposicaoColigacaoCrud.get_urls())), - + url(r'^sistema/frente/', + include(FrenteCrud.get_urls())), url(r'^sistema/parlamentar/legislatura/', include(LegislaturaCrud.get_urls())), url(r'^sistema/parlamentar/tipo-dependente/', diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py index fda746e0e..93f95e46c 100644 --- a/sapl/parlamentares/views.py +++ b/sapl/parlamentares/views.py @@ -20,11 +20,32 @@ from sapl.utils import permissao_tb_aux, permissoes_parlamentares from .forms import (ComposicaoColigacaoForm, FiliacaoForm, LegislaturaForm, ParlamentarCreateForm, ParlamentarForm) from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa, - Dependente, Filiacao, Legislatura, Mandato, + Dependente, Filiacao, Frente, Legislatura, Mandato, NivelInstrucao, Parlamentar, Partido, SessaoLegislativa, SituacaoMilitar, TipoAfastamento, TipoDependente) +class FrenteCrud(Crud): + model = Frente + help_path = '' + + class CreateView(PermissionRequiredMixin, CrudCreateView): + permission_required = permissoes_parlamentares() + + # def get_initial(self): + # return {'parlamentares': Parlamentar.objects.filter(ativo=True)} + + # class UpdateView(PermissionRequiredMixin, CrudUpdateView): + # permission_required = permissoes_parlamentares() + # + # def get_initial(self): + # initial = self.initial.copy() + # if self.object.materia: + # initial['parlamentares'] = Parlamentar.object.filter( + # ativo=True) + # return initial + + class RelatoriaParlamentarCrud(MasterDetailCrud): model = Relatoria parent_field = 'parlamentar' diff --git a/sapl/templates/parlamentares/layouts.yaml b/sapl/templates/parlamentares/layouts.yaml index 24a0aab86..f455a593e 100644 --- a/sapl/templates/parlamentares/layouts.yaml +++ b/sapl/templates/parlamentares/layouts.yaml @@ -91,3 +91,10 @@ SituacaoMilitar: ComposicaoColigacao: {% trans 'Nome do Partido' %}: - partido + +Frente: + {% trans 'Frente' %}: + - nome + - data_criacao data_extincao + - parlamentares + - descricao