Browse Source

Fix #415 modulo bancada (#465)

* Criação da tela de Bancada

* Criação da tela de Cargo de  Bancada

* Fix qa

* Ordena listagem por legislatura

* Ordena legislatura no model

* Impede que data de extinção seja menor que a de criação
pull/480/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
committed by Edward
parent
commit
b7c3aaf8df
  1. 19
      parlamentares/migrations/0019_auto_20160518_1204.py
  2. 1
      parlamentares/models.py
  3. 2
      protocoloadm/views.py
  4. 18
      sessao/forms.py
  5. 11
      sessao/layouts.yaml
  6. 33
      sessao/migrations/0017_bancada.py
  7. 31
      sessao/migrations/0018_auto_20160517_1435.py
  8. 27
      sessao/migrations/0019_cargobancada.py
  9. 20
      sessao/migrations/0020_auto_20160517_1450.py
  10. 40
      sessao/models.py
  11. 7
      sessao/urls.py
  12. 32
      sessao/views.py
  13. 4
      templates/sistema.html

19
parlamentares/migrations/0019_auto_20160518_1204.py

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2016-05-18 15:04
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('parlamentares', '0018_auto_20160510_0943'),
]
operations = [
migrations.AlterModelOptions(
name='legislatura',
options={'ordering': ['-data_inicio'], 'verbose_name': 'Legislatura', 'verbose_name_plural': 'Legislaturas'},
),
]

1
parlamentares/models.py

@ -14,6 +14,7 @@ class Legislatura(models.Model):
data_eleicao = models.DateField(verbose_name=_('Data Eleição'))
class Meta:
ordering = ['-data_inicio']
verbose_name = _('Legislatura')
verbose_name_plural = _('Legislaturas')

2
protocoloadm/views.py

@ -4,7 +4,7 @@ from datetime import date, datetime
from braces.views import FormValidMessageMixin
from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse
from django.db.models import Max, Q
from django.db.models import Q, Max
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import redirect
from django.utils.translation import ugettext_lazy as _

18
sessao/forms.py

@ -13,7 +13,7 @@ from crispy_layout_mixin import form_actions
from materia.models import MateriaLegislativa, TipoMateriaLegislativa
from sapl.utils import RANGE_DIAS_MES, RANGE_MESES
from .models import ExpedienteMateria, SessaoPlenaria
from .models import Bancada, ExpedienteMateria, SessaoPlenaria
def pega_anos():
@ -29,6 +29,22 @@ MES_CHOICES = [('', '---------')] + RANGE_MESES
DIA_CHOICES = [('', '---------')] + RANGE_DIAS_MES
class BancadaForm(ModelForm):
class Meta:
model = Bancada
fields = ['legislatura', 'nome', 'partido', 'data_criacao',
'data_extincao', 'descricao']
def clean(self):
if self.cleaned_data['data_extincao']:
if (self.cleaned_data['data_extincao'] <
self.cleaned_data['data_criacao']):
msg = _('Data de extinção não pode ser menor que a de criação')
raise ValidationError(msg)
return self.cleaned_data
class ExpedienteMateriaForm(ModelForm):
tipo_materia = forms.ModelChoiceField(

11
sessao/layouts.yaml

@ -60,3 +60,14 @@ ExpedienteMateriaDetail:
- materia
- tipo_votacao
- observacao
Bancada:
Bancada:
- legislatura
- nome partido
- data_criacao data_extincao
- descricao
CargoBancada:
Cargo de Bancada:
- nome_cargo:8 cargo_unico

33
sessao/migrations/0017_bancada.py

@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2016-05-17 17:26
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'),
('sessao', '0016_auto_20160404_1409'),
]
operations = [
migrations.CreateModel(
name='Bancada',
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 Bancada, Bloco, Frente ou Grupo')),
('data_criacao', models.DateField(blank=True, verbose_name='Data Criação')),
('data_extincao', models.DateField(blank=True, verbose_name='Data Extinção')),
('descricao', models.TextField(blank=True, verbose_name='Descrição')),
('legislatura', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='parlamentares.Legislatura', verbose_name='Legislatura')),
('partido', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, to='parlamentares.Partido', verbose_name='Partido')),
],
options={
'verbose_name_plural': 'Bancadas',
'verbose_name': 'Bancada',
},
),
]

31
sessao/migrations/0018_auto_20160517_1435.py

@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2016-05-17 17:35
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('sessao', '0017_bancada'),
]
operations = [
migrations.AlterField(
model_name='bancada',
name='data_criacao',
field=models.DateField(blank=True, null=True, verbose_name='Data Criação'),
),
migrations.AlterField(
model_name='bancada',
name='data_extincao',
field=models.DateField(blank=True, null=True, verbose_name='Data Extinção'),
),
migrations.AlterField(
model_name='bancada',
name='partido',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='parlamentares.Partido', verbose_name='Partido'),
),
]

27
sessao/migrations/0019_cargobancada.py

@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2016-05-17 17:42
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('sessao', '0018_auto_20160517_1435'),
]
operations = [
migrations.CreateModel(
name='CargoBancada',
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 Bancada')),
('cargo_unico', models.NullBooleanField(choices=[(True, 'Sim'), (False, 'Não')], verbose_name='Cargo Único')),
],
options={
'verbose_name_plural': 'Cargos de Bancada',
'verbose_name': 'Cargo de Bancada',
},
),
]

20
sessao/migrations/0020_auto_20160517_1450.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2016-05-17 17:50
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('sessao', '0019_cargobancada'),
]
operations = [
migrations.AlterField(
model_name='cargobancada',
name='cargo_unico',
field=models.CharField(choices=[(True, 'Sim'), (False, 'Não')], default=False, max_length=10, verbose_name='Cargo Único'),
),
]

40
sessao/models.py

@ -3,11 +3,49 @@ from django.utils.translation import ugettext_lazy as _
from model_utils import Choices
from materia.models import MateriaLegislativa
from parlamentares.models import (CargoMesa, Legislatura, Parlamentar,
from parlamentares.models import (CargoMesa, Legislatura, Parlamentar, Partido,
SessaoLegislativa)
from sapl.utils import YES_NO_CHOICES, restringe_tipos_de_arquivo_txt
class CargoBancada(models.Model):
nome_cargo = models.CharField(max_length=80,
verbose_name=_('Cargo de Bancada'))
cargo_unico = models.CharField(
max_length=10,
verbose_name=_('Cargo Único'),
choices=YES_NO_CHOICES,
default=False)
class Meta:
verbose_name = _('Cargo de Bancada')
verbose_name_plural = _('Cargos de Bancada')
def __str__(self):
return self.nome_cargo
class Bancada(models.Model):
legislatura = models.ForeignKey(Legislatura, verbose_name=_('Legislatura'))
nome = models.CharField(
max_length=80,
verbose_name=_('Nome da Bancada, Bloco, Frente ou Grupo'))
partido = models.ForeignKey(Partido, blank=True, null=True,
verbose_name=_('Partido'))
data_criacao = models.DateField(blank=True, null=True,
verbose_name=_('Data Criação'))
data_extincao = models.DateField(blank=True, null=True,
verbose_name=_('Data Extinção'))
descricao = models.TextField(blank=True, verbose_name=_('Descrição'))
class Meta:
verbose_name = _('Bancada')
verbose_name_plural = _('Bancadas')
def __str__(self):
return self.nome
class TipoSessaoPlenaria(models.Model):
nome = models.CharField(max_length=30, verbose_name=_('Tipo'))
quorum_minimo = models.PositiveIntegerField(

7
sessao/urls.py

@ -2,7 +2,8 @@ from django.conf.urls import include, url
from django.views.static import serve
from sapl import settings
from sessao.views import (EditMateriaOrdemDiaView, ExpedienteMateriaCrud,
from sessao.views import (BancadaCrud, CargoBancadaCrud,
EditMateriaOrdemDiaView, ExpedienteMateriaCrud,
ExpedienteView, ListMateriaOrdemDiaView,
MateriaOrdemDiaView, MesaView, OradorCrud,
OradorExpedienteCrud, PainelView,
@ -45,6 +46,10 @@ urlpatterns = [
include(TipoResultadoVotacaoCrud.get_urls())),
url(r'^sistema/sessao-plenaria/tipo-expediente/',
include(TipoExpedienteCrud.get_urls())),
url(r'^sistema/bancada/',
include(BancadaCrud.get_urls())),
url(r'^sistema/cargo-bancada/',
include(CargoBancadaCrud.get_urls())),
# PAUTA SESSÃO
url(r'^pauta-sessao$',

32
sessao/views.py

@ -23,13 +23,13 @@ from norma.models import NormaJuridica
from parlamentares.models import Parlamentar
from sessao.serializers import SessaoPlenariaSerializer
from .forms import (ExpedienteForm, ExpedienteMateriaForm, ListMateriaForm,
MateriaOrdemDiaForm, MesaForm, PresencaForm,
SessaoPlenariaFilterSet, VotacaoEditForm, VotacaoForm,
VotacaoNominalForm)
from .models import (CargoMesa, ExpedienteMateria, ExpedienteSessao,
IntegranteMesa, MateriaLegislativa, Orador,
OradorExpediente, OrdemDia, PresencaOrdemDia,
from .forms import (BancadaForm, ExpedienteForm, ExpedienteMateriaForm,
ListMateriaForm, MateriaOrdemDiaForm, MesaForm,
PresencaForm, SessaoPlenariaFilterSet, VotacaoEditForm,
VotacaoForm, VotacaoNominalForm)
from .models import (Bancada, CargoBancada, CargoMesa, ExpedienteMateria,
ExpedienteSessao, IntegranteMesa, MateriaLegislativa,
Orador, OradorExpediente, OrdemDia, PresencaOrdemDia,
RegistroVotacao, SessaoPlenaria, SessaoPlenariaPresenca,
TipoExpediente, TipoResultadoVotacao, TipoSessaoPlenaria,
VotoParlamentar)
@ -40,6 +40,7 @@ TipoResultadoVotacaoCrud = Crud.build(
TipoResultadoVotacao, 'tipo_resultado_votacao')
TipoExpedienteCrud = Crud.build(TipoExpediente, 'tipo_expediente')
RegistroVotacaoCrud = Crud.build(RegistroVotacao, '')
CargoBancadaCrud = Crud.build(CargoBancada, '')
def reordernar_materias_expediente(request, pk):
@ -55,6 +56,23 @@ def reordernar_materias_expediente(request, pk):
reverse('sessao:expedientemateria_list', kwargs={'pk': pk}))
class BancadaCrud(Crud):
model = Bancada
help_path = ''
class BaseMixin(crud.base.CrudBaseMixin):
list_field_names = ['nome', 'legislatura']
class ListView(crud.base.CrudListView):
ordering = 'legislatura'
class CreateView(crud.base.CrudCreateView):
form_class = BancadaForm
class UpdateView(crud.base.CrudUpdateView):
form_class = BancadaForm
def abrir_votacao_view(request, pk, spk):
existe_votacao_aberta = ExpedienteMateria.objects.filter(
sessao_plenaria_id=spk, votacao_aberta=True

4
templates/sistema.html

@ -34,8 +34,8 @@
<h2>Módulo Bancadas</h2>
<div class="row">
<div class="col-md-6"><a href="#" class="btn btn-link">Bancadas</a></div>
<div class="col-md-6"><a href="#" class="btn btn-link">Cargo de Bancada</a></div>
<div class="col-md-6"><a href="{% url 'sessao:bancada_list' %}" class="btn btn-link">Bancadas</a></div>
<div class="col-md-6"><a href="{% url 'sessao:cargobancada_list' %}" class="btn btn-link">Cargo de Bancada</a></div>
</div>
<h2>Módulo Proposições</h2>

Loading…
Cancel
Save