diff --git a/parlamentares/forms.py b/parlamentares/forms.py index 42af57529..763f9a491 100644 --- a/parlamentares/forms.py +++ b/parlamentares/forms.py @@ -10,7 +10,8 @@ from floppyforms.widgets import ClearableFileInput import sapl from sapl.utils import intervalos_tem_intersecao -from .models import Filiacao, Legislatura, Mandato, Parlamentar +from .models import (ComposicaoColigacao, Filiacao, Legislatura, + Mandato, Parlamentar) class ImageThumbnailFileInput(ClearableFileInput): @@ -154,3 +155,15 @@ class FiliacaoForm(ModelForm): raise ValidationError(validacao[1]) return self.cleaned_data + + +class ComposicaoColigacaoForm(ModelForm): + + class Meta: + model = ComposicaoColigacao + fields = ['partido'] + + def clean(self): + if self.errors: + return self.errors + return self.cleaned_data diff --git a/parlamentares/layouts.yaml b/parlamentares/layouts.yaml index be274551b..866a791f9 100644 --- a/parlamentares/layouts.yaml +++ b/parlamentares/layouts.yaml @@ -88,3 +88,7 @@ TipoAfastamento: SituacaoMilitar: Tipo Situação Militar: - descricao + +ComposicaoColigacao: + 'Nome do Partido': + - partido diff --git a/parlamentares/migrations/0019_auto_20160518_1136.py b/parlamentares/migrations/0019_auto_20160518_1136.py new file mode 100644 index 000000000..f391c8be8 --- /dev/null +++ b/parlamentares/migrations/0019_auto_20160518_1136.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-18 14:36 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('parlamentares', '0018_auto_20160510_0943'), + ] + + operations = [ + migrations.AlterField( + model_name='composicaocoligacao', + name='partido', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='parlamentares.Partido', verbose_name='Partido'), + ), + ] diff --git a/parlamentares/models.py b/parlamentares/models.py index b591e5fcb..b315e3d8d 100644 --- a/parlamentares/models.py +++ b/parlamentares/models.py @@ -95,7 +95,7 @@ class Partido(models.Model): class ComposicaoColigacao(models.Model): # TODO M2M - partido = models.ForeignKey(Partido) + partido = models.ForeignKey(Partido, verbose_name=_('Partido')) coligacao = models.ForeignKey(Coligacao) class Meta: diff --git a/parlamentares/urls.py b/parlamentares/urls.py index a6137d613..de3525339 100644 --- a/parlamentares/urls.py +++ b/parlamentares/urls.py @@ -1,6 +1,7 @@ from django.conf.urls import include, url -from parlamentares.views import (CargoMesaCrud, ColigacaoCrud, DependenteCrud, +from parlamentares.views import (CargoMesaCrud, ColigacaoCrud, + ComposicaoColigacaoCrud, DependenteCrud, FiliacaoCrud, LegislaturaCrud, MandatoCrud, MesaDiretoraView, NivelInstrucaoCrud, ParlamentarCrud, PartidoCrud, @@ -16,6 +17,9 @@ urlpatterns = [ ParlamentarCrud.get_urls() + DependenteCrud.get_urls() + FiliacaoCrud.get_urls() + MandatoCrud.get_urls() )), + url(r'^coligacao/', + include(ColigacaoCrud.get_urls() + + ComposicaoColigacaoCrud.get_urls())), url(r'^sistema/parlamentar/legislatura/', include(LegislaturaCrud.get_urls())), @@ -23,8 +27,6 @@ urlpatterns = [ include(TipoDependenteCrud.get_urls())), url(r'^sistema/parlamentar/nivel-instrucao/', include(NivelInstrucaoCrud.get_urls())), - url(r'^sistema/parlamentar/coligacao/', - include(ColigacaoCrud.get_urls())), url(r'^sistema/parlamentar/tipo-afastamento/', include(TipoAfastamentoCrud.get_urls())), url(r'^sistema/parlamentar/tipo-militar/', diff --git a/parlamentares/views.py b/parlamentares/views.py index 75f61426e..27d8b518e 100644 --- a/parlamentares/views.py +++ b/parlamentares/views.py @@ -10,15 +10,16 @@ import crud.masterdetail from crud.base import Crud from crud.masterdetail import MasterDetailCrud -from .forms import (FiliacaoForm, LegislaturaForm, ParlamentarCreateForm, - ParlamentarForm) -from .models import (CargoMesa, Coligacao, ComposicaoMesa, Dependente, - Filiacao, Legislatura, Mandato, NivelInstrucao, - Parlamentar, Partido, SessaoLegislativa, SituacaoMilitar, - TipoAfastamento, TipoDependente) +from .forms import (ComposicaoColigacaoForm, FiliacaoForm, LegislaturaForm, + ParlamentarCreateForm, ParlamentarForm) + +from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa, + Dependente, Filiacao, Legislatura, Mandato, + NivelInstrucao, Parlamentar, Partido, SessaoLegislativa, + SituacaoMilitar, TipoAfastamento, TipoDependente) CargoMesaCrud = Crud.build(CargoMesa, 'cargo_mesa') -# LegislaturaCrud = Crud.build(Legislatura, 'tabelas_auxiliares#legislatura') +LegislaturaCrud = Crud.build(Legislatura, 'tabelas_auxiliares#legislatura') ColigacaoCrud = Crud.build(Coligacao, 'coligacao') PartidoCrud = Crud.build(Partido, 'partidos') SessaoLegislativaCrud = Crud.build(SessaoLegislativa, 'sessao_legislativa') @@ -39,6 +40,21 @@ class MandatoCrud(MasterDetailCrud): ordering = ('-legislatura__data_inicio') +class ComposicaoColigacaoCrud(MasterDetailCrud): + model = ComposicaoColigacao + parent_field = 'coligacao' + help_path = '' + + class CreateView(MasterDetailCrud.CreateView): + form_class = ComposicaoColigacaoForm + + class UpdateView(MasterDetailCrud.UpdateView): + form_class = ComposicaoColigacaoForm + + class ListView(MasterDetailCrud.ListView): + ordering = '-partido__sigla' + + class LegislaturaCrud(Crud): model = Legislatura help_path = 'tabelas_auxiliares#legislatura' diff --git a/templates/parlamentares/coligacao_detail.html b/templates/parlamentares/coligacao_detail.html new file mode 100644 index 000000000..9b9be3a54 --- /dev/null +++ b/templates/parlamentares/coligacao_detail.html @@ -0,0 +1,10 @@ +{% extends "crud/detail.html" %} +{% load i18n %} + +{% block actions %} +
+{% endblock actions %} \ No newline at end of file diff --git a/templates/parlamentares/subnav.yaml b/templates/parlamentares/subnav.yaml index 1287cb308..fc171ea84 100644 --- a/templates/parlamentares/subnav.yaml +++ b/templates/parlamentares/subnav.yaml @@ -6,3 +6,4 @@ url: filiacao_list - title: Dependentes url: dependente_list +