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. 1
      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( migrations.RemoveField(
model_name='despachoinicial', model_name='despachoinicial',
name='numero_ordem', 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',
)
]

1
materia/models.py

@ -297,7 +297,6 @@ class MateriaAssunto(models.Model):
class Numeracao(models.Model): class Numeracao(models.Model):
materia = models.ForeignKey(MateriaLegislativa) materia = models.ForeignKey(MateriaLegislativa)
numero_ordem = models.PositiveIntegerField()
tipo_materia = models.ForeignKey( tipo_materia = models.ForeignKey(
TipoMateriaLegislativa, verbose_name=_('Tipo de Matéria')) TipoMateriaLegislativa, verbose_name=_('Tipo de Matéria'))
numero_materia = models.CharField(max_length=5, verbose_name=_('Número')) 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 django.conf.urls import include, url
from materia.views import (DespachoInicialEditView, DespachoInicialView, from materia.views import (DespachoInicialEditView, DespachoInicialView,
FormularioCadastroView, FormularioSimplificadoView, FormularioCadastroView, FormularioSimplificadoView,
LegislacaoCitadaEditView, LegislacaoCitadaView, LegislacaoCitadaEditView, LegislacaoCitadaView,
MateriaAnexadaEditView, MateriaAnexadaView, MateriaAnexadaEditView, MateriaAnexadaView,
autor_crud, materia_legislativa_crud, orgao_crud, NumeracaoEditView, NumeracaoView, autor_crud,
origem_crud, regime_tramitacao_crud, materia_legislativa_crud, orgao_crud, origem_crud,
status_tramitacao_crud, tipo_autor_crud, regime_tramitacao_crud, status_tramitacao_crud,
tipo_documento_crud, tipo_fim_relatoria_crud, tipo_autor_crud, tipo_documento_crud,
tipo_materia_crud, tipo_proposicao_crud, tipo_fim_relatoria_crud, tipo_materia_crud,
unidade_tramitacao_crud) tipo_proposicao_crud, unidade_tramitacao_crud)
urlpatterns = [ urlpatterns = [
url(r'^sistema/proposicoes/tipo/', include(tipo_proposicao_crud.urls)), url(r'^sistema/proposicoes/tipo/', include(tipo_proposicao_crud.urls)),
@ -48,4 +47,8 @@ urlpatterns = [
LegislacaoCitadaView.as_view(), name='legislacao_citada'), LegislacaoCitadaView.as_view(), name='legislacao_citada'),
url(r'^materia/(?P<pk>\d+)/legislacao-citada/(?P<id>\d+)/edit', url(r'^materia/(?P<pk>\d+)/legislacao-citada/(?P<id>\d+)/edit',
LegislacaoCitadaEditView.as_view(), name='legislacao_citada_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 'materia': mat_principal
}) })
anexada = Anexada()
anexada.materia_principal = mat_principal anexada.materia_principal = mat_principal
anexada.materia_anexada = mat_anexada anexada.materia_anexada = mat_anexada
anexada.data_anexacao = data_anexacao anexada.data_anexacao = data_anexacao
@ -916,3 +915,133 @@ class LegislacaoCitadaEditView(FormMixin, GenericView):
return self.render_to_response( return self.render_to_response(
{'form': form, {'form': form,
'materia': materia}) '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="{% 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 '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="{% 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 'Tramitação' %}</a></dd>
<dd><a href="" class="button secondary">{% trans 'Relatoria' %}</a></dd> <dd><a href="" class="button secondary">{% trans 'Relatoria' %}</a></dd>
</dl> </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