Browse Source

Inicia crud de anexada

pull/346/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
0ca00cfe85
  1. 55
      materia/forms.py
  2. 5
      materia/layouts.yaml
  3. 14
      materia/urls.py
  4. 350
      materia/views.py
  5. 3
      templates/materia/anexada_detail.html
  6. 2
      templates/materia/autoria.html
  7. 2
      templates/materia/autoria_edit.html
  8. 2
      templates/materia/despacho_inicial.html
  9. 2
      templates/materia/despacho_inicial_edit.html
  10. 2
      templates/materia/documento_acessorio.html
  11. 2
      templates/materia/documento_acessorio_edit.html
  12. 2
      templates/materia/legislacao_citada.html
  13. 2
      templates/materia/legislacao_citada_edit.html
  14. 33
      templates/materia/materia_anexada.html
  15. 7
      templates/materia/materia_anexada_edit.html
  16. 1
      templates/materia/materialegislativa_detail.html
  17. 2
      templates/materia/materialegislativa_filter.html
  18. 2
      templates/materia/numeracao.html
  19. 2
      templates/materia/numeracao_edit.html
  20. 2
      templates/materia/relatoria.html
  21. 2
      templates/materia/relatoria_edit.html
  22. 2
      templates/materia/subnav.yaml
  23. 2
      templates/materia/tramitacao.html
  24. 2
      templates/materia/tramitacao_edit.html

55
materia/forms.py

@ -359,7 +359,7 @@ class DespachoInicialForm(ModelForm):
super(DespachoInicialForm, self).__init__(*args, **kwargs)
class MateriaAnexadaForm(ModelForm):
class AnexadaForm(ModelForm):
tipo = forms.ModelChoiceField(
label='Tipo',
@ -372,36 +372,37 @@ class MateriaAnexadaForm(ModelForm):
ano = forms.CharField(label='Ano', required=True)
class Meta:
model = Anexada
fields = ['tipo', 'numero', 'ano',
'data_anexacao', 'data_desanexacao']
widgets = {
'data_anexacao': forms.DateInput(attrs={'class': 'dateinput'}),
'data_desanexacao': forms.DateInput(attrs={'class': 'dateinput'}),
}
def clean(self):
def __init__(self, excluir=False, *args, **kwargs):
if self.errors:
return self.errors
row1 = crispy_layout_mixin.to_row(
[('tipo', 4), ('numero', 4), ('ano', 4)])
row2 = crispy_layout_mixin.to_row(
[('data_anexacao', 6), ('data_desanexacao', 6)])
cleaned_data = self.cleaned_data
more = []
if excluir:
more = [Submit('Excluir', 'Excluir')]
try:
materia_anexada = MateriaLegislativa.objects.get(
numero=cleaned_data['numero'],
ano=cleaned_data['ano'],
tipo=cleaned_data['tipo'])
except ObjectDoesNotExist:
msg = _('A matéria a ser anexada não existe no cadastro'
' de matérias legislativas.')
raise ValidationError(msg)
else:
cleaned_data['materia_anexada_id'] = materia_anexada.id
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
_('Anexar Matéria'),
row1, row2,
form_actions(more=more)
)
)
super(MateriaAnexadaForm, self).__init__(
*args, **kwargs)
return cleaned_data
def save(self, commit=False):
anexada = super(AnexadaForm, self).save(commit)
anexada.materia_anexada_id = self.cleaned_data['materia_anexada_id']
import ipdb; ipdb.set_trace()
return anexada
class Meta:
model = Anexada
fields = ['tipo', 'numero', 'ano',
'data_anexacao', 'data_desanexacao']
class AutoriaForm(ModelForm):

5
materia/layouts.yaml

@ -37,11 +37,8 @@ MateriaLegislativa:
- observacao
Anexada:
Matéria Legislativa:
- tip_id_basica_FIXME num_ident_basica_FIXME ano_ident_basica_FIXME
- data_anexacao data_desanexacao
Matéria Anexada:
- tip_id_basica_FIXME num_ident_basica_FIXME ano_ident_basica_FIXME
- tipo numero ano
- data_anexacao data_desanexacao
TipoAutor:

14
materia/urls.py

@ -7,7 +7,6 @@ from materia.views import (AcompanhamentoConfirmarView,
DespachoInicialEditView, DespachoInicialView,
DocumentoAcessorioEditView, DocumentoAcessorioView,
LegislacaoCitadaEditView, LegislacaoCitadaView,
MateriaAnexadaEditView, MateriaAnexadaView,
MateriaLegislativaCrud,
MateriaLegislativaPesquisaView, MateriaTaView,
NumeracaoEditView, NumeracaoView, OrgaoCrud,
@ -18,14 +17,15 @@ from materia.views import (AcompanhamentoConfirmarView,
TipoDocumentoCrud, TipoFimRelatoriaCrud,
TipoMateriaCrud, TipoProposicaoCrud,
TramitacaoEditView, TramitacaoView,
UnidadeTramitacaoCrud)
UnidadeTramitacaoCrud, AnexadaCrud)
from .apps import AppConfig
app_name = AppConfig.name
urlpatterns = [
url(r'^materia/', include(MateriaLegislativaCrud.get_urls())),
url(r'^materia/', include(MateriaLegislativaCrud.get_urls() +
AnexadaCrud.get_urls())),
url(r'^materia/(?P<pk>[0-9]+)/ta$',
@ -52,10 +52,10 @@ 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+)/materia-anexada$',
MateriaAnexadaView.as_view(), name='materia_anexada'),
url(r'^materia/(?P<pk>\d+)/materia-anexada/(?P<id>\d+)/edit',
MateriaAnexadaEditView.as_view(), name='materia_anexada_edit'),
# url(r'^materia/(?P<pk>\d+)/materia-anexada$',
# MateriaAnexadaView.as_view(), name='materia_anexada'),
# url(r'^materia/(?P<pk>\d+)/materia-anexada/(?P<id>\d+)/edit',
# MateriaAnexadaEditView.as_view(), name='materia_anexada_edit'),
url(r'^materia/(?P<pk>\d+)/despacho-inicial$',
DespachoInicialView.as_view(), name='despacho_inicial'),
url(r'^materia/(?P<pk>\d+)/despacho-inicial/(?P<id>\d+)/edit',

350
materia/views.py

@ -15,19 +15,21 @@ from django.views.generic import CreateView, FormView, ListView, TemplateView
from django_filters.views import FilterView
import crud.base
import crud.masterdetail
from base.models import CasaLegislativa
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 parlamentares.models import Partido
from sapl.utils import get_base_url
from .forms import (AcompanhamentoMateriaForm, AutoriaForm,
from .forms import (AcompanhamentoMateriaForm, AnexadaForm, AutoriaForm,
DespachoInicialForm, DocumentoAcessorioForm,
LegislacaoCitadaForm, MateriaAnexadaForm,
MateriaLegislativaFilterSet, NumeracaoForm, ProposicaoForm,
RelatoriaForm, TramitacaoForm, filtra_tramitacao_destino,
LegislacaoCitadaForm, MateriaLegislativaFilterSet,
NumeracaoForm, ProposicaoForm, RelatoriaForm,
TramitacaoForm, filtra_tramitacao_destino,
filtra_tramitacao_destino_and_status,
filtra_tramitacao_status)
from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria,
@ -58,171 +60,201 @@ UnidadeTramitacaoCrud = Crud.build(UnidadeTramitacao, 'unidade_tramitacao')
TramitacaoCrud = Crud.build(Tramitacao, '')
class MateriaLegislativaCrud(Crud):
model = MateriaLegislativa
help_path = 'materia_legislativa'
class BaseMixin(crud.base.CrudBaseMixin):
list_field_names = ['tipo', 'numero', 'ano', 'data_apresentacao']
class MateriaAnexadaView(FormView):
template_name = "materia/materia_anexada.html"
form_class = MateriaAnexadaForm
form_valid_message = _('Matéria anexada com sucesso!')
def get(self, request, *args, **kwargs):
form = MateriaAnexadaForm()
materia = MateriaLegislativa.objects.get(
id=kwargs['pk'])
anexadas = Anexada.objects.filter(
materia_principal_id=kwargs['pk'])
return self.render_to_response({'object': materia,
'anexadas': anexadas,
'form': form})
def form_invalid(self,
form,
request,
mat_principal,
anexadas,
msg='Erro ineseperado.'):
messages.add_message(request, messages.ERROR, msg)
return self.render_to_response(
{'form': form,
'object': mat_principal,
'anexadas': anexadas})
def post(self, request, *args, **kwargs):
form = self.get_form()
anexadas = Anexada.objects.filter(
materia_principal_id=kwargs['pk'])
mat_principal = MateriaLegislativa.objects.get(
id=kwargs['pk'])
class AnexadaCrud(MasterDetailCrud):
model = Anexada
parent_field = 'materia_principal'
help_path = ''
if form.is_valid():
tipo = form.cleaned_data['tipo']
numero = form.cleaned_data['numero']
ano = form.cleaned_data['ano']
data_anexacao = form.cleaned_data['data_anexacao']
data_desanexacao = form.cleaned_data['data_desanexacao']
class BaseMixin(MasterDetailCrud.BaseMixin):
list_field_names = ['materia_anexada', 'data_anexacao']
try:
mat_anexada = MateriaLegislativa.objects.get(
numero=numero, ano=ano, tipo=tipo)
if mat_principal.tipo == mat_anexada.tipo:
msg = _('A matéria a ser anexada não pode ser do mesmo'
' tipo da matéria principal.')
self.form_invalid(
form, request, mat_principal, anexadas, msg)
anexada = Anexada()
anexada.materia_principal = mat_principal
anexada.materia_anexada = mat_anexada
anexada.data_anexacao = data_anexacao
if data_desanexacao:
anexada.data_desanexacao = data_desanexacao
anexada.save()
except ObjectDoesNotExist:
msg = _('A matéria a ser anexada não existe no cadastro'
' de matérias legislativas.')
self.form_invalid(form, request, mat_principal, anexadas, msg)
return self.form_valid(form)
else:
return self.render_to_response(
{'form': form,
'object': mat_principal,
'anexadas': anexadas})
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('materia:materia_anexada', kwargs={'pk': pk})
class CreateView(MasterDetailCrud.CreateView):
form_class = AnexadaForm
class UpdateView(MasterDetailCrud.UpdateView):
form_class = AnexadaForm
class MateriaAnexadaEditView(FormView):
template_name = "materia/materia_anexada_edit.html"
form_class = MateriaAnexadaForm
def form_invalid(self,
form,
request,
mat_principal,
msg='Erro ineseperado.'):
messages.add_message(request, messages.ERROR, msg)
return self.render_to_response(
{'form': form, 'object': mat_principal})
def get(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
anexada = Anexada.objects.get(id=kwargs['id'])
class DetailView(MasterDetailCrud.DetailView):
data = {}
data['tipo'] = anexada.materia_anexada.tipo
data['numero'] = anexada.materia_anexada.numero
data['ano'] = anexada.materia_anexada.ano
data['data_anexacao'] = anexada.data_anexacao
data['data_desanexacao'] = anexada.data_desanexacao
def layout_display(self):
# context = super(MasterDetailCrud.DetailView, self).get_context_data(**kwargs)
# import ipdb; ipdb.set_trace()
# if self.object:
# context['tipo'] = self.object.materia_anexada.tipo
# context['numero'] = self.object.materia_anexada.numero
# context['ano'] = self.object.materia_anexada.ano
# context.update(context)
# return context
return [self.object.materia_anexada.tipo,
self.object.materia_anexada.numero,
self.object.materia_anexada.ano]
form = MateriaAnexadaForm(initial=data, excluir=True)
return self.render_to_response(
{'object': materia,
'form': form})
def post(self, request, *args, **kwargs):
form = self.get_form()
anexada = Anexada.objects.get(id=kwargs['id'])
mat_principal = MateriaLegislativa.objects.get(
id=kwargs['pk'])
if form.is_valid():
if 'Excluir' in request.POST:
anexada.delete()
return self.form_valid(form)
elif 'salvar' in request.POST:
tipo = form.cleaned_data['tipo']
numero = form.cleaned_data['numero']
ano = form.cleaned_data['ano']
data_anexacao = form.cleaned_data['data_anexacao']
if 'data_desanexacao' in request.POST:
data_desanexacao = form.cleaned_data['data_desanexacao']
try:
mat_anexada = MateriaLegislativa.objects.get(
numero=numero, ano=ano, tipo=tipo)
if mat_principal.tipo == mat_anexada.tipo:
msg = _('A matéria a ser anexada não pode ser do mesmo \
tipo da matéria principal.')
self.form_invalid(form, request, mat_principal, msg)
anexada.materia_principal = mat_principal
anexada.materia_anexada = mat_anexada
anexada.data_anexacao = data_anexacao
if data_desanexacao:
anexada.data_desanexacao = data_desanexacao
class MateriaLegislativaCrud(Crud):
model = MateriaLegislativa
help_path = 'materia_legislativa'
anexada.save()
return self.form_valid(form)
class BaseMixin(crud.base.CrudBaseMixin):
list_field_names = ['tipo', 'numero', 'ano', 'data_apresentacao']
except ObjectDoesNotExist:
msg = _('A matéria a ser anexada não existe no cadastro \
de matérias legislativas.')
self.form_invalid(form, request, mat_principal, msg)
else:
return self.render_to_response(
{'form': form,
'materia': mat_principal})
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('materia_anexada', kwargs={'pk': pk})
# class MateriaAnexadaView(FormView):
# template_name = "materia/materia_anexada.html"
# form_class = MateriaAnexadaForm
# form_valid_message = _('Matéria anexada com sucesso!')
#
# def get(self, request, *args, **kwargs):
# form = MateriaAnexadaForm()
# materia = MateriaLegislativa.objects.get(
# id=kwargs['pk'])
# anexadas = Anexada.objects.filter(
# materia_principal_id=kwargs['pk'])
#
# return self.render_to_response({'object': materia,
# 'anexadas': anexadas,
# 'form': form})
#
# def form_invalid(self,
# form,
# request,
# mat_principal,
# anexadas,
# msg='Erro ineseperado.'):
# messages.add_message(request, messages.ERROR, msg)
# return self.render_to_response(
# {'form': form,
# 'object': mat_principal,
# 'anexadas': anexadas})
#
# def post(self, request, *args, **kwargs):
# form = self.get_form()
#
# anexadas = Anexada.objects.filter(
# materia_principal_id=kwargs['pk'])
# mat_principal = MateriaLegislativa.objects.get(
# id=kwargs['pk'])
#
# if form.is_valid():
# tipo = form.cleaned_data['tipo']
# numero = form.cleaned_data['numero']
# ano = form.cleaned_data['ano']
# data_anexacao = form.cleaned_data['data_anexacao']
# data_desanexacao = form.cleaned_data['data_desanexacao']
#
# try:
# mat_anexada = MateriaLegislativa.objects.get(
# numero=numero, ano=ano, tipo=tipo)
#
# if mat_principal.tipo == mat_anexada.tipo:
# msg = _('A matéria a ser anexada não pode ser do mesmo'
# ' tipo da matéria principal.')
# self.form_invalid(
# form, request, mat_principal, anexadas, msg)
# anexada = Anexada()
# anexada.materia_principal = mat_principal
# anexada.materia_anexada = mat_anexada
# anexada.data_anexacao = data_anexacao
# if data_desanexacao:
# anexada.data_desanexacao = data_desanexacao
#
# anexada.save()
# except ObjectDoesNotExist:
# msg = _('A matéria a ser anexada não existe no cadastro'
# ' de matérias legislativas.')
# self.form_invalid(form, request, mat_principal, anexadas, msg)
# return self.form_valid(form)
# else:
# return self.render_to_response(
# {'form': form,
# 'object': mat_principal,
# 'anexadas': anexadas})
#
# def get_success_url(self):
# pk = self.kwargs['pk']
# return reverse('materia:materia_anexada', kwargs={'pk': pk})
#
#
# class MateriaAnexadaEditView(FormView):
# template_name = "materia/materia_anexada_edit.html"
# form_class = MateriaAnexadaForm
#
# def form_invalid(self,
# form,
# request,
# mat_principal,
# msg='Erro ineseperado.'):
# messages.add_message(request, messages.ERROR, msg)
# return self.render_to_response(
# {'form': form, 'object': mat_principal})
#
# def get(self, request, *args, **kwargs):
# materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
# anexada = Anexada.objects.get(id=kwargs['id'])
#
# data = {}
# data['tipo'] = anexada.materia_anexada.tipo
# data['numero'] = anexada.materia_anexada.numero
# data['ano'] = anexada.materia_anexada.ano
# data['data_anexacao'] = anexada.data_anexacao
# data['data_desanexacao'] = anexada.data_desanexacao
#
# form = MateriaAnexadaForm(initial=data, excluir=True)
#
# return self.render_to_response(
# {'object': materia,
# 'form': form})
#
# def post(self, request, *args, **kwargs):
# form = self.get_form()
#
# anexada = Anexada.objects.get(id=kwargs['id'])
# mat_principal = MateriaLegislativa.objects.get(
# id=kwargs['pk'])
# if form.is_valid():
# if 'Excluir' in request.POST:
# anexada.delete()
# return self.form_valid(form)
# elif 'salvar' in request.POST:
#
# tipo = form.cleaned_data['tipo']
# numero = form.cleaned_data['numero']
# ano = form.cleaned_data['ano']
# data_anexacao = form.cleaned_data['data_anexacao']
#
# if 'data_desanexacao' in request.POST:
# data_desanexacao = form.cleaned_data['data_desanexacao']
#
# try:
# mat_anexada = MateriaLegislativa.objects.get(
# numero=numero, ano=ano, tipo=tipo)
#
# if mat_principal.tipo == mat_anexada.tipo:
# msg = _('A matéria a ser anexada não pode ser do mesmo \
# tipo da matéria principal.')
# self.form_invalid(form, request, mat_principal, msg)
#
# anexada.materia_principal = mat_principal
# anexada.materia_anexada = mat_anexada
# anexada.data_anexacao = data_anexacao
#
# if data_desanexacao:
# anexada.data_desanexacao = data_desanexacao
#
# anexada.save()
# return self.form_valid(form)
#
# except ObjectDoesNotExist:
# msg = _('A matéria a ser anexada não existe no cadastro \
# de matérias legislativas.')
# self.form_invalid(form, request, mat_principal, msg)
# else:
# return self.render_to_response(
# {'form': form,
# 'materia': mat_principal})
#
# def get_success_url(self):
# pk = self.kwargs['pk']
# return reverse('materia_anexada', kwargs={'pk': pk})
class DespachoInicialView(CreateView):

3
templates/materia/anexada_detail.html

@ -0,0 +1,3 @@
{% extends "crud/detail.html" %}
{% block detail_content %}
{% endblock %}

2
templates/materia/autoria.html

@ -1,4 +1,4 @@
{% extends "materia/materialegislativa_detail.html" %}
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}

2
templates/materia/autoria_edit.html

@ -1,4 +1,4 @@
{% extends "materia/materialegislativa_detail.html" %}
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}

2
templates/materia/despacho_inicial.html

@ -1,4 +1,4 @@
{% extends "materia/materialegislativa_detail.html" %}
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}

2
templates/materia/despacho_inicial_edit.html

@ -1,4 +1,4 @@
{% extends "materia/materialegislativa_detail.html" %}
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}

2
templates/materia/documento_acessorio.html

@ -1,4 +1,4 @@
{% extends "materia/materialegislativa_detail.html" %}
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}

2
templates/materia/documento_acessorio_edit.html

@ -1,4 +1,4 @@
{% extends "materia/materialegislativa_detail.html" %}
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}

2
templates/materia/legislacao_citada.html

@ -1,4 +1,4 @@
{% extends "materia/materialegislativa_detail.html" %}
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}

2
templates/materia/legislacao_citada_edit.html

@ -1,4 +1,4 @@
{% extends "materia/materialegislativa_detail.html" %}
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}

33
templates/materia/materia_anexada.html

@ -1,33 +0,0 @@
{% extends "materia/materialegislativa_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>Matérias Anexadas</legend>
<table class="table table-striped table-bordered">
<thead class="thead-default">
<tr>
<th>Matéria Anexada</th>
<th>Data Anexação</th>
<th>Data Desanexação</th>
</tr>
</thead>
{% for a in anexadas %}
<tr>
<td><a href="{% url 'materia:materia_anexada_edit' object.id a.id %}">{{a.materia_anexada.tipo.sigla}} {{a.materia_anexada.numero}}/{{a.materia_anexada.ano}}</a></td>
<td>{{a.data_anexacao|date:"d/m/Y"}}</td>
<td>{{a.data_desanexacao|date:"d/m/Y"}}</td>
</tr>
{% endfor %}
</table>
</fieldset>
<br /><br />
{% crispy form %}
</fieldset>
{% endblock %}

7
templates/materia/materia_anexada_edit.html

@ -1,7 +0,0 @@
{% extends "materia/materialegislativa_detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}
{% block detail_content %}
{% crispy form %}
{% endblock %}

1
templates/materia/materialegislativa_detail.html

@ -1 +0,0 @@
{% extends "crud/detail.html" %}

2
templates/materia/materialegislativa_filter.html

@ -1,4 +1,4 @@
{% extends "materia/materialegislativa_detail.html" %}
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %}{% endblock %}

2
templates/materia/numeracao.html

@ -1,4 +1,4 @@
{% extends "materia/materialegislativa_detail.html" %}
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}

2
templates/materia/numeracao_edit.html

@ -1,4 +1,4 @@
{% extends "materia/materialegislativa_detail.html" %}
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}

2
templates/materia/relatoria.html

@ -1,4 +1,4 @@
{% extends "materia/materialegislativa_detail.html" %}
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}

2
templates/materia/relatoria_edit.html

@ -1,4 +1,4 @@
{% extends "materia/materialegislativa_detail.html" %}
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}

2
templates/materia/subnav.yaml

@ -1,7 +1,7 @@
- title: Início
url: materialegislativa_detail
- title: Anexada
url: materia_anexada
url: anexada_list
- title: Autoria
url: autoria
- title: Despacho Inicial

2
templates/materia/tramitacao.html

@ -1,4 +1,4 @@
{% extends "materia/materialegislativa_detail.html" %}
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}

2
templates/materia/tramitacao_edit.html

@ -1,4 +1,4 @@
{% extends "materia/materialegislativa_detail.html" %}
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %} {% endblock %}

Loading…
Cancel
Save