diff --git a/materia/migrations/0008_remove_despachoinicial_numero_ordem.py b/materia/migrations/0008_auto_20151029_1416.py similarity index 97% rename from materia/migrations/0008_remove_despachoinicial_numero_ordem.py rename to materia/migrations/0008_auto_20151029_1416.py index 30cd1e2a2..530e26990 100644 --- a/materia/migrations/0008_remove_despachoinicial_numero_ordem.py +++ b/materia/migrations/0008_auto_20151029_1416.py @@ -14,5 +14,5 @@ class Migration(migrations.Migration): migrations.RemoveField( model_name='despachoinicial', name='numero_ordem', - ), + ) ] diff --git a/materia/migrations/0009_auto_20151029_1420.py b/materia/migrations/0009_auto_20151029_1420.py new file mode 100644 index 000000000..771b76392 --- /dev/null +++ b/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', + ) + ] diff --git a/materia/models.py b/materia/models.py index 660edf628..aa46696fd 100644 --- a/materia/models.py +++ b/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')) diff --git a/materia/urls.py b/materia/urls.py index a5224c321..53f36a9d1 100644 --- a/materia/urls.py +++ b/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\d+)/legislacao-citada/(?P\d+)/edit', LegislacaoCitadaEditView.as_view(), name='legislacao_citada_edit'), + url(r'^materia/(?P\d+)/numeracao$', + NumeracaoView.as_view(), name='numeracao'), + url(r'^materia/(?P\d+)/numeracao/(?P\d+)/edit', + NumeracaoEditView.as_view(), name='numeracao_edit'), ] diff --git a/materia/views.py b/materia/views.py index 60009863c..521300054 100644 --- a/materia/views.py +++ b/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}) diff --git a/templates/materia/materia_detail.html b/templates/materia/materia_detail.html index 2f754dd02..c66551387 100644 --- a/templates/materia/materia_detail.html +++ b/templates/materia/materia_detail.html @@ -9,7 +9,7 @@
{% trans 'Despacho Inicial' %}
{% trans 'Documento Acessório' %}
{% trans 'Legislação Citada' %}
-
{% trans 'Numeração' %}
+
{% trans 'Numeração' %}
{% trans 'Tramitação' %}
{% trans 'Relatoria' %}
diff --git a/templates/materia/numeracao.html b/templates/materia/numeracao.html new file mode 100644 index 000000000..495219457 --- /dev/null +++ b/templates/materia/numeracao.html @@ -0,0 +1,52 @@ +{% extends "materia/materia_detail.html" %} +{% load i18n %} +{% load crispy_forms_tags %} + +{% block detail_content %} +
+ Matéria Legislativa +
    +
  • Tipo: {{materia.tipo.sigla}}
  • +
  • Número: {{materia.numero}}
  • +
  • Ano: {{materia.ano}}
  • +
+ Ementa: {{materia.ementa}} + +
+ Numeração + + + + + + + + + {% for n in numeracao %} + + + + + + + + {% endfor %} +
Tipo MatériaDescriçãoNúmeroAnoData
{{n.tipo_materia.sigla}}{{n.tipo_materia.descricao}}{{n.numero_materia}}{{n.ano_materia}}{{n.data_materia|date:'d/m/Y'}}
+
+ {% crispy form %} +
+{% endblock %} + +{% block foot_js %} + +{% endblock %} \ No newline at end of file diff --git a/templates/materia/numeracao_edit.html b/templates/materia/numeracao_edit.html new file mode 100644 index 000000000..49aa3bd25 --- /dev/null +++ b/templates/materia/numeracao_edit.html @@ -0,0 +1,57 @@ +{% extends "materia/materia_detail.html" %} +{% load i18n %} +{% load crispy_forms_tags %} + +{% block detail_content %} +
+ Matéria Legislativa +
    +
  • Tipo: {{materia.tipo.sigla}}
  • +
  • Número: {{materia.numero}}
  • +
  • Ano: {{materia.ano}}
  • +
+ Ementa: {{materia.ementa}} + +
+ Editar Numeração +
+ {% csrf_token %} + + Tipo Matéria* + + + Número* + + + Ano* + + + Data + + + + +
+
+
+{% endblock %} + +{% block foot_js %} + +{% endblock %} \ No newline at end of file