Browse Source

Add Numeracao in Materia Legislativa

pull/11/merge
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
66cdc556d4
  1. 2
      materia/migrations/0008_auto_20151029_1416.py
  2. 18
      materia/migrations/0009_auto_20151029_1420.py
  3. 3
      materia/models.py
  4. 17
      materia/urls.py
  5. 131
      materia/views.py
  6. 2
      templates/materia/materia_detail.html
  7. 52
      templates/materia/numeracao.html
  8. 57
      templates/materia/numeracao_edit.html

2
materia/migrations/0008_remove_despachoinicial_numero_ordem.py → materia/migrations/0008_auto_20151029_1416.py

@ -14,5 +14,5 @@ class Migration(migrations.Migration):
migrations.RemoveField(
model_name='despachoinicial',
name='numero_ordem',
),
)
]

18
materia/migrations/0009_auto_20151029_1420.py

@ -0,0 +1,18 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('materia', '0008_auto_20151029_1416'),
]
operations = [
migrations.RemoveField(
model_name='numeracao',
name='numero_ordem',
)
]

3
materia/models.py

@ -236,7 +236,7 @@ class DespachoInicial(models.Model):
# TODO M2M?
materia = models.ForeignKey(MateriaLegislativa)
comissao = models.ForeignKey(Comissao)
class Meta:
verbose_name = _('Despacho Inicial')
verbose_name_plural = _('Despachos Iniciais')
@ -297,7 +297,6 @@ class MateriaAssunto(models.Model):
class Numeracao(models.Model):
materia = models.ForeignKey(MateriaLegislativa)
numero_ordem = models.PositiveIntegerField()
tipo_materia = models.ForeignKey(
TipoMateriaLegislativa, verbose_name=_('Tipo de Matéria'))
numero_materia = models.CharField(max_length=5, verbose_name=_('Número'))

17
materia/urls.py

@ -1,15 +1,14 @@
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,
status_tramitacao_crud, tipo_autor_crud,
tipo_documento_crud, tipo_fim_relatoria_crud,
tipo_materia_crud, tipo_proposicao_crud,
unidade_tramitacao_crud)
NumeracaoEditView, NumeracaoView, autor_crud,
materia_legislativa_crud, orgao_crud, origem_crud,
regime_tramitacao_crud, status_tramitacao_crud,
tipo_autor_crud, tipo_documento_crud,
tipo_fim_relatoria_crud, tipo_materia_crud,
tipo_proposicao_crud, unidade_tramitacao_crud)
urlpatterns = [
url(r'^sistema/proposicoes/tipo/', include(tipo_proposicao_crud.urls)),
@ -48,4 +47,8 @@ urlpatterns = [
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+)/numeracao$',
NumeracaoView.as_view(), name='numeracao'),
url(r'^materia/(?P<pk>\d+)/numeracao/(?P<id>\d+)/edit',
NumeracaoEditView.as_view(), name='numeracao_edit'),
]

131
materia/views.py

@ -597,7 +597,6 @@ class MateriaAnexadaEditView(FormMixin, GenericView):
'materia': mat_principal
})
anexada = Anexada()
anexada.materia_principal = mat_principal
anexada.materia_anexada = mat_anexada
anexada.data_anexacao = data_anexacao
@ -916,3 +915,133 @@ class LegislacaoCitadaEditView(FormMixin, GenericView):
return self.render_to_response(
{'form': form,
'materia': materia})
class NumeracaoForm(forms.Form):
tipo_materia = forms.ChoiceField(required=True,
label='Tipo Matéria',
choices=get_tipos_materia(),
widget=forms.Select(
attrs={'class': 'selector'}))
data_materia = forms.DateField(label='Data',
required=False,
input_formats=['%d/%m/%Y'],
widget=forms.TextInput(
attrs={'class': 'dateinput'}))
ano_materia = forms.ChoiceField(required=True,
label='Ano',
choices=get_range_anos(),
widget=forms.Select(
attrs={'class': 'selector'}))
numero_materia = forms.CharField(
label='Número', required=True)
class Meta:
model = Numeracao
def __init__(self, *args, **kwargs):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Incluir Numeração',
'tipo_materia',
'numero_materia',
'ano_materia',
'data_materia',
ButtonHolder(
Submit('submit', 'Salvar',
css_class='button primary')
)
)
)
super(NumeracaoForm, self).__init__(*args, **kwargs)
class NumeracaoView(FormMixin, GenericView):
template_name = "materia/numeracao.html"
def get(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
numeracao = Numeracao.objects.filter(materia_id=kwargs['pk'])
form = NumeracaoForm()
return self.render_to_response(
{'materia': materia,
'form': form,
'numeracao': numeracao})
def post(self, request, *args, **kwargs):
form = NumeracaoForm(request.POST)
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
numeracao_list = Numeracao.objects.filter(
materia_id=kwargs['pk'])
if form.is_valid():
numeracao = Numeracao()
tipo = TipoMateriaLegislativa.objects.get(
id=form.cleaned_data['tipo_materia'])
numeracao.materia = materia
numeracao.tipo_materia = tipo
numeracao.numero_materia = form.cleaned_data['numero_materia']
numeracao.ano_materia = form.cleaned_data['ano_materia']
numeracao.data_materia = form.cleaned_data['data_materia']
numeracao.save()
return self.form_valid(form)
else:
return self.render_to_response({'form': form,
'materia': materia,
'numeracao': numeracao_list})
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('numeracao', kwargs={'pk': pk})
class NumeracaoEditView(FormMixin, GenericView):
template_name = "materia/numeracao_edit.html"
def get(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
numeracao = Numeracao.objects.get(id=kwargs['id'])
form = NumeracaoForm()
return self.render_to_response(
{'materia': materia,
'form': form,
'numeracao': numeracao,
'tipos': TipoMateriaLegislativa.objects.all()})
def post(self, request, *args, **kwargs):
form = NumeracaoForm(request.POST)
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
numeracao = Numeracao.objects.get(id=kwargs['id'])
if form.is_valid():
if 'excluir' in request.POST:
numeracao.delete()
elif 'salvar' in request.POST:
tipo = TipoMateriaLegislativa.objects.get(
id=form.cleaned_data['tipo_materia'])
numeracao.materia = materia
numeracao.tipo_materia = tipo
numeracao.numero_materia = form.cleaned_data['numero_materia']
numeracao.ano_materia = form.cleaned_data['ano_materia']
numeracao.data_materia = form.cleaned_data['data_materia']
numeracao.save()
return self.form_valid(form)
else:
return self.render_to_response({'form': form,
'materia': materia,
'numeracao': numeracao})
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('numeracao', kwargs={'pk': pk})

2
templates/materia/materia_detail.html

@ -9,7 +9,7 @@
<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="{% 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="{% url 'numeracao' materia.id %}" 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>
</dl>

52
templates/materia/numeracao.html

@ -0,0 +1,52 @@
{% 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>Numeração</legend>
<table>
<tr>
<th>Tipo Matéria</th>
<th>Descrição</th>
<th>Número</th>
<th>Ano</th>
<th>Data</th>
</tr>
{% for n in numeracao %}
<tr>
<td><a href="{% url 'numeracao_edit' materia.id n.id %}">{{n.tipo_materia.sigla}}</a></td>
<td>{{n.tipo_materia.descricao}}</td>
<td>{{n.numero_materia}}</td>
<td>{{n.ano_materia}}</td>
<td>{{n.data_materia|date:'d/m/Y'}}</td>
</tr>
{% endfor %}
</table>
</fieldset>
{% crispy form %}
</fieldset>
{% endblock %}
{% block foot_js %}
<script type="text/javascript">
$(function () {
$('.dateinput').fdatepicker({
// TODO localize
format: 'dd/mm/yyyy',
language: 'pt',
endDate: '31/12/2100',
todayBtn: true
});
});
</script>
{% endblock %}

57
templates/materia/numeracao_edit.html

@ -0,0 +1,57 @@
{% 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 Numeração</legend>
<form method="POST">
{% csrf_token %}
Tipo Matéria*
<select name="tipo_materia">
{% for t in tipos %}
<option value="{{t.id}}" {% if t.id == numeracao.tipo_materia_id %} selected {% endif %}>
{{t.sigla}} - {{t.descricao}}
</option>
{% endfor %}
</select>
Número*
<input type="text" name="numero_materia" value="{{numeracao.numero_materia}}" />
Ano*
<input type="text" name="ano_materia" value="{{numeracao.ano_materia}}" />
Data
<input type="text" name="data_materia" class="dateinput" value="{{numeracao.data_materia|date:'d/m/Y'}}" />
<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 %}
{% block foot_js %}
<script type="text/javascript">
$(function () {
$('.dateinput').fdatepicker({
// TODO localize
format: 'dd/mm/yyyy',
language: 'pt',
endDate: '31/12/2100',
todayBtn: true
});
});
</script>
{% endblock %}
Loading…
Cancel
Save