Browse Source

fixes #1685

pull/1686/head
VictorFabreF 8 years ago
parent
commit
8c6844b206
  1. 24
      sapl/materia/forms.py
  2. 13
      sapl/materia/views.py
  3. 26
      sapl/parlamentares/forms.py
  4. 33
      sapl/parlamentares/views.py
  5. 49
      sapl/sessao/forms.py
  6. 25
      sapl/sessao/migrations/0016_auto_20180131_1708.py
  7. 4
      sapl/sessao/models.py
  8. 24
      sapl/sessao/views.py

24
sapl/materia/forms.py

@ -31,7 +31,7 @@ from sapl.crispy_layout_mixin import (SaplFormLayout, form_actions, to_column,
to_row) to_row)
from sapl.materia.models import (AssuntoMateria, MateriaAssunto, from sapl.materia.models import (AssuntoMateria, MateriaAssunto,
MateriaLegislativa, RegimeTramitacao, MateriaLegislativa, RegimeTramitacao,
TipoDocumento, TipoProposicao) TipoDocumento, TipoProposicao, Orgao)
from sapl.norma.models import (LegislacaoCitada, NormaJuridica, from sapl.norma.models import (LegislacaoCitada, NormaJuridica,
TipoNormaJuridica) TipoNormaJuridica)
from sapl.protocoloadm.models import Protocolo from sapl.protocoloadm.models import Protocolo
@ -77,6 +77,28 @@ class AdicionarVariasAutoriasFilterSet(django_filters.FilterSet):
) )
class OrgaoForm(ModelForm):
class Meta:
model = Orgao
fields = ['nome', 'sigla', 'unidade_deliberativa',
'endereco', 'telefone']
@transaction.atomic
def save(self, commit=True):
orgao = super(OrgaoForm, self).save(commit)
content_type = ContentType.objects.get_for_model(Orgao)
object_id = orgao.pk
tipo = TipoAutor.objects.get(descricao='Órgão')
nome = orgao.nome+' - '+orgao.sigla
Autor.objects.create(
content_type=content_type,
object_id=object_id,
tipo=tipo,
nome=nome
)
return orgao
class ReceberProposicaoForm(Form): class ReceberProposicaoForm(Form):
cod_hash = forms.CharField(label='Código do Documento', required=True) cod_hash = forms.CharField(label='Código do Documento', required=True)

13
sapl/materia/views.py

@ -38,7 +38,7 @@ from sapl.materia.forms import (AnexadaForm, AutoriaForm,
ConfirmarProposicaoForm, LegislacaoCitadaForm, ConfirmarProposicaoForm, LegislacaoCitadaForm,
ProposicaoForm, TipoProposicaoForm, ProposicaoForm, TipoProposicaoForm,
TramitacaoForm, TramitacaoUpdateForm, TramitacaoForm, TramitacaoUpdateForm,
DevolverProposicaoForm) DevolverProposicaoForm, OrgaoForm)
from sapl.norma.models import LegislacaoCitada from sapl.norma.models import LegislacaoCitada
from sapl.protocoloadm.models import Protocolo from sapl.protocoloadm.models import Protocolo
from sapl.utils import (TURNO_TRAMITACAO_CHOICES, YES_NO_CHOICES, autor_label, from sapl.utils import (TURNO_TRAMITACAO_CHOICES, YES_NO_CHOICES, autor_label,
@ -296,10 +296,17 @@ def recuperar_materia(request):
return response return response
OrgaoCrud = CrudAux.build(Orgao, 'orgao')
StatusTramitacaoCrud = CrudAux.build(StatusTramitacao, 'status_tramitacao') StatusTramitacaoCrud = CrudAux.build(StatusTramitacao, 'status_tramitacao')
class OrgaoCrud(Crud):
model = Orgao
class CreateView(Crud.CreateView):
form_class = OrgaoForm
def get_success_url(self):
return reverse('sapl.materia:orgao_list')
class TipoProposicaoCrud(CrudAux): class TipoProposicaoCrud(CrudAux):
model = TipoProposicao model = TipoProposicao

26
sapl/parlamentares/forms.py

@ -5,6 +5,7 @@ from crispy_forms.layout import Fieldset, Layout
from django import forms from django import forms
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group, User from django.contrib.auth.models import Group, User
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.db import transaction from django.db import transaction
from django.db.models import Q from django.db.models import Q
@ -16,6 +17,7 @@ from floppyforms.widgets import ClearableFileInput
from sapl.crispy_layout_mixin import form_actions, to_row from sapl.crispy_layout_mixin import form_actions, to_row
from sapl.rules import SAPL_GROUP_VOTANTE from sapl.rules import SAPL_GROUP_VOTANTE
from sapl.base.models import Autor, TipoAutor
from .models import (ComposicaoColigacao, Filiacao, Frente, Legislatura, from .models import (ComposicaoColigacao, Filiacao, Frente, Legislatura,
Mandato, Parlamentar, Votante) Mandato, Parlamentar, Votante)
@ -152,8 +154,18 @@ class ParlamentarCreateForm(ParlamentarForm):
Mandato.objects.create( Mandato.objects.create(
parlamentar=parlamentar, parlamentar=parlamentar,
legislatura=legislatura, legislatura=legislatura,
data_inicio_mandato=legislatura.data_inicio,
data_fim_mandato=legislatura.data_fim, data_fim_mandato=legislatura.data_fim,
data_expedicao_diploma=self.cleaned_data['data_expedicao_diploma']) data_expedicao_diploma=self.cleaned_data['data_expedicao_diploma'])
content_type = ContentType.objects.get_for_model(Parlamentar)
object_id = parlamentar.pk
tipo = TipoAutor.objects.get(descricao='Parlamentar')
Autor.objects.create(
content_type = content_type,
object_id = object_id,
tipo = tipo,
nome = parlamentar.nome_parlamentar
)
return parlamentar return parlamentar
@ -280,6 +292,20 @@ class FrenteForm(ModelForm):
model = Frente model = Frente
fields = '__all__' fields = '__all__'
@transaction.atomic
def save(self, commit=True):
frente = super(FrenteForm, self).save(commit)
content_type = ContentType.objects.get_for_model(Frente)
object_id = frente.pk
tipo = TipoAutor.objects.get(descricao='Frente Parlamentar')
Autor.objects.create(
content_type=content_type,
object_id=object_id,
tipo=tipo,
nome=frente.nome
)
return frente
class VotanteForm(ModelForm): class VotanteForm(ModelForm):

33
sapl/parlamentares/views.py

@ -27,7 +27,7 @@ from sapl.parlamentares.apps import AppConfig
from sapl.utils import parlamentares_ativos from sapl.utils import parlamentares_ativos
from .forms import (FiliacaoForm, LegislaturaForm, MandatoForm, from .forms import (FiliacaoForm, LegislaturaForm, MandatoForm,
ParlamentarCreateForm, ParlamentarForm, VotanteForm) ParlamentarCreateForm, ParlamentarForm, VotanteForm, FrenteForm)
from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa, from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa,
Dependente, Filiacao, Frente, Legislatura, Mandato, Dependente, Filiacao, Frente, Legislatura, Mandato,
NivelInstrucao, Parlamentar, Partido, SessaoLegislativa, NivelInstrucao, Parlamentar, Partido, SessaoLegislativa,
@ -278,27 +278,20 @@ class FrenteCrud(CrudAux):
public = [RP_DETAIL, RP_LIST] public = [RP_DETAIL, RP_LIST]
list_field_names = ['nome', 'data_criacao', 'parlamentares'] list_field_names = ['nome', 'data_criacao', 'parlamentares']
class CreateView(CrudAux.CreateView): class UpdateView(Crud.UpdateView):
form_class = FrenteForm
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
# Update view é um indicador para o javascript
# de que esta não é uma tela de edição de frente
context['update_view'] = 0
return context
class UpdateView(CrudAux.UpdateView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
# Update view é um indicador para o javascript class CreateView(Crud.CreateView):
# de que esta não é uma tela de edição de frente form_class = FrenteForm
context['update_view'] = 1
return context def form_valid(self, form):
"""
Reimplementa form_valid devido ao save de ParlamentarCreateForm
ser específico, sendo necessário isolar padrão do crud que aciona
form.save(commit=False) para registrar dados de auditoria se
o model implementá-los, bem como de container se também implement.
"""
return super(Crud.CreateView, self).form_valid(form)
class MandatoCrud(MasterDetailCrud): class MandatoCrud(MasterDetailCrud):

49
sapl/sessao/forms.py

@ -4,10 +4,13 @@ import django_filters
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Button, Fieldset, Layout from crispy_forms.layout import HTML, Button, Fieldset, Layout
from django import forms from django import forms
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.db import transaction
from django.forms import ModelForm from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from sapl.base.models import Autor, TipoAutor
from sapl.crispy_layout_mixin import form_actions, to_row from sapl.crispy_layout_mixin import form_actions, to_row
from sapl.materia.forms import MateriaLegislativaFilterSet from sapl.materia.forms import MateriaLegislativaFilterSet
from sapl.materia.models import (MateriaLegislativa, StatusTramitacao, from sapl.materia.models import (MateriaLegislativa, StatusTramitacao,
@ -18,7 +21,7 @@ from sapl.utils import (RANGE_DIAS_MES, RANGE_MESES,
autor_modal, timezone) autor_modal, timezone)
from .models import (Bancada, ExpedienteMateria, Orador, OradorExpediente, from .models import (Bancada, ExpedienteMateria, Orador, OradorExpediente,
OrdemDia, SessaoPlenaria, SessaoPlenariaPresenca, TipoResultadoVotacao) OrdemDia, SessaoPlenaria, SessaoPlenariaPresenca, TipoResultadoVotacao, Bloco)
def recupera_anos(): def recupera_anos():
@ -112,6 +115,50 @@ class BancadaForm(ModelForm):
raise ValidationError(msg) raise ValidationError(msg)
return self.cleaned_data return self.cleaned_data
@transaction.atomic
def save(self, commit=True):
bancada = super(BancadaForm, self).save(commit)
content_type = ContentType.objects.get_for_model(Bancada)
object_id = bancada.pk
tipo = TipoAutor.objects.get(descricao='Bancada Parlamentar')
Autor.objects.create(
content_type=content_type,
object_id=object_id,
tipo=tipo,
nome=bancada.nome
)
return bancada
class BlocoForm(ModelForm):
class Meta:
model = Bloco
fields = ['nome', 'partidos', 'data_criacao',
'data_extincao', 'descricao']
def clean(self):
super(BlocoForm, self).clean()
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
@transaction.atomic
def save(self, commit=True):
bloco = super(BlocoForm, self).save(commit)
content_type = ContentType.objects.get_for_model(Bloco)
object_id = bloco.pk
tipo = TipoAutor.objects.get(descricao='Bloco Parlamentar')
Autor.objects.create(
content_type=content_type,
object_id=object_id,
tipo=tipo,
nome=bloco.nome
)
return bloco
class ExpedienteMateriaForm(ModelForm): class ExpedienteMateriaForm(ModelForm):

25
sapl/sessao/migrations/0016_auto_20180131_1708.py

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.13 on 2018-01-31 19:08
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('sessao', '0015_sessaoplenaria_painel_aberto'),
]
operations = [
migrations.AlterField(
model_name='bancada',
name='data_criacao',
field=models.DateField(null=True, verbose_name='Data Criação'),
),
migrations.AlterField(
model_name='bloco',
name='data_criacao',
field=models.DateField(null=True, verbose_name='Data Criação'),
),
]

4
sapl/sessao/models.py

@ -42,7 +42,7 @@ class Bancada(models.Model):
null=True, null=True,
on_delete=models.PROTECT, on_delete=models.PROTECT,
verbose_name=_('Partido')) verbose_name=_('Partido'))
data_criacao = models.DateField(blank=True, null=True, data_criacao = models.DateField(blank=False, null=True,
verbose_name=_('Data Criação')) verbose_name=_('Data Criação'))
data_extincao = models.DateField(blank=True, null=True, data_extincao = models.DateField(blank=True, null=True,
verbose_name=_('Data Extinção')) verbose_name=_('Data Extinção'))
@ -498,7 +498,7 @@ class Bloco(models.Model):
partidos = models.ManyToManyField( partidos = models.ManyToManyField(
Partido, blank=True, verbose_name=_('Partidos')) Partido, blank=True, verbose_name=_('Partidos'))
data_criacao = models.DateField( data_criacao = models.DateField(
blank=True, null=True, verbose_name=_('Data Criação')) blank=False, null=True, verbose_name=_('Data Criação'))
data_extincao = models.DateField( data_extincao = models.DateField(
blank=True, null=True, verbose_name=_('Data Dissolução')) blank=True, null=True, verbose_name=_('Data Dissolução'))
descricao = models.TextField(blank=True, verbose_name=_('Descrição')) descricao = models.TextField(blank=True, verbose_name=_('Descrição'))

24
sapl/sessao/views.py

@ -41,7 +41,7 @@ from .forms import (AdicionarVariasMateriasFilterSet, ExpedienteForm,
OradorForm, PautaSessaoFilterSet, PresencaForm, OradorForm, PautaSessaoFilterSet, PresencaForm,
ResumoOrdenacaoForm, SessaoPlenariaFilterSet, ResumoOrdenacaoForm, SessaoPlenariaFilterSet,
SessaoPlenariaForm, VotacaoEditForm, VotacaoForm, SessaoPlenariaForm, VotacaoEditForm, VotacaoForm,
VotacaoNominalForm) VotacaoNominalForm, BancadaForm, BlocoForm)
from .models import (Bancada, Bloco, CargoBancada, CargoMesa, from .models import (Bancada, Bloco, CargoBancada, CargoMesa,
ExpedienteMateria, ExpedienteSessao, IntegranteMesa, ExpedienteMateria, ExpedienteSessao, IntegranteMesa,
MateriaLegislativa, Orador, OradorExpediente, OrdemDia, MateriaLegislativa, Orador, OradorExpediente, OrdemDia,
@ -53,10 +53,7 @@ TipoSessaoCrud = CrudAux.build(TipoSessaoPlenaria, 'tipo_sessao_plenaria')
TipoExpedienteCrud = CrudAux.build(TipoExpediente, 'tipo_expediente') TipoExpedienteCrud = CrudAux.build(TipoExpediente, 'tipo_expediente')
CargoBancadaCrud = CrudAux.build(CargoBancada, '') CargoBancadaCrud = CrudAux.build(CargoBancada, '')
BlocoCrud = CrudAux.build(
Bloco, '', list_field_names=['nome', 'data_criacao', 'partidos'])
BancadaCrud = CrudAux.build(
Bancada, '', list_field_names=['nome', 'legislatura'])
TipoResultadoVotacaoCrud = CrudAux.build( TipoResultadoVotacaoCrud = CrudAux.build(
TipoResultadoVotacao, 'tipo_resultado_votacao') TipoResultadoVotacao, 'tipo_resultado_votacao')
@ -575,6 +572,23 @@ class OradorCrud(OradorCrud):
return reverse('sapl.sessao:orador_list', return reverse('sapl.sessao:orador_list',
kwargs={'pk': self.kwargs['pk']}) kwargs={'pk': self.kwargs['pk']})
class BancadaCrud(Crud):
model = Bancada
class CreateView(Crud.CreateView):
form_class = BancadaForm
def get_success_url(self):
return reverse('sapl.sessao:bancada_list')
class BlocoCrud(Crud):
model = Bloco
class CreateView(Crud.CreateView):
form_class = BlocoForm
def get_success_url(self):
return reverse('sapl.sessao:bloco_list')
def recuperar_numero_sessao(request): def recuperar_numero_sessao(request):
try: try:

Loading…
Cancel
Save