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)
from sapl.materia.models import (AssuntoMateria, MateriaAssunto,
MateriaLegislativa, RegimeTramitacao,
TipoDocumento, TipoProposicao)
TipoDocumento, TipoProposicao, Orgao)
from sapl.norma.models import (LegislacaoCitada, NormaJuridica,
TipoNormaJuridica)
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):
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,
ProposicaoForm, TipoProposicaoForm,
TramitacaoForm, TramitacaoUpdateForm,
DevolverProposicaoForm)
DevolverProposicaoForm, OrgaoForm)
from sapl.norma.models import LegislacaoCitada
from sapl.protocoloadm.models import Protocolo
from sapl.utils import (TURNO_TRAMITACAO_CHOICES, YES_NO_CHOICES, autor_label,
@ -296,10 +296,17 @@ def recuperar_materia(request):
return response
OrgaoCrud = CrudAux.build(Orgao, 'orgao')
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):
model = TipoProposicao

26
sapl/parlamentares/forms.py

@ -5,6 +5,7 @@ from crispy_forms.layout import Fieldset, Layout
from django import forms
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group, User
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ValidationError
from django.db import transaction
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.rules import SAPL_GROUP_VOTANTE
from sapl.base.models import Autor, TipoAutor
from .models import (ComposicaoColigacao, Filiacao, Frente, Legislatura,
Mandato, Parlamentar, Votante)
@ -152,8 +154,18 @@ class ParlamentarCreateForm(ParlamentarForm):
Mandato.objects.create(
parlamentar=parlamentar,
legislatura=legislatura,
data_inicio_mandato=legislatura.data_inicio,
data_fim_mandato=legislatura.data_fim,
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
@ -280,6 +292,20 @@ class FrenteForm(ModelForm):
model = Frente
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):

33
sapl/parlamentares/views.py

@ -27,7 +27,7 @@ from sapl.parlamentares.apps import AppConfig
from sapl.utils import parlamentares_ativos
from .forms import (FiliacaoForm, LegislaturaForm, MandatoForm,
ParlamentarCreateForm, ParlamentarForm, VotanteForm)
ParlamentarCreateForm, ParlamentarForm, VotanteForm, FrenteForm)
from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa,
Dependente, Filiacao, Frente, Legislatura, Mandato,
NivelInstrucao, Parlamentar, Partido, SessaoLegislativa,
@ -278,27 +278,20 @@ class FrenteCrud(CrudAux):
public = [RP_DETAIL, RP_LIST]
list_field_names = ['nome', 'data_criacao', 'parlamentares']
class CreateView(CrudAux.CreateView):
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)
class UpdateView(Crud.UpdateView):
form_class = FrenteForm
# Update view é um indicador para o javascript
# de que esta não é uma tela de edição de frente
context['update_view'] = 1
class CreateView(Crud.CreateView):
form_class = FrenteForm
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):

49
sapl/sessao/forms.py

@ -4,10 +4,13 @@ import django_filters
from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Button, Fieldset, Layout
from django import forms
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.db import transaction
from django.forms import ModelForm
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.materia.forms import MateriaLegislativaFilterSet
from sapl.materia.models import (MateriaLegislativa, StatusTramitacao,
@ -18,7 +21,7 @@ from sapl.utils import (RANGE_DIAS_MES, RANGE_MESES,
autor_modal, timezone)
from .models import (Bancada, ExpedienteMateria, Orador, OradorExpediente,
OrdemDia, SessaoPlenaria, SessaoPlenariaPresenca, TipoResultadoVotacao)
OrdemDia, SessaoPlenaria, SessaoPlenariaPresenca, TipoResultadoVotacao, Bloco)
def recupera_anos():
@ -112,6 +115,50 @@ class BancadaForm(ModelForm):
raise ValidationError(msg)
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):

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,
on_delete=models.PROTECT,
verbose_name=_('Partido'))
data_criacao = models.DateField(blank=True, null=True,
data_criacao = models.DateField(blank=False, null=True,
verbose_name=_('Data Criação'))
data_extincao = models.DateField(blank=True, null=True,
verbose_name=_('Data Extinção'))
@ -498,7 +498,7 @@ class Bloco(models.Model):
partidos = models.ManyToManyField(
Partido, blank=True, verbose_name=_('Partidos'))
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(
blank=True, null=True, verbose_name=_('Data Dissoluçã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,
ResumoOrdenacaoForm, SessaoPlenariaFilterSet,
SessaoPlenariaForm, VotacaoEditForm, VotacaoForm,
VotacaoNominalForm)
VotacaoNominalForm, BancadaForm, BlocoForm)
from .models import (Bancada, Bloco, CargoBancada, CargoMesa,
ExpedienteMateria, ExpedienteSessao, IntegranteMesa,
MateriaLegislativa, Orador, OradorExpediente, OrdemDia,
@ -53,10 +53,7 @@ TipoSessaoCrud = CrudAux.build(TipoSessaoPlenaria, 'tipo_sessao_plenaria')
TipoExpedienteCrud = CrudAux.build(TipoExpediente, 'tipo_expediente')
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(
TipoResultadoVotacao, 'tipo_resultado_votacao')
@ -575,6 +572,23 @@ class OradorCrud(OradorCrud):
return reverse('sapl.sessao:orador_list',
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):
try:

Loading…
Cancel
Save