Browse Source

Init crud legislação citada

pull/380/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
8874ac2688
  1. 36
      materia/forms.py
  2. 7
      materia/layouts.yaml
  3. 10
      materia/urls.py
  4. 158
      materia/views.py
  5. 9
      norma/layouts.yaml
  6. 33
      templates/materia/legislacao_citada.html
  7. 94
      templates/materia/legislacao_citada_edit.html
  8. 2
      templates/materia/subnav.yaml

36
materia/forms.py

@ -270,42 +270,6 @@ class LegislacaoCitadaForm(ModelForm):
'alinea',
'item']
def __init__(self, *args, **kwargs):
row1 = crispy_layout_mixin.to_row(
[('tipo', 4),
('numero', 4),
('ano', 4)])
row2 = crispy_layout_mixin.to_row(
[('disposicoes', 3),
('parte', 3),
('livro', 3),
('titulo', 3)])
row3 = crispy_layout_mixin.to_row(
[('capitulo', 3),
('secao', 3),
('subsecao', 3),
('artigo', 3)])
row4 = crispy_layout_mixin.to_row(
[('paragrafo', 3),
('inciso', 3),
('alinea', 3),
('item', 3)])
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)
class NumeracaoForm(ModelForm):

7
materia/layouts.yaml

@ -115,3 +115,10 @@ Tramitacao:
DespachoInicial:
Despacho Inicial:
- comissao
LegislacaoCitadaDetail:
Legislação Citada:
- norma
- disposicoes parte livro titulo
- capitulo secao subsecao artigo
- paragrafo inciso alinea item

10
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,
@ -27,7 +26,8 @@ urlpatterns = [
AnexadaCrud.get_urls() +
AutoriaCrud.get_urls() +
DespachoInicialCrud.get_urls() +
NumeracaoCrud.get_urls())),
NumeracaoCrud.get_urls() +
LegislacaoCitadaCrud.get_urls())),
url(r'^materia/(?P<pk>[0-9]+)/ta$',
@ -54,10 +54,6 @@ 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',

158
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,
@ -81,6 +81,34 @@ 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']
class CreateView(MasterDetailCrud.CreateView):
form_class = LegislacaoCitadaForm
class UpdateView(MasterDetailCrud.UpdateView):
form_class = LegislacaoCitadaForm
def get_initial(self):
self.initial['tipo_norma'] = self.object.norma.tipo.id
self.initial['numero_norma'] = self.object.norma.numero
self.initial['ano_norma'] = 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 +135,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 +157,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

9
norma/layouts.yaml

@ -30,7 +30,14 @@ NormaJuridicaCreate:
LegislacaoCitada:
Legislação Citada:
- tip_norma_FIXME num_norma_FIXME ano_norma_FIXME
- tipo_norma numero_norma ano_norma
- 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

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 %}

2
templates/materia/subnav.yaml

@ -9,7 +9,7 @@
- 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

Loading…
Cancel
Save