Browse Source

Add Legislacao Citada in Materia

pull/11/merge
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
8a0575353b
  1. 6
      materia/urls.py
  2. 207
      materia/views.py
  3. 4
      norma/urls.py
  4. 20
      norma/views.py
  5. 37
      templates/materia/legislacao_citada.html
  6. 74
      templates/materia/legislacao_citada_edit.html
  7. 6
      templates/materia/materia_detail.html

6
materia/urls.py

@ -1,6 +1,8 @@
from django.conf.urls import include, url
from materia.views import (DespachoInicialEditView, DespachoInicialView,
FormularioCadastroView, FormularioSimplificadoView,
LegislacaoCitadaEditView, LegislacaoCitadaView,
MateriaAnexadaEditView, MateriaAnexadaView,
autor_crud, materia_legislativa_crud, orgao_crud,
origem_crud, regime_tramitacao_crud,
@ -42,4 +44,8 @@ urlpatterns = [
DespachoInicialView.as_view(), name='despacho_inicial'),
url(r'^materia/(?P<pk>\d+)/despacho-inicial/(?P<id>\d+)/edit',
DespachoInicialEditView.as_view(), name='despacho_inicial_edit'),
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'),
]

207
materia/views.py

@ -1,8 +1,7 @@
from datetime import date
from comissoes.models import Comissao
from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, ButtonHolder, Fieldset, Layout, Submit
from crispy_forms.layout import ButtonHolder, Fieldset, Layout, Submit
from django import forms
from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse
@ -11,9 +10,12 @@ from django.shortcuts import render
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
from django.views.generic.edit import FormMixin
from sapl.crud import build_crud
from vanilla import GenericView
from comissoes.models import Comissao
from norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica
from sapl.crud import build_crud
from .models import (Anexada, Autor, Autoria, DespachoInicial,
DocumentoAcessorio, MateriaLegislativa, Numeracao, Orgao,
Origem, Proposicao, RegimeTramitacao, Relatoria,
@ -715,3 +717,202 @@ class DespachoInicialEditView(FormMixin, GenericView):
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('despacho_inicial', kwargs={'pk': pk})
def get_tipos_norma():
return [('', 'Selecione')] \
+ [(t.id, t.sigla + ' - ' + t.descricao)
for t in TipoNormaJuridica.objects.all()]
class LegislacaoCitadaForm(forms.Form):
tipo = forms.ChoiceField(required=True,
label='Tipo Norma',
choices=get_tipos_norma(),
widget=forms.Select(
attrs={'class': 'selector'}))
numero = forms.CharField(label='Número', required=True)
ano = forms.CharField(label='Ano', required=True)
disposicao = forms.CharField(label='Disposição', required=False)
parte = forms.CharField(label='Parte', required=False)
livro = forms.CharField(label='Livro', required=False)
titulo = forms.CharField(label='Título', required=False)
capitulo = forms.CharField(label='Capítulo', required=False)
secao = forms.CharField(label='Seção', required=False)
subsecao = forms.CharField(label='Subseção', required=False)
artigo = forms.CharField(label='Artigo', required=False)
paragrafo = forms.CharField(label='Parágrafo', required=False)
inciso = forms.CharField(label='Inciso', required=False)
alinea = forms.CharField(label='Alínea', required=False)
item = forms.CharField(label='Item', required=False)
class Meta:
model = LegislacaoCitada
def __init__(self, *args, **kwargs):
self.helper = FormHelper()
self.helper.form_class = 'form-horizontal'
self.helper.layout = Layout(
Fieldset(
'Incluir Legislação Citada',
'tipo',
'numero',
'ano',
'disposicao',
'parte',
'livro',
'titulo',
'capitulo',
'secao',
'subsecao',
'artigo',
'paragrafo',
'inciso',
'alinea',
'item',
ButtonHolder(
Submit('submit', 'Salvar',
css_class='button primary')
)
)
)
super(LegislacaoCitadaForm, self).__init__(*args, **kwargs)
class LegislacaoCitadaView(FormMixin, GenericView):
template_name = "materia/legislacao_citada.html"
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(
{'materia': 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:
error = 'Norma Juridica não existe.'
return self.render_to_response({'form': form,
'materia': materia,
'legislacao': legislacao_list,
'error': error})
legislacao.materia = materia
legislacao.norma = norma
legislacao.disposicoes = form.cleaned_data['disposicao']
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,
'materia': materia,
'legislacao': legislacao_list})
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('legislacao_citada', kwargs={'pk': pk})
class LegislacaoCitadaEditView(FormMixin, GenericView):
template_name = "materia/legislacao_citada_edit.html"
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('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(
{'materia': 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:
error = 'Norma Juridica não existe.'
return self.render_to_response(
{'form': form,
'materia': materia,
'error': error,
'legislacao': legislacao,
'tipos_norma': TipoNormaJuridica.objects.all()})
legislacao.materia = materia
legislacao.norma = norma
legislacao.disposicoes = form.cleaned_data['disposicao']
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,
'materia': materia})

4
norma/urls.py

@ -1,8 +1,8 @@
from django.conf.urls import include, url
from norma.views import (assunto_norma_crud,
from norma.views import (NormaIncluirView, assunto_norma_crud,
norma_temporario_para_compilacao_crud,
tipo_norma_crud, NormaIncluirView)
tipo_norma_crud)
norma_url_patterns = norma_temporario_para_compilacao_crud.urlpatterns

20
norma/views.py

@ -1,22 +1,18 @@
from django.utils.translation import ugettext_lazy as _
from sapl.crud import build_crud
from datetime import datetime
from django import forms
from django.utils.safestring import mark_safe
from django.core.urlresolvers import reverse
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
from django.views.generic.edit import FormMixin
from vanilla import GenericView
from datetime import datetime
from materia.models import TipoMateriaLegislativa
from sapl.crud import build_crud
from .models import (AssuntoNorma, LegislacaoCitada, NormaJuridica,
TipoNormaJuridica)
from materia.models import TipoMateriaLegislativa
from django.views.generic.edit import FormMixin
from vanilla import GenericView
assunto_norma_crud = build_crud(
AssuntoNorma, 'assunto_norma_juridica', [
@ -231,5 +227,3 @@ class NormaIncluirView(FormMixin, GenericView):
return self.render_to_response({'form': form})
else:
return self.form_invalid(form)

37
templates/materia/legislacao_citada.html

@ -0,0 +1,37 @@
{% extends "materia/materia_detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block detail_content %}
<fieldset>
<legend>Matéria Legislativa</legend>
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3">
<li>Tipo: <b>{{materia.tipo.sigla}}</b></li>
<li>Número: <b>{{materia.numero}}</b></li>
<li>Ano: <b>{{materia.ano}}</b></li>
</ul>
Ementa: <b>{{materia.ementa}}</b>
<fieldset>
<legend>Legislação Citada</legend>
<table>
<tr>
<th>Tipo Norma</th>
<th>Número</th>
<th>Ano</th>
<th>Disposição</th>
</tr>
{% for l in legislacao %}
<tr>
<td><a href="{% url 'legislacao_citada_edit' materia.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>
{% if error %} <h5 align="center"><font color="#FF0000">{{ error }}</font></h5> {% endif %}
{% crispy form %}
</fieldset>
{% endblock %}

74
templates/materia/legislacao_citada_edit.html

@ -0,0 +1,74 @@
{% extends "materia/materia_detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block detail_content %}
<fieldset>
<legend>Matéria Legislativa</legend>
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3">
<li>Tipo: <b>{{materia.tipo.sigla}}</b></li>
<li>Número: <b>{{materia.numero}}</b></li>
<li>Ano: <b>{{materia.ano}}</b></li>
</ul>
Ementa: <b>{{materia.ementa}}</b>
<fieldset>
<legend>Editar Legislação Citada</legend>
<form method="POST">
{% csrf_token %}
{% if error %} <h5 align="center"><font color="#FF0000">{{ error }}</font></h5> {% endif %}
Tipo Norma*
<select name="tipo">
{% for tipo in tipos_norma %}
<option value="{{tipo.id}}" {% if tipo == legislacao.norma.tipo %} selected {% endif %}>
{{tipo.sigla}} - {{tipo.descricao}}
</option>
{% endfor %}
</select>
Número*
<input type="text" name="numero" value="{{legislacao.norma.numero}}" />
Ano*
<input type="text" name="ano" value="{{legislacao.norma.ano}}" />
Disposição
<input type="text" name="disposicao" value="{{legislacao.disposicoes}}" />
Parte
<input type="text" name="parte" value="{{legislacao.parte}}" />
Livro
<input type="text" name="livro" value="{{legislacao.livro}}" />
Título
<input type="text" name="titulo" value="{{legislacao.titulo}}" />
Capítulo
<input type="text" name="capitulo" value="{{legislacao.capitulo}}" />
Seção
<input type="text" name="secao" value="{{legislacao.secao}}" />
Subseção
<input type="text" name="subsecao" value="{{legislacao.subsecao}}" />
Artigo
<input type="text" name="artigo" value="{{legislacao.artigo}}" />
Inciso
<input type="text" name="inciso" value="{{legislacao.inciso}}" />
Alínea
<input type="text" name="alinea" value="{{legislacao.alinea}}" />
Item
<input type="text" name="item" value="{{legislacao.item}}" />
<input type="submit" value="Salvar" id="salvar" name="salvar" class="primary button" />
<input type="submit" value="Excluir" id="excluir" name="excluir" class="primary button" />
</form>
</fieldset>
</fieldset>
{% endblock %}

6
templates/materia/materia_detail.html

@ -4,11 +4,11 @@
{% block sections_nav %}
<dl class="sub-nav left">
<dd><a href="" class="button secondary">{% trans 'Início' %}</a></dd>
<dd><a href="" class="button secondary">{% trans 'Anexada' %}</a></dd>
<dd><a href="{% url 'materia_anexada' materia.id %}" class="button secondary">{% trans 'Anexada' %}</a></dd>
<dd><a href="" class="button secondary">{% trans 'Autoria' %}</a></dd>
<dd><a href="" class="button secondary">{% trans 'Despacho Inicial' %}</a></dd>
<dd><a href="{% url 'materia_anexada' materia.id %}" class="button secondary">{% trans 'Despacho Inicial' %}</a></dd>
<dd><a href="" class="button secondary">{% trans 'Documento Acessório' %}</a></dd>
<dd><a href="" class="button secondary">{% trans 'Legislação Citada' %}</a></dd>
<dd><a href="{% url 'legislacao_citada' materia.id %}" class="button secondary">{% trans 'Legislação Citada' %}</a></dd>
<dd><a href="" class="button secondary">{% trans 'Numeração' %}</a></dd>
<dd><a href="" class="button secondary">{% trans 'Tramitação' %}</a></dd>
<dd><a href="" class="button secondary">{% trans 'Relatoria' %}</a></dd>

Loading…
Cancel
Save