Browse Source

Fix #990 assunto materia (#991)

* Inicia a adição de assuntos a materias

* Finaliza pesquisa por assunto

* Bug fix

* Adiciona verbose names
pull/997/head
eduardocalil 8 years ago
committed by Edward
parent
commit
9537a9c02f
  1. 21
      sapl/materia/forms.py
  2. 25
      sapl/materia/migrations/0003_auto_20170403_1505.py
  3. 20
      sapl/materia/models.py
  4. 7
      sapl/materia/urls.py
  5. 36
      sapl/materia/views.py
  6. 21
      sapl/norma/migrations/0002_auto_20170403_1505.py
  7. 10
      sapl/templates/materia/layouts.yaml
  8. 2
      sapl/templates/materia/subnav.yaml
  9. 1
      sapl/templates/sistema.html

21
sapl/materia/forms.py

@ -29,7 +29,8 @@ from sapl.compilacao.models import (STATUS_TA_IMMUTABLE_PUBLIC,
STATUS_TA_PRIVATE) STATUS_TA_PRIVATE)
from sapl.crispy_layout_mixin import (SaplFormLayout, form_actions, to_column, from sapl.crispy_layout_mixin import (SaplFormLayout, form_actions, to_column,
to_row) to_row)
from sapl.materia.models import (MateriaLegislativa, RegimeTramitacao, from sapl.materia.models import (AssuntoMateria, MateriaAssunto,
MateriaLegislativa, RegimeTramitacao,
TipoDocumento, TipoProposicao) TipoDocumento, TipoProposicao)
from sapl.norma.models import (LegislacaoCitada, NormaJuridica, from sapl.norma.models import (LegislacaoCitada, NormaJuridica,
TipoNormaJuridica) TipoNormaJuridica)
@ -493,6 +494,10 @@ class MateriaLegislativaFilterSet(django_filters.FilterSet):
label=u'Em tramitação', label=u'Em tramitação',
choices=em_tramitacao) choices=em_tramitacao)
materiaassunto__assunto = django_filters.ModelChoiceFilter(
queryset=AssuntoMateria.objects.all(),
label=_('Assunto da Matéria'))
o = MateriaPesquisaOrderingFilter() o = MateriaPesquisaOrderingFilter()
class Meta: class Meta:
@ -509,6 +514,7 @@ class MateriaLegislativaFilterSet(django_filters.FilterSet):
'local_origem_externa', 'local_origem_externa',
'tramitacao__unidade_tramitacao_destino', 'tramitacao__unidade_tramitacao_destino',
'tramitacao__status', 'tramitacao__status',
'materiaassunto__assunto',
'em_tramitacao', 'em_tramitacao',
] ]
@ -551,6 +557,8 @@ class MateriaLegislativaFilterSet(django_filters.FilterSet):
[('em_tramitacao', 6), [('em_tramitacao', 6),
('o', 6)]) ('o', 6)])
row9 = to_row( row9 = to_row(
[('materiaassunto__assunto', 12)])
row10 = to_row(
[('ementa', 12)]) [('ementa', 12)])
self.form.helper = FormHelper() self.form.helper = FormHelper()
@ -560,7 +568,7 @@ class MateriaLegislativaFilterSet(django_filters.FilterSet):
row1, row2, row3, row1, row2, row3,
HTML(autor_label), HTML(autor_label),
HTML(autor_modal), HTML(autor_modal),
row4, row5, row6, row7, row8, row9, row4, row5, row6, row7, row8, row9, row10,
form_actions(save_label='Pesquisar')) form_actions(save_label='Pesquisar'))
) )
@ -1430,3 +1438,12 @@ class ConfirmarProposicaoForm(ProposicaoForm):
conteudo_gerado.save() conteudo_gerado.save()
return self.instance return self.instance
class MateriaAssuntoForm(ModelForm):
class Meta:
model = MateriaAssunto
fields = ['materia', 'assunto']
widgets = {'materia': forms.HiddenInput()}

25
sapl/materia/migrations/0003_auto_20170403_1505.py

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2017-04-03 15:05
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('materia', '0002_auto_20170330_1513'),
]
operations = [
migrations.AlterField(
model_name='assuntomateria',
name='assunto',
field=models.CharField(max_length=50, verbose_name='Assunto'),
),
migrations.AlterField(
model_name='assuntomateria',
name='dispositivo',
field=models.CharField(blank=True, max_length=200, null=True, verbose_name='Descrição do Dispositivo Legal'),
),
]

20
sapl/materia/models.py

@ -307,8 +307,14 @@ class Anexada(models.Model):
@reversion.register() @reversion.register()
class AssuntoMateria(models.Model): class AssuntoMateria(models.Model):
assunto = models.CharField(max_length=200) assunto = models.CharField(
dispositivo = models.CharField(max_length=50) max_length=50,
verbose_name=_('Assunto'))
dispositivo = models.CharField(
max_length=200,
null=True,
blank=True,
verbose_name=_('Descrição do Dispositivo Legal'))
class Meta: class Meta:
verbose_name = _('Assunto de Matéria') verbose_name = _('Assunto de Matéria')
@ -414,8 +420,14 @@ class DocumentoAcessorio(models.Model):
@reversion.register() @reversion.register()
class MateriaAssunto(models.Model): class MateriaAssunto(models.Model):
# TODO M2M ?? # TODO M2M ??
assunto = models.ForeignKey(AssuntoMateria, on_delete=models.PROTECT) assunto = models.ForeignKey(
materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT) AssuntoMateria,
on_delete=models.PROTECT,
verbose_name=_('Assunto'))
materia = models.ForeignKey(
MateriaLegislativa,
on_delete=models.PROTECT,
verbose_name=_('Matéria'))
class Meta: class Meta:
verbose_name = _('Relação Matéria - Assunto') verbose_name = _('Relação Matéria - Assunto')

7
sapl/materia/urls.py

@ -4,11 +4,13 @@ from sapl.materia.views import (AcompanhamentoConfirmarView,
AcompanhamentoExcluirView, AcompanhamentoExcluirView,
AcompanhamentoMateriaView, AcompanhamentoMateriaView,
AdicionarVariasAutorias, AnexadaCrud, AdicionarVariasAutorias, AnexadaCrud,
AssuntoMateriaCrud,
AutoriaCrud, ConfirmarProposicao, AutoriaCrud, ConfirmarProposicao,
CriarProtocoloMateriaView, DespachoInicialCrud, CriarProtocoloMateriaView, DespachoInicialCrud,
DocumentoAcessorioCrud, DocumentoAcessorioCrud,
DocumentoAcessorioEmLoteView, DocumentoAcessorioEmLoteView,
LegislacaoCitadaCrud, MateriaLegislativaCrud, LegislacaoCitadaCrud, MateriaAssuntoCrud,
MateriaLegislativaCrud,
MateriaLegislativaPesquisaView, MateriaTaView, MateriaLegislativaPesquisaView, MateriaTaView,
NumeracaoCrud, OrgaoCrud, OrigemCrud, NumeracaoCrud, OrgaoCrud, OrigemCrud,
PrimeiraTramitacaoEmLoteView, ProposicaoCrud, PrimeiraTramitacaoEmLoteView, ProposicaoCrud,
@ -31,6 +33,7 @@ urlpatterns_materia = [
AnexadaCrud.get_urls() + AnexadaCrud.get_urls() +
AutoriaCrud.get_urls() + AutoriaCrud.get_urls() +
DespachoInicialCrud.get_urls() + DespachoInicialCrud.get_urls() +
MateriaAssuntoCrud.get_urls() +
NumeracaoCrud.get_urls() + NumeracaoCrud.get_urls() +
LegislacaoCitadaCrud.get_urls() + LegislacaoCitadaCrud.get_urls() +
TramitacaoCrud.get_urls() + TramitacaoCrud.get_urls() +
@ -97,6 +100,8 @@ urlpatterns_proposicao = [
] ]
urlpatterns_sistema = [ urlpatterns_sistema = [
url(r'^sistema/assunto-materia',
include(AssuntoMateriaCrud.get_urls())),
url(r'^sistema/proposicao/tipo/', url(r'^sistema/proposicao/tipo/',
include(TipoProposicaoCrud.get_urls())), include(TipoProposicaoCrud.get_urls())),
url(r'^sistema/materia/tipo/', include(TipoMateriaCrud.get_urls())), url(r'^sistema/materia/tipo/', include(TipoMateriaCrud.get_urls())),

36
sapl/materia/views.py

@ -43,19 +43,24 @@ from sapl.utils import (TURNO_TRAMITACAO_CHOICES, YES_NO_CHOICES, autor_label,
from .forms import (AcessorioEmLoteFilterSet, AcompanhamentoMateriaForm, from .forms import (AcessorioEmLoteFilterSet, AcompanhamentoMateriaForm,
AdicionarVariasAutoriasFilterSet, DespachoInicialForm, AdicionarVariasAutoriasFilterSet, DespachoInicialForm,
DocumentoAcessorioForm, MateriaLegislativaFilterSet, DocumentoAcessorioForm,
MateriaAssuntoForm, MateriaLegislativaFilterSet,
MateriaSimplificadaForm, PrimeiraTramitacaoEmLoteFilterSet, MateriaSimplificadaForm, PrimeiraTramitacaoEmLoteFilterSet,
ReceberProposicaoForm, RelatoriaForm, ReceberProposicaoForm, RelatoriaForm,
TramitacaoEmLoteFilterSet, filtra_tramitacao_destino, TramitacaoEmLoteFilterSet, filtra_tramitacao_destino,
filtra_tramitacao_destino_and_status, filtra_tramitacao_destino_and_status,
filtra_tramitacao_status) filtra_tramitacao_status)
from .models import (AcompanhamentoMateria, Anexada, Autoria, DespachoInicial, from .models import (AssuntoMateria, AcompanhamentoMateria,
DocumentoAcessorio, MateriaLegislativa, Numeracao, Orgao, Anexada, Autoria, DespachoInicial,
DocumentoAcessorio, MateriaLegislativa,
MateriaAssunto, Numeracao, Orgao,
Origem, Proposicao, RegimeTramitacao, Relatoria, Origem, Proposicao, RegimeTramitacao, Relatoria,
StatusTramitacao, TipoDocumento, TipoFimRelatoria, StatusTramitacao, TipoDocumento, TipoFimRelatoria,
TipoMateriaLegislativa, TipoProposicao, Tramitacao, TipoMateriaLegislativa, TipoProposicao, Tramitacao,
UnidadeTramitacao) UnidadeTramitacao)
AssuntoMateriaCrud = Crud.build(AssuntoMateria, 'assunto_materia')
OrigemCrud = Crud.build(Origem, '') OrigemCrud = Crud.build(Origem, '')
TipoMateriaCrud = CrudAux.build( TipoMateriaCrud = CrudAux.build(
@ -1110,6 +1115,31 @@ class AnexadaCrud(MasterDetailCrud):
return 'AnexadaDetail' return 'AnexadaDetail'
class MateriaAssuntoCrud(MasterDetailCrud):
model = MateriaAssunto
parent_field = 'materia'
help_path = ''
public = [RP_LIST, RP_DETAIL]
class BaseMixin(MasterDetailCrud.BaseMixin):
list_field_names = ['assunto', 'materia']
class CreateView(MasterDetailCrud.CreateView):
form_class = MateriaAssuntoForm
def get_initial(self):
self.initial['materia'] = self.kwargs['pk']
return self.initial
class UpdateView(MasterDetailCrud.UpdateView):
form_class = MateriaAssuntoForm
def get_initial(self):
self.initial['materia'] = self.get_object().materia
self.initial['assunto'] = self.get_object().assunto
return self.initial
class MateriaLegislativaCrud(Crud): class MateriaLegislativaCrud(Crud):
model = MateriaLegislativa model = MateriaLegislativa
help_path = 'materia_legislativa' help_path = 'materia_legislativa'

21
sapl/norma/migrations/0002_auto_20170403_1505.py

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2017-04-03 15:05
from __future__ import unicode_literals
from django.db import migrations, models
import sapl.utils
class Migration(migrations.Migration):
dependencies = [
('norma', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='normajuridica',
name='texto_integral',
field=models.FileField(blank=True, null=True, upload_to=sapl.utils.texto_upload_path, validators=[sapl.utils.restringe_tipos_de_arquivo_txt], verbose_name='Texto Integral'),
),
]

10
sapl/templates/materia/layouts.yaml

@ -36,6 +36,16 @@ MateriaLegislativa:
- indexacao - indexacao
- observacao - observacao
AssuntoMateria:
{% trans 'Assunto de Matéria Legislativa' %}:
- assunto
- dispositivo
MateriaAssunto:
{% trans 'Assuntos da Matéria' %}:
- assunto
- materia
Anexada: Anexada:
{% trans 'Matéria Anexada' %}: {% trans 'Matéria Anexada' %}:
- tipo numero ano - tipo numero ano

2
sapl/templates/materia/subnav.yaml

@ -3,6 +3,8 @@
url: materialegislativa_detail url: materialegislativa_detail
- title: {% trans 'Anexada' %} - title: {% trans 'Anexada' %}
url: anexada_list url: anexada_list
- title: {% trans 'Assunto' %}
url: materiaassunto_list
- title: {% trans 'Autoria' %} - title: {% trans 'Autoria' %}
url: autoria_list url: autoria_list
- title: {% trans 'Despacho Inicial' %} - title: {% trans 'Despacho Inicial' %}

1
sapl/templates/sistema.html

@ -64,6 +64,7 @@
<div class="col-md-6"><a href="{% url 'sapl.materia:origem_list' %}" class="btn btn-link">Origem</a></div> <div class="col-md-6"><a href="{% url 'sapl.materia:origem_list' %}" class="btn btn-link">Origem</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:statustramitacao_list' %}" class="btn btn-link">Status da Tramitação</a></div> <div class="col-md-6"><a href="{% url 'sapl.materia:statustramitacao_list' %}" class="btn btn-link">Status da Tramitação</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:orgao_list' %}" class="btn btn-link">Órgão</a></div> <div class="col-md-6"><a href="{% url 'sapl.materia:orgao_list' %}" class="btn btn-link">Órgão</a></div>
<div class="col-md-6"><a href="{% url 'sapl.materia:assuntomateria_list' %}" class="btn btn-link">Assunto Matéria</a></div>
</div> </div>
<hr /> <hr />

Loading…
Cancel
Save