Browse Source

Merge pull request #380 from interlegis/354-Crud-Tramitação

Fix #354 crud tramitação
pull/377/head
Edward 9 years ago
parent
commit
ecf51a2dec
  1. 101
      materia/forms.py
  2. 11
      materia/layouts.yaml
  3. 20
      materia/migrations/0031_auto_20160502_1131.py
  4. 3
      materia/models.py
  5. 8
      materia/tests/test_materia.py
  6. 6
      materia/tests/test_materia_urls.py
  7. 18
      materia/urls.py
  8. 313
      materia/views.py
  9. 9
      norma/layouts.yaml
  10. 1
      static/js/app.js
  11. 33
      templates/materia/legislacao_citada.html
  12. 94
      templates/materia/legislacao_citada_edit.html
  13. 4
      templates/materia/subnav.yaml
  14. 33
      templates/materia/tramitacao.html
  15. 7
      templates/materia/tramitacao_edit.html

101
materia/forms.py

@ -11,7 +11,7 @@ from django.utils.translation import ugettext_lazy as _
import crispy_layout_mixin
import sapl
from crispy_layout_mixin import form_actions
from norma.models import LegislacaoCitada, TipoNormaJuridica
from norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica
from sapl.settings import MAX_DOC_UPLOAD_SIZE
from sapl.utils import RANGE_ANOS
@ -191,11 +191,6 @@ class RelatoriaForm(ModelForm):
class TramitacaoForm(ModelForm):
urgente = forms.ChoiceField(required=False,
label='Tramitando',
choices=[(True, 'Sim'), (False, 'Não')],
widget=forms.Select(
attrs={'class': 'selector'}))
class Meta:
model = Tramitacao
@ -209,34 +204,21 @@ class TramitacaoForm(ModelForm):
'data_fim_prazo',
'texto']
def __init__(self, excluir=False, *args, **kwargs):
row1 = crispy_layout_mixin.to_row(
[('data_tramitacao', 6), ('unidade_tramitacao_local', 6)])
row2 = crispy_layout_mixin.to_row(
[('status', 5), ('turno', 5), ('urgente', 2)])
row3 = crispy_layout_mixin.to_row(
[('unidade_tramitacao_destino', 12)])
def clean(self):
if self.errors:
return self.errors
row4 = crispy_layout_mixin.to_row(
[('data_encaminhamento', 6), ('data_fim_prazo', 6)])
ultima_tramitacao = Tramitacao.objects.filter(
materia_id=self.instance.materia.id).last()
row5 = crispy_layout_mixin.to_row(
[('texto', 12)])
if ultima_tramitacao:
destino = ultima_tramitacao.unidade_tramitacao_destino
if (destino != self.cleaned_data['unidade_tramitacao_local']):
msg = _('A origem da nova tramitação deve ser igual ao '
'destino da última adicionada!')
raise ValidationError(msg)
more = []
if excluir:
more = [Submit('Excluir', 'Excluir')]
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(_('Incluir Tramitação'),
row1, row2, row3, row4, row5,
),
form_actions(more=more)
)
super(TramitacaoForm, self).__init__(
*args, **kwargs)
return self.cleaned_data
class LegislacaoCitadaForm(ModelForm):
@ -270,41 +252,38 @@ class LegislacaoCitadaForm(ModelForm):
'alinea',
'item']
def __init__(self, *args, **kwargs):
def clean(self):
if self.errors:
return self.errors
row1 = crispy_layout_mixin.to_row(
[('tipo', 4),
('numero', 4),
('ano', 4)])
cleaned_data = self.cleaned_data
row2 = crispy_layout_mixin.to_row(
[('disposicoes', 3),
('parte', 3),
('livro', 3),
('titulo', 3)])
try:
norma = NormaJuridica.objects.get(
numero=cleaned_data['numero'],
ano=cleaned_data['ano'],
tipo=cleaned_data['tipo'])
except ObjectDoesNotExist:
msg = _('A norma a ser inclusa não existe no cadastro'
' de Normas.')
raise ValidationError(msg)
else:
cleaned_data['norma'] = norma
row3 = crispy_layout_mixin.to_row(
[('capitulo', 3),
('secao', 3),
('subsecao', 3),
('artigo', 3)])
if LegislacaoCitada.objects.filter(
materia=self.instance.materia,
norma=cleaned_data['norma']
).exists():
msg = _('Essa Legislação já foi cadastrada.')
raise ValidationError(msg)
row4 = crispy_layout_mixin.to_row(
[('paragrafo', 3),
('inciso', 3),
('alinea', 3),
('item', 3)])
return cleaned_data
self.helper = FormHelper()
self.helper.form_class = 'form-horizontal'
self.helper.layout = Layout(
Fieldset(
_('Incluir Legislação Citada'),
row1, row2, row3, row4,
form_actions()
)
)
super(LegislacaoCitadaForm, self).__init__(*args, **kwargs)
def save(self, commit=False):
legislacao = super(LegislacaoCitadaForm, self).save(commit)
legislacao.norma = self.cleaned_data['norma']
legislacao.save()
return legislacao
class NumeracaoForm(ModelForm):

11
materia/layouts.yaml

@ -107,11 +107,18 @@ UnidadeTramitacao:
Tramitacao:
Tramitação:
- cod_ult_tram_dest_FIXME unidade_tramitacao_local
- unidade_tramitacao_local unidade_tramitacao_destino
- data_tramitacao data_encaminhamento data_fim_prazo
- status turno urgente
- unidade_tramitacao_destino data_encaminhamento data_fim_prazo
- texto
DespachoInicial:
Despacho Inicial:
- comissao
LegislacaoCitadaDetail:
Legislação Citada:
- norma
- disposicoes parte livro titulo
- capitulo secao subsecao artigo
- paragrafo inciso alinea item

20
materia/migrations/0031_auto_20160502_1131.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2016-05-02 14:31
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('materia', '0030_auto_20160429_1349'),
]
operations = [
migrations.AlterField(
model_name='tramitacao',
name='urgente',
field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], verbose_name='Urgente ?'),
),
]

3
materia/models.py

@ -546,7 +546,8 @@ class Tramitacao(models.Model):
UnidadeTramitacao,
related_name='tramitacoes_destino',
verbose_name=_('Unidade Destino'))
urgente = models.BooleanField(verbose_name=_('Urgente ?'))
urgente = models.BooleanField(verbose_name=_('Urgente ?'),
choices=YES_NO_CHOICES)
turno = models.CharField(
max_length=1, blank=True, verbose_name=_('Turno'),
choices=TURNO_CHOICES)

8
materia/tests/test_materia.py

@ -230,7 +230,7 @@ def test_legislacao_citada_submit(client):
norma = make_norma()
# Testa POST
response = client.post(reverse('materia:legislacao_citada',
response = client.post(reverse('materia:legislacaocitada_create',
kwargs={'pk': materia_principal.pk}),
{'tipo': norma.tipo.pk,
'numero': norma.numero,
@ -256,7 +256,7 @@ def test_tramitacao_submit(client):
descricao='Status_Teste')
# Testa POST
response = client.post(
reverse('materia:tramitacao_materia',
reverse('materia:tramitacao_create',
kwargs={'pk': materia_principal.pk}),
{'unidade_tramitacao_local': make_unidade_tramitacao(
'Unidade Local').pk,
@ -346,7 +346,7 @@ def test_form_errors_documento_acessorio(client):
def test_form_errors_legislacao_citada(client):
materia_principal = make_materia_principal()
response = client.post(reverse('materia:legislacao_citada',
response = client.post(reverse('materia:legislacaocitada_create',
kwargs={'pk': materia_principal.pk}),
{'salvar': 'salvar'},
follow=True)
@ -382,7 +382,7 @@ def test_form_errors_numeracao(client):
def test_form_errors_tramitacao(client):
materia_principal = make_materia_principal()
response = client.post(reverse('materia:tramitacao_materia',
response = client.post(reverse('materia:tramitacao_create',
kwargs={'pk': materia_principal.pk}),
{'salvar': 'salvar'},
follow=True)

6
materia/tests/test_materia_urls.py

@ -6,9 +6,9 @@ from django.core.urlresolvers import reverse
('materia:relatoria_edit',
{'pk': '11', 'id': '99'},
'/materia/11/relatoria/99/edit'),
('materia:tramitacao_edit',
{'pk': '3', 'id': '8'},
'/materia/3/tramitacao/8/edit'),
('materia:tramitacao_update',
{'pk': '8'},
'/materia/tramitacao/8/edit'),
('materia:adicionar_proposicao', {}, '/materia/proposicao'),
('materia:editar_proposicao',
{'pk': '3'},

18
materia/urls.py

@ -5,8 +5,7 @@ from materia.views import (AcompanhamentoConfirmarView,
AcompanhamentoMateriaView, AnexadaCrud, AutorCrud,
AutoriaCrud, DespachoInicialCrud,
DocumentoAcessorioEditView, DocumentoAcessorioView,
LegislacaoCitadaEditView, LegislacaoCitadaView,
MateriaLegislativaCrud,
LegislacaoCitadaCrud, MateriaLegislativaCrud,
MateriaLegislativaPesquisaView, MateriaTaView,
NumeracaoCrud, OrgaoCrud, OrigemCrud,
ProposicaoEditView, ProposicaoListView,
@ -14,8 +13,7 @@ from materia.views import (AcompanhamentoConfirmarView,
RegimeTramitacaoCrud, RelatoriaEditView,
RelatoriaView, StatusTramitacaoCrud, TipoAutorCrud,
TipoDocumentoCrud, TipoFimRelatoriaCrud,
TipoMateriaCrud, TipoProposicaoCrud,
TramitacaoEditView, TramitacaoView,
TipoMateriaCrud, TipoProposicaoCrud, TramitacaoCrud,
UnidadeTramitacaoCrud)
from .apps import AppConfig
@ -27,7 +25,9 @@ urlpatterns = [
AnexadaCrud.get_urls() +
AutoriaCrud.get_urls() +
DespachoInicialCrud.get_urls() +
NumeracaoCrud.get_urls())),
NumeracaoCrud.get_urls() +
LegislacaoCitadaCrud.get_urls() +
TramitacaoCrud.get_urls())),
# Integração com Compilação
url(r'^materia/(?P<pk>[0-9]+)/ta$',
@ -53,20 +53,12 @@ urlpatterns = [
url(r'^sistema/materia/status-tramitacao/',
include(StatusTramitacaoCrud.get_urls())),
url(r'^sistema/materia/orgao/', include(OrgaoCrud.get_urls())),
url(r'^materia/(?P<pk>\d+)/legislacao-citada$',
LegislacaoCitadaView.as_view(), name='legislacao_citada'),
url(r'^materia/(?P<pk>\d+)/legislacao-citada/(?P<id>\d+)/edit',
LegislacaoCitadaEditView.as_view(), name='legislacao_citada_edit'),
url(r'^materia/(?P<pk>\d+)/documento-acessorio$',
DocumentoAcessorioView.as_view(), name='documento_acessorio'),
url(r'^materia/(?P<pk>\d+)/documento-acessorio/(?P<id>\d+)/edit',
DocumentoAcessorioEditView.as_view(), name='documento_acessorio_edit'),
url(r'^materia/(?P<pk>\d+)/relatoria$',
RelatoriaView.as_view(), name='relatoria'),
url(r'^materia/(?P<pk>\d+)/tramitacao$',
TramitacaoView.as_view(), name='tramitacao_materia'),
url(r'^materia/(?P<pk>\d+)/tramitacao/(?P<id>\d+)/edit$',
TramitacaoEditView.as_view(), name='tramitacao_edit'),
url(r'^materia/(?P<pk>\d+)/relatoria/(?P<id>\d+)/edit$',
RelatoriaEditView.as_view(), name='relatoria_edit'),
url(r'^materia/proposicao$',

313
materia/views.py

@ -21,7 +21,7 @@ from comissoes.models import Comissao, Composicao
from compilacao.views import IntegracaoTaView
from crud.base import Crud, make_pagination
from crud.masterdetail import MasterDetailCrud
from norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica
from norma.models import LegislacaoCitada
from sapl.utils import get_base_url
from .forms import (AcompanhamentoMateriaForm, AnexadaForm, AutoriaForm,
@ -54,7 +54,45 @@ TipoProposicaoCrud = Crud.build(TipoProposicao, 'tipo_proposicao')
ProposicaoCrud = Crud.build(Proposicao, '')
StatusTramitacaoCrud = Crud.build(StatusTramitacao, 'status_tramitacao')
UnidadeTramitacaoCrud = Crud.build(UnidadeTramitacao, 'unidade_tramitacao')
TramitacaoCrud = Crud.build(Tramitacao, '')
class TramitacaoCrud(MasterDetailCrud):
model = Tramitacao
parent_field = 'materia'
help_path = ''
class BaseMixin(MasterDetailCrud.BaseMixin):
list_field_names = ['data_tramitacao', 'unidade_tramitacao_local',
'unidade_tramitacao_destino', 'status']
class CreateView(MasterDetailCrud.CreateView):
form_class = TramitacaoForm
class UpdateView(MasterDetailCrud.UpdateView):
form_class = TramitacaoForm
class ListView(MasterDetailCrud.ListView):
def get_queryset(self):
qs = super(MasterDetailCrud.ListView, self).get_queryset()
kwargs = {self.crud.parent_field: self.kwargs['pk']}
return qs.filter(**kwargs).order_by('-data_tramitacao')
class DeleteView(MasterDetailCrud.DeleteView):
def delete(self, request, *args, **kwargs):
tramitacao = Tramitacao.objects.get(id=self.kwargs['pk'])
materia = MateriaLegislativa.objects.get(id=tramitacao.materia.id)
url = reverse('materia:tramitacao_list',
kwargs={'pk': tramitacao.materia.id})
if tramitacao.pk != materia.tramitacao_set.last().pk:
msg = _('Somente a útlima tramitação pode ser deletada!')
messages.add_message(request, messages.ERROR, msg)
return HttpResponseRedirect(url)
else:
tramitacao.delete()
return HttpResponseRedirect(url)
class AutoriaCrud(MasterDetailCrud):
@ -81,6 +119,38 @@ class DespachoInicialCrud(MasterDetailCrud):
form_class = DespachoInicialForm
class LegislacaoCitadaCrud(MasterDetailCrud):
model = LegislacaoCitada
parent_field = 'materia'
help_path = ''
class BaseMixin(MasterDetailCrud.BaseMixin):
list_field_names = ['norma', 'disposicoes']
def resolve_url(self, suffix, args=None):
namespace = 'materia'
return reverse('%s:%s' % (namespace, self.url_name(suffix)),
args=args)
class CreateView(MasterDetailCrud.CreateView):
form_class = LegislacaoCitadaForm
class UpdateView(MasterDetailCrud.UpdateView):
form_class = LegislacaoCitadaForm
def get_initial(self):
self.initial['tipo'] = self.object.norma.tipo.id
self.initial['numero'] = self.object.norma.numero
self.initial['ano'] = self.object.norma.ano
return self.initial
class DetailView(MasterDetailCrud.DetailView):
@property
def layout_key(self):
return 'LegislacaoCitadaDetail'
class NumeracaoCrud(MasterDetailCrud):
model = Numeracao
parent_field = 'materia'
@ -107,7 +177,7 @@ class AnexadaCrud(MasterDetailCrud):
class UpdateView(MasterDetailCrud.UpdateView):
form_class = AnexadaForm
def get_initial(self, **kwargs):
def get_initial(self):
self.initial['tipo'] = self.object.materia_anexada.tipo.id
self.initial['numero'] = self.object.materia_anexada.numero
self.initial['ano'] = self.object.materia_anexada.ano
@ -129,132 +199,6 @@ class MateriaLegislativaCrud(Crud):
list_field_names = ['tipo', 'numero', 'ano', 'data_apresentacao']
class LegislacaoCitadaView(FormView):
template_name = "materia/legislacao_citada.html"
form_class = LegislacaoCitadaForm
def get(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
legislacao = LegislacaoCitada.objects.filter(materia_id=kwargs['pk'])
form = LegislacaoCitadaForm()
return self.render_to_response(
{'object': materia,
'form': form,
'legislacao': legislacao})
def post(self, request, *args, **kwargs):
form = LegislacaoCitadaForm(request.POST)
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
legislacao_list = LegislacaoCitada.objects.filter(
materia_id=kwargs['pk'])
if form.is_valid():
legislacao = LegislacaoCitada()
try:
norma = NormaJuridica.objects.get(
tipo_id=form.cleaned_data['tipo'],
numero=form.cleaned_data['numero'],
ano=form.cleaned_data['ano'])
except ObjectDoesNotExist:
msg = _('Norma Juridica não existe.')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response({'form': form,
'object': materia,
'legislacao': legislacao_list})
legislacao.materia = materia
legislacao.norma = norma
legislacao.disposicoes = form.cleaned_data['disposicoes']
legislacao.parte = form.cleaned_data['parte']
legislacao.livro = form.cleaned_data['livro']
legislacao.titulo = form.cleaned_data['titulo']
legislacao.capitulo = form.cleaned_data['capitulo']
legislacao.secao = form.cleaned_data['secao']
legislacao.subsecao = form.cleaned_data['subsecao']
legislacao.artigo = form.cleaned_data['artigo']
legislacao.paragrafo = form.cleaned_data['paragrafo']
legislacao.inciso = form.cleaned_data['inciso']
legislacao.alinea = form.cleaned_data['alinea']
legislacao.item = form.cleaned_data['item']
legislacao.save()
return self.form_valid(form)
else:
return self.render_to_response({'form': form,
'object': materia,
'legislacao': legislacao_list})
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('materia:legislacao_citada', kwargs={'pk': pk})
class LegislacaoCitadaEditView(FormView):
template_name = "materia/legislacao_citada_edit.html"
form_class = LegislacaoCitadaForm
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('materia:legislacao_citada', kwargs={'pk': pk})
def get(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
legislacao = LegislacaoCitada.objects.get(id=kwargs['id'])
form = LegislacaoCitadaForm()
return self.render_to_response(
{'object': materia,
'form': form,
'legislacao': legislacao,
'tipos_norma': TipoNormaJuridica.objects.all()})
def post(self, request, *args, **kwargs):
form = LegislacaoCitadaForm(request.POST)
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
legislacao = LegislacaoCitada.objects.get(id=kwargs['id'])
if form.is_valid():
if 'excluir' in request.POST:
legislacao.delete()
return self.form_valid(form)
elif 'salvar' in request.POST:
try:
norma = NormaJuridica.objects.get(
tipo_id=form.cleaned_data['tipo'],
numero=form.cleaned_data['numero'],
ano=form.cleaned_data['ano'])
except ObjectDoesNotExist:
msg = _('Norma Juridica não existe.')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'form': form,
'object': materia,
'legislacao': legislacao,
'tipos_norma': TipoNormaJuridica.objects.all()})
legislacao.materia = materia
legislacao.norma = norma
legislacao.disposicoes = form.cleaned_data['disposicoes']
legislacao.parte = form.cleaned_data['parte']
legislacao.livro = form.cleaned_data['livro']
legislacao.titulo = form.cleaned_data['titulo']
legislacao.capitulo = form.cleaned_data['capitulo']
legislacao.secao = form.cleaned_data['secao']
legislacao.subsecao = form.cleaned_data['subsecao']
legislacao.artigo = form.cleaned_data['artigo']
legislacao.paragrafo = form.cleaned_data['paragrafo']
legislacao.inciso = form.cleaned_data['inciso']
legislacao.alinea = form.cleaned_data['alinea']
legislacao.item = form.cleaned_data['item']
legislacao.save()
return self.form_valid(form)
else:
return self.render_to_response(
{'form': form,
'object': materia})
class DocumentoAcessorioView(CreateView):
template_name = "materia/documento_acessorio.html"
form_class = DocumentoAcessorioForm
@ -735,117 +679,6 @@ def do_envia_email_tramitacao(request, materia):
return None
class TramitacaoView(CreateView):
template_name = "materia/tramitacao.html"
form_class = TramitacaoForm
def get(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
tramitacoes = Tramitacao.objects.filter(
materia_id=kwargs['pk']).order_by('-data_tramitacao')
form = self.get_form()
return self.render_to_response(
{'object': materia,
'form': form,
'tramitacoes': tramitacoes})
def post(self, request, *args, **kwargs):
form = self.get_form()
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
tramitacoes_list = Tramitacao.objects.filter(
materia_id=kwargs['pk']).order_by('-data_tramitacao')
if form.is_valid():
ultima_tramitacao = Tramitacao.objects.filter(
materia_id=kwargs['pk']).last()
if ultima_tramitacao:
destino = ultima_tramitacao.unidade_tramitacao_destino
cleaned_data = form.cleaned_data['unidade_tramitacao_local']
if (destino == cleaned_data):
tramitacao = form.save(commit=False)
tramitacao.materia = materia
tramitacao.save()
else:
msg = _('A origem da nova tramitação \
deve ser igual ao destino da última adicionada!')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'form': form,
'object': materia,
'tramitacoes': tramitacoes_list})
do_envia_email_tramitacao(request, materia)
else:
tramitacao = form.save(commit=False)
tramitacao.materia = materia
tramitacao.save()
return self.form_valid(form)
else:
return self.render_to_response({'form': form,
'object': materia,
'tramitacoes': tramitacoes_list})
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('materia:tramitacao_materia', kwargs={'pk': pk})
class TramitacaoEditView(CreateView):
template_name = "materia/tramitacao_edit.html"
form_class = TramitacaoForm
def get(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
tramitacao = Tramitacao.objects.get(id=kwargs['id'])
form = TramitacaoForm(excluir=True, instance=tramitacao)
return self.render_to_response(
{'object': materia,
'form': form,
'tramitacao': tramitacao})
def post(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
tramitacao = Tramitacao.objects.get(id=kwargs['id'])
form = self.get_form()
if form.is_valid():
if 'excluir' in request.POST:
if tramitacao == Tramitacao.objects.filter(
materia=materia).last():
tramitacao.delete()
else:
msg = _('Somente a útlima tramitação pode ser deletada!')
messages.add_message(request, messages.INFO, msg)
return self.render_to_response(
{'object': materia,
'form': form,
'tramitacao': tramitacao})
elif 'salvar' in request.POST:
tramitacao.status = form.cleaned_data['status']
tramitacao.turno = form.cleaned_data['turno']
tramitacao.urgente = form.cleaned_data['urgente']
tramitacao.unidade_tramitacao_destino = form.cleaned_data[
'unidade_tramitacao_destino']
tramitacao.data_encaminhamento = form.cleaned_data[
'data_encaminhamento']
tramitacao.data_fim_prazo = form.cleaned_data['data_fim_prazo']
tramitacao.texto = form.cleaned_data['texto']
tramitacao.save()
return redirect(self.get_success_url())
else:
return self.render_to_response(
{'object': materia,
'form': form,
'tramitacao': tramitacao})
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('materia:tramitacao_materia', kwargs={'pk': pk})
class ProposicaoListView(ListView):
template_name = "materia/proposicao/proposicao_list.html"
paginate_by = 10

9
norma/layouts.yaml

@ -30,7 +30,14 @@ NormaJuridicaCreate:
LegislacaoCitada:
Legislação Citada:
- tip_norma_FIXME num_norma_FIXME ano_norma_FIXME
- tipo numero ano
- disposicoes parte livro titulo
- capitulo secao subsecao artigo
- paragrafo inciso alinea item
LegislacaoCitadaDetail:
Legislação Citada:
- norma
- disposicoes parte livro titulo
- capitulo secao subsecao artigo
- paragrafo inciso alinea item

1
static/js/app.js

@ -71,7 +71,6 @@ function autorModal() {
clean_if_exists("#id_autor");
clean_if_exists("#id_autoria__autor");
});
$("#button-id-pesquisar").click(function() {

33
templates/materia/legislacao_citada.html

@ -1,33 +0,0 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}
{% block detail_content %}
<fieldset>
<legend>Matéria Legislativa</legend>
{% include "materia/resumo_detail_materia.html" %}
<fieldset>
<legend>Legislação Citada</legend>
<table class="table table-striped table-bordered">
<thead class="thead-default">
<tr>
<th>Tipo Norma</th>
<th>Número</th>
<th>Ano</th>
<th>Disposição</th>
</tr>
</thead>
{% for l in legislacao %}
<tr>
<td><a href="{% url 'materia:legislacao_citada_edit' object.id l.id %}">{{l.norma.tipo.descricao}}</a></td>
<td>{{l.norma.numero}}</td>
<td>{{l.norma.ano}}</td>
<td>{{l.disposicoes}}</td>
</tr>
{% endfor %}
</table>
</fieldset>
{% crispy form %}
</fieldset>
{% endblock %}

94
templates/materia/legislacao_citada_edit.html

@ -1,94 +0,0 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}
{% block detail_content %}
<fieldset>
<legend>Matéria Legislativa</legend>
{% include "materia/resumo_detail_materia.html" %}
<fieldset class="form-group">
<legend>Editar Legislação Citada</legend>
<form method="POST">
{% csrf_token %}
<div class="row">
<div class="col-md-4">
<label>Tipo Norma*</label>
<select name="tipo" class="form-control">
{% for tipo in tipos_norma %}
<option value="{{tipo.id}}" {% if tipo == legislacao.norma.tipo %} selected {% endif %}>
{{tipo.sigla}} - {{tipo.descricao}}
</option>
{% endfor %}
</select>
</div>
<div class="col-md-4">
<label>Número*</label>
<input type="text" name="numero" value="{{legislacao.norma.numero}}" class="form-control"/>
</div>
<div class="col-md-4">
<label>Ano*</label>
<input type="text" name="ano" value="{{legislacao.norma.ano}}" class="form-control"/>
</div>
</div>
<div class="row">
<div class="col-md-3">
<label>Disposição</label>
<input type="text" name="disposicao" value="{{legislacao.disposicoes}}" class="form-control"/>
</div>
<div class="col-md-3">
<label>Parte</label>
<input type="text" name="parte" value="{{legislacao.parte}}" class="form-control"/>
</div>
<div class="col-md-3">
<label>Livro</label>
<input type="text" name="livro" value="{{legislacao.livro}}" class="form-control"/>
</div>
<div class="col-md-3">
<label>Título</label>
<input type="text" name="titulo" value="{{legislacao.titulo}}" class="form-control"/>
</div>
</div>
<div class="row">
<div class="col-md-3">
<label>Capítulo</label>
<input type="text" name="capitulo" value="{{legislacao.capitulo}}" class="form-control"/>
</div>
<div class="col-md-3">
<label>Seção</label>
<input type="text" name="secao" value="{{legislacao.secao}}" class="form-control"/>
</div>
<div class="col-md-3">
<label>Subseção</label>
<input type="text" name="subsecao" value="{{legislacao.subsecao}}" class="form-control"/>
</div>
<div class="col-md-3">
<label>Artigo</label>
<input type="text" name="artigo" value="{{legislacao.artigo}}" class="form-control"/>
</div>
</div>
<div class="row">
<div class="col-md-3">
<label>Inciso</label>
<input type="text" name="inciso" value="{{legislacao.inciso}}" class="form-control" />
</div>
<div class="col-md-3">
<label>Alínea</label>
<input type="text" name="alinea" value="{{legislacao.alinea}}" class="form-control"/>
</div>
<div class="col-md-3">
<label>Item</label>
<input type="text" name="item" value="{{legislacao.item}}" class="form-control"/>
</div>
</div>
<br />
<input type="submit" value="Salvar" id="salvar" name="salvar" class="btn btn-primary" />
<input type="submit" value="Excluir" id="excluir" name="excluir" class="btn btn-danger" />
</form>
</fieldset>
</fieldset>
{% endblock %}

4
templates/materia/subnav.yaml

@ -9,11 +9,11 @@
- title: Documento Acessório
url: documento_acessorio
- title: Legislação Citada
url: legislacao_citada
url: legislacaocitada_list
- title: Numeração
url: numeracao_list
- title: Tramitação
url: tramitacao_materia
url: tramitacao_list
- title: Relatoria
url: relatoria

33
templates/materia/tramitacao.html

@ -1,33 +0,0 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}
{% block detail_content %}
<fieldset>
<legend>Matéria Legislativa</legend>
{% include "materia/resumo_detail_materia.html" %}
<fieldset>
<legend>Tramitações</legend>
<table class="table table-striped table-bordered">
<thead class="thead-default">
<tr>
<th>Data Ação</th>
<th>Origem</th>
<th>Destino</th>
<th>Status</th>
</tr>
</thead>
{% for t in tramitacoes %}
<tr>
<td><a href="{% url 'materia:tramitacao_edit' object.id t.id %}">{{t.data_tramitacao|date:'d/m/Y'}}</a></td>
<td>{{t.unidade_tramitacao_local}}</td>
<td>{{t.unidade_tramitacao_destino}}</td>
<td>{{t.status.descricao}}</td>
</tr>
{% endfor %}
</table>
</fieldset>
{% crispy form %}
</fieldset>
{% endblock %}

7
templates/materia/tramitacao_edit.html

@ -1,7 +0,0 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}
{% block detail_content %}
{% crispy form %}
{% endblock %}
Loading…
Cancel
Save