From 8874ac2688ae89309c78f2cf28778331fa2dffdf Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Thu, 28 Apr 2016 12:14:36 -0300 Subject: [PATCH 01/14] =?UTF-8?q?Init=20crud=20legisla=C3=A7=C3=A3o=20cita?= =?UTF-8?q?da?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- materia/forms.py | 36 ---- materia/layouts.yaml | 7 + materia/urls.py | 10 +- materia/views.py | 158 ++++-------------- norma/layouts.yaml | 9 +- templates/materia/legislacao_citada.html | 33 ---- templates/materia/legislacao_citada_edit.html | 94 ----------- templates/materia/subnav.yaml | 2 +- 8 files changed, 49 insertions(+), 300 deletions(-) delete mode 100644 templates/materia/legislacao_citada.html delete mode 100644 templates/materia/legislacao_citada_edit.html diff --git a/materia/forms.py b/materia/forms.py index e6be32d9c..af3f6fa29 100644 --- a/materia/forms.py +++ b/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): diff --git a/materia/layouts.yaml b/materia/layouts.yaml index cafaeb94f..82c2303c7 100644 --- a/materia/layouts.yaml +++ b/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 diff --git a/materia/urls.py b/materia/urls.py index 26982c318..e6b0304d3 100644 --- a/materia/urls.py +++ b/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[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\d+)/legislacao-citada$', - 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+)/documento-acessorio$', DocumentoAcessorioView.as_view(), name='documento_acessorio'), url(r'^materia/(?P\d+)/documento-acessorio/(?P\d+)/edit', diff --git a/materia/views.py b/materia/views.py index 430946edc..b85be1373 100644 --- a/materia/views.py +++ b/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 diff --git a/norma/layouts.yaml b/norma/layouts.yaml index b0bce2d2a..2fb7735ab 100644 --- a/norma/layouts.yaml +++ b/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 diff --git a/templates/materia/legislacao_citada.html b/templates/materia/legislacao_citada.html deleted file mode 100644 index 37381e79e..000000000 --- a/templates/materia/legislacao_citada.html +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "crud/detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} -{% block actions %} {% endblock %} -{% block detail_content %} -
- Matéria Legislativa - {% include "materia/resumo_detail_materia.html" %} - -
- Legislação Citada - - - - - - - - - - {% for l in legislacao %} - - - - - - - {% endfor %} -
Tipo NormaNúmeroAnoDisposição
{{l.norma.tipo.descricao}}{{l.norma.numero}}{{l.norma.ano}}{{l.disposicoes}}
-
- {% crispy form %} -
-{% endblock %} diff --git a/templates/materia/legislacao_citada_edit.html b/templates/materia/legislacao_citada_edit.html deleted file mode 100644 index f819a0a63..000000000 --- a/templates/materia/legislacao_citada_edit.html +++ /dev/null @@ -1,94 +0,0 @@ -{% extends "crud/detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} -{% block actions %} {% endblock %} -{% block detail_content %} -
- Matéria Legislativa - {% include "materia/resumo_detail_materia.html" %} - -
- Editar Legislação Citada -
- {% csrf_token %} - -
-
- - -
-
- - -
-
- - -
-
- -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -
-
- - -
-
- - -
-
- - -
-
-
- - -
-
-
-{% endblock %} diff --git a/templates/materia/subnav.yaml b/templates/materia/subnav.yaml index 49d4d40e2..8dece889a 100644 --- a/templates/materia/subnav.yaml +++ b/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 From 94b6081212fcaed6a63e5d701da14772e9cca6a9 Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Fri, 29 Apr 2016 14:03:58 -0300 Subject: [PATCH 02/14] Tests --- materia/layouts.yaml | 12 ++++++------ materia/views.py | 10 +++++----- norma/layouts.yaml | 14 +++++++------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/materia/layouts.yaml b/materia/layouts.yaml index 82c2303c7..09499fb22 100644 --- a/materia/layouts.yaml +++ b/materia/layouts.yaml @@ -116,9 +116,9 @@ DespachoInicial: Despacho Inicial: - comissao -LegislacaoCitadaDetail: - Legislação Citada: - - 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 diff --git a/materia/views.py b/materia/views.py index b85be1373..dabcc1300 100644 --- a/materia/views.py +++ b/materia/views.py @@ -102,11 +102,11 @@ class LegislacaoCitadaCrud(MasterDetailCrud): return self.initial - class DetailView(MasterDetailCrud.DetailView): - - @property - def layout_key(self): - return 'LegislacaoCitadaDetail' + # class DetailView(MasterDetailCrud.DetailView): + # + # @property + # def layout_key(self): + # return 'LegislacaoCitadaDetail' class NumeracaoCrud(MasterDetailCrud): diff --git a/norma/layouts.yaml b/norma/layouts.yaml index 2fb7735ab..ffb888676 100644 --- a/norma/layouts.yaml +++ b/norma/layouts.yaml @@ -30,14 +30,14 @@ NormaJuridicaCreate: LegislacaoCitada: Legislação Citada: - - tipo_norma numero_norma ano_norma + - tipo numero ano - 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 +# LegislacaoCitadaDetail: +# Legislação Citada: +# - norma +# - disposicoes parte livro titulo +# - capitulo secao subsecao artigo +# - paragrafo inciso alinea item From 8cc803497067f8c2812e33c1f22f53dede6b3f5a Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Mon, 2 May 2016 10:53:50 -0300 Subject: [PATCH 03/14] Init crud legislacao --- materia/forms.py | 28 +++++++++++++++++++++++++++- materia/layouts.yaml | 7 ------- materia/views.py | 21 +++++++++++++-------- norma/layouts.yaml | 12 ++++++------ 4 files changed, 46 insertions(+), 22 deletions(-) diff --git a/materia/forms.py b/materia/forms.py index af3f6fa29..a67b0f5ce 100644 --- a/materia/forms.py +++ b/materia/forms.py @@ -11,7 +11,7 @@ from django.utils.translation import ugettext_lazy as _ import crispy_layout_mixin import sapl from crispy_layout_mixin import form_actions -from norma.models import LegislacaoCitada, TipoNormaJuridica +from norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica from sapl.settings import MAX_DOC_UPLOAD_SIZE from sapl.utils import RANGE_ANOS @@ -270,6 +270,32 @@ class LegislacaoCitadaForm(ModelForm): 'alinea', 'item'] + def clean(self): + if self.errors: + return self.errors + + cleaned_data = self.cleaned_data + + try: + norma = NormaJuridica.objects.get( + numero=cleaned_data['numero'], + ano=cleaned_data['ano'], + tipo=cleaned_data['tipo']) + except ObjectDoesNotExist: + msg = _('A norma a ser inclusa não existe no cadastro' + ' de normas.') + raise ValidationError(msg) + else: + cleaned_data['norma'] = norma + + return cleaned_data + + def save(self, commit=False): + legislacao = super(LegislacaoCitadaForm, self).save(commit) + legislacao.norma = self.cleaned_data['norma'] + legislacao.save() + return legislacao + class NumeracaoForm(ModelForm): diff --git a/materia/layouts.yaml b/materia/layouts.yaml index 09499fb22..cafaeb94f 100644 --- a/materia/layouts.yaml +++ b/materia/layouts.yaml @@ -115,10 +115,3 @@ Tramitacao: DespachoInicial: Despacho Inicial: - comissao - -# LegislacaoCitadaDetail: -# Legislação Citada: -# - norma -# - disposicoes parte livro titulo -# - capitulo secao subsecao artigo -# - paragrafo inciso alinea item diff --git a/materia/views.py b/materia/views.py index dabcc1300..4a423ea2c 100644 --- a/materia/views.py +++ b/materia/views.py @@ -89,6 +89,11 @@ class LegislacaoCitadaCrud(MasterDetailCrud): class BaseMixin(MasterDetailCrud.BaseMixin): list_field_names = ['norma', 'disposicoes'] + def resolve_url(self, suffix, args=None): + namespace = 'materia' + return reverse('%s:%s' % (namespace, self.url_name(suffix)), + args=args) + class CreateView(MasterDetailCrud.CreateView): form_class = LegislacaoCitadaForm @@ -96,17 +101,17 @@ class LegislacaoCitadaCrud(MasterDetailCrud): 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 + self.initial['tipo'] = self.object.norma.tipo.id + self.initial['numero'] = self.object.norma.numero + self.initial['ano'] = self.object.norma.ano return self.initial - # class DetailView(MasterDetailCrud.DetailView): - # - # @property - # def layout_key(self): - # return 'LegislacaoCitadaDetail' + class DetailView(MasterDetailCrud.DetailView): + + @property + def layout_key(self): + return 'LegislacaoCitadaDetail' class NumeracaoCrud(MasterDetailCrud): diff --git a/norma/layouts.yaml b/norma/layouts.yaml index ffb888676..63fafc5ea 100644 --- a/norma/layouts.yaml +++ b/norma/layouts.yaml @@ -35,9 +35,9 @@ LegislacaoCitada: - 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 +LegislacaoCitadaDetail: + Legislação Citada: + - norma + - disposicoes parte livro titulo + - capitulo secao subsecao artigo + - paragrafo inciso alinea item From 9dca69dedcf1b1fcdc901e369e3b1bb8085a8b91 Mon Sep 17 00:00:00 2001 From: Edward Ribeiro Date: Wed, 27 Apr 2016 12:12:40 -0300 Subject: [PATCH 04/14] FIX: substitui null por '' ao limpar autor --- static/js/app.js | 1 - 1 file changed, 1 deletion(-) diff --git a/static/js/app.js b/static/js/app.js index b6494b433..0cd84b917 100644 --- a/static/js/app.js +++ b/static/js/app.js @@ -70,7 +70,6 @@ function autorModal() { clean_if_exists("#id_autor"); clean_if_exists("#id_autoria__autor"); - }); $("#button-id-pesquisar").click(function() { From 6a4032849fd94a071270c45433a56d0f52a5f929 Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Thu, 28 Apr 2016 12:14:36 -0300 Subject: [PATCH 05/14] =?UTF-8?q?Init=20crud=20legisla=C3=A7=C3=A3o=20cita?= =?UTF-8?q?da?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- materia/layouts.yaml | 7 +++++++ materia/views.py | 1 - 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/materia/layouts.yaml b/materia/layouts.yaml index cafaeb94f..82c2303c7 100644 --- a/materia/layouts.yaml +++ b/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 diff --git a/materia/views.py b/materia/views.py index 4a423ea2c..68f4566a6 100644 --- a/materia/views.py +++ b/materia/views.py @@ -104,7 +104,6 @@ class LegislacaoCitadaCrud(MasterDetailCrud): self.initial['tipo'] = self.object.norma.tipo.id self.initial['numero'] = self.object.norma.numero self.initial['ano'] = self.object.norma.ano - return self.initial class DetailView(MasterDetailCrud.DetailView): From fa12ead64c09f56f906c0e64a572eb6de85fe780 Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Mon, 2 May 2016 10:56:35 -0300 Subject: [PATCH 06/14] =?UTF-8?q?Valida=20legisla=C3=A7=C3=A3o=20repetida?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- materia/forms.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/materia/forms.py b/materia/forms.py index a67b0f5ce..7da673da1 100644 --- a/materia/forms.py +++ b/materia/forms.py @@ -288,6 +288,13 @@ class LegislacaoCitadaForm(ModelForm): else: cleaned_data['norma'] = norma + if LegislacaoCitada.objects.filter( + materia=self.instance.materia, + norma=cleaned_data['norma'] + ).exists(): + msg = _('Essa legislação já foi cadastrada.') + raise ValidationError(msg) + return cleaned_data def save(self, commit=False): From b28cede2584ee6771e8467f43ca668fc7b45de87 Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Mon, 2 May 2016 11:06:21 -0300 Subject: [PATCH 07/14] =?UTF-8?q?Valida=20legisla=C3=A7=C3=A3o=20igual?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- materia/forms.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/materia/forms.py b/materia/forms.py index 7da673da1..0811950d0 100644 --- a/materia/forms.py +++ b/materia/forms.py @@ -283,7 +283,7 @@ class LegislacaoCitadaForm(ModelForm): tipo=cleaned_data['tipo']) except ObjectDoesNotExist: msg = _('A norma a ser inclusa não existe no cadastro' - ' de normas.') + ' de Normas.') raise ValidationError(msg) else: cleaned_data['norma'] = norma @@ -292,7 +292,7 @@ class LegislacaoCitadaForm(ModelForm): materia=self.instance.materia, norma=cleaned_data['norma'] ).exists(): - msg = _('Essa legislação já foi cadastrada.') + msg = _('Essa Legislação já foi cadastrada.') raise ValidationError(msg) return cleaned_data From 0f52f53ace6371452081ac42b9d47c04b153c355 Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Mon, 2 May 2016 11:09:00 -0300 Subject: [PATCH 08/14] Ajeita testes --- materia/tests/test_materia.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/materia/tests/test_materia.py b/materia/tests/test_materia.py index a72d8a497..31846e681 100644 --- a/materia/tests/test_materia.py +++ b/materia/tests/test_materia.py @@ -230,7 +230,7 @@ def test_legislacao_citada_submit(client): norma = make_norma() # Testa POST - response = client.post(reverse('materia:legislacao_citada', + response = client.post(reverse('materia:legislacaocitada_create', kwargs={'pk': materia_principal.pk}), {'tipo': norma.tipo.pk, 'numero': norma.numero, @@ -346,7 +346,7 @@ def test_form_errors_documento_acessorio(client): def test_form_errors_legislacao_citada(client): materia_principal = make_materia_principal() - response = client.post(reverse('materia:legislacao_citada', + response = client.post(reverse('materia:legislacaocitada_create', kwargs={'pk': materia_principal.pk}), {'salvar': 'salvar'}, follow=True) From 6cb49ada4eb4272f87c860fea00efccbb0e21d0a Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Mon, 2 May 2016 11:22:56 -0300 Subject: [PATCH 09/14] =?UTF-8?q?Init=20Crud=20Tramita=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- materia/forms.py | 29 ------- materia/layouts.yaml | 4 +- materia/urls.py | 10 +-- materia/views.py | 114 +------------------------ templates/materia/subnav.yaml | 2 +- templates/materia/tramitacao.html | 33 ------- templates/materia/tramitacao_edit.html | 7 -- 7 files changed, 8 insertions(+), 191 deletions(-) delete mode 100644 templates/materia/tramitacao.html delete mode 100644 templates/materia/tramitacao_edit.html diff --git a/materia/forms.py b/materia/forms.py index 0811950d0..5918bcf31 100644 --- a/materia/forms.py +++ b/materia/forms.py @@ -209,35 +209,6 @@ class TramitacaoForm(ModelForm): 'data_fim_prazo', 'texto'] - def __init__(self, excluir=False, *args, **kwargs): - row1 = crispy_layout_mixin.to_row( - [('data_tramitacao', 6), ('unidade_tramitacao_local', 6)]) - - row2 = crispy_layout_mixin.to_row( - [('status', 5), ('turno', 5), ('urgente', 2)]) - - row3 = crispy_layout_mixin.to_row( - [('unidade_tramitacao_destino', 12)]) - - row4 = crispy_layout_mixin.to_row( - [('data_encaminhamento', 6), ('data_fim_prazo', 6)]) - - row5 = crispy_layout_mixin.to_row( - [('texto', 12)]) - - more = [] - if excluir: - more = [Submit('Excluir', 'Excluir')] - self.helper = FormHelper() - self.helper.layout = Layout( - Fieldset(_('Incluir Tramitação'), - row1, row2, row3, row4, row5, - ), - form_actions(more=more) - ) - super(TramitacaoForm, self).__init__( - *args, **kwargs) - class LegislacaoCitadaForm(ModelForm): diff --git a/materia/layouts.yaml b/materia/layouts.yaml index 82c2303c7..271635ba3 100644 --- a/materia/layouts.yaml +++ b/materia/layouts.yaml @@ -107,9 +107,9 @@ UnidadeTramitacao: Tramitacao: Tramitação: - - cod_ult_tram_dest_FIXME unidade_tramitacao_local + - unidade_tramitacao_local unidade_tramitacao_destino + - data_tramitacao data_encaminhamento data_fim_prazo - status turno urgente - - unidade_tramitacao_destino data_encaminhamento data_fim_prazo - texto DespachoInicial: diff --git a/materia/urls.py b/materia/urls.py index e6b0304d3..84b50f0ff 100644 --- a/materia/urls.py +++ b/materia/urls.py @@ -13,8 +13,7 @@ from materia.views import (AcompanhamentoConfirmarView, RegimeTramitacaoCrud, RelatoriaEditView, RelatoriaView, StatusTramitacaoCrud, TipoAutorCrud, TipoDocumentoCrud, TipoFimRelatoriaCrud, - TipoMateriaCrud, TipoProposicaoCrud, - TramitacaoEditView, TramitacaoView, + TipoMateriaCrud, TipoProposicaoCrud, TramitacaoCrud, UnidadeTramitacaoCrud) from .apps import AppConfig @@ -27,7 +26,8 @@ urlpatterns = [ AutoriaCrud.get_urls() + DespachoInicialCrud.get_urls() + NumeracaoCrud.get_urls() + - LegislacaoCitadaCrud.get_urls())), + LegislacaoCitadaCrud.get_urls() + + TramitacaoCrud.get_urls())), url(r'^materia/(?P[0-9]+)/ta$', @@ -60,10 +60,6 @@ urlpatterns = [ DocumentoAcessorioEditView.as_view(), name='documento_acessorio_edit'), url(r'^materia/(?P\d+)/relatoria$', RelatoriaView.as_view(), name='relatoria'), - url(r'^materia/(?P\d+)/tramitacao$', - TramitacaoView.as_view(), name='tramitacao_materia'), - url(r'^materia/(?P\d+)/tramitacao/(?P\d+)/edit$', - TramitacaoEditView.as_view(), name='tramitacao_edit'), url(r'^materia/(?P\d+)/relatoria/(?P\d+)/edit$', RelatoriaEditView.as_view(), name='relatoria_edit'), url(r'^materia/proposicao$', diff --git a/materia/views.py b/materia/views.py index 68f4566a6..4b05609a9 100644 --- a/materia/views.py +++ b/materia/views.py @@ -54,7 +54,8 @@ TipoProposicaoCrud = Crud.build(TipoProposicao, 'tipo_proposicao') ProposicaoCrud = Crud.build(Proposicao, '') StatusTramitacaoCrud = Crud.build(StatusTramitacao, 'status_tramitacao') UnidadeTramitacaoCrud = Crud.build(UnidadeTramitacao, 'unidade_tramitacao') -TramitacaoCrud = Crud.build(Tramitacao, '') + +TramitacaoCrud = MasterDetailCrud.build(Tramitacao, 'materia', '') class AutoriaCrud(MasterDetailCrud): @@ -641,117 +642,6 @@ def do_envia_email_tramitacao(request, materia): return None -class TramitacaoView(CreateView): - template_name = "materia/tramitacao.html" - form_class = TramitacaoForm - - def get(self, request, *args, **kwargs): - materia = MateriaLegislativa.objects.get(id=kwargs['pk']) - tramitacoes = Tramitacao.objects.filter( - materia_id=kwargs['pk']).order_by('-data_tramitacao') - form = self.get_form() - - return self.render_to_response( - {'object': materia, - 'form': form, - 'tramitacoes': tramitacoes}) - - def post(self, request, *args, **kwargs): - form = self.get_form() - materia = MateriaLegislativa.objects.get(id=kwargs['pk']) - tramitacoes_list = Tramitacao.objects.filter( - materia_id=kwargs['pk']).order_by('-data_tramitacao') - - if form.is_valid(): - ultima_tramitacao = Tramitacao.objects.filter( - materia_id=kwargs['pk']).last() - if ultima_tramitacao: - destino = ultima_tramitacao.unidade_tramitacao_destino - cleaned_data = form.cleaned_data['unidade_tramitacao_local'] - if (destino == cleaned_data): - tramitacao = form.save(commit=False) - tramitacao.materia = materia - tramitacao.save() - else: - msg = _('A origem da nova tramitação \ - deve ser igual ao destino da última adicionada!') - messages.add_message(request, messages.INFO, msg) - return self.render_to_response( - {'form': form, - 'object': materia, - 'tramitacoes': tramitacoes_list}) - - do_envia_email_tramitacao(request, materia) - else: - tramitacao = form.save(commit=False) - tramitacao.materia = materia - tramitacao.save() - return self.form_valid(form) - else: - return self.render_to_response({'form': form, - 'object': materia, - 'tramitacoes': tramitacoes_list}) - - def get_success_url(self): - pk = self.kwargs['pk'] - return reverse('materia:tramitacao_materia', kwargs={'pk': pk}) - - -class TramitacaoEditView(CreateView): - template_name = "materia/tramitacao_edit.html" - form_class = TramitacaoForm - - def get(self, request, *args, **kwargs): - materia = MateriaLegislativa.objects.get(id=kwargs['pk']) - tramitacao = Tramitacao.objects.get(id=kwargs['id']) - form = TramitacaoForm(excluir=True, instance=tramitacao) - - return self.render_to_response( - {'object': materia, - 'form': form, - 'tramitacao': tramitacao}) - - def post(self, request, *args, **kwargs): - materia = MateriaLegislativa.objects.get(id=kwargs['pk']) - tramitacao = Tramitacao.objects.get(id=kwargs['id']) - form = self.get_form() - - if form.is_valid(): - if 'excluir' in request.POST: - if tramitacao == Tramitacao.objects.filter( - materia=materia).last(): - tramitacao.delete() - else: - msg = _('Somente a útlima tramitação pode ser deletada!') - messages.add_message(request, messages.INFO, msg) - return self.render_to_response( - {'object': materia, - 'form': form, - 'tramitacao': tramitacao}) - elif 'salvar' in request.POST: - tramitacao.status = form.cleaned_data['status'] - tramitacao.turno = form.cleaned_data['turno'] - tramitacao.urgente = form.cleaned_data['urgente'] - tramitacao.unidade_tramitacao_destino = form.cleaned_data[ - 'unidade_tramitacao_destino'] - tramitacao.data_encaminhamento = form.cleaned_data[ - 'data_encaminhamento'] - tramitacao.data_fim_prazo = form.cleaned_data['data_fim_prazo'] - tramitacao.texto = form.cleaned_data['texto'] - - tramitacao.save() - return redirect(self.get_success_url()) - else: - return self.render_to_response( - {'object': materia, - 'form': form, - 'tramitacao': tramitacao}) - - def get_success_url(self): - pk = self.kwargs['pk'] - return reverse('materia:tramitacao_materia', kwargs={'pk': pk}) - - class ProposicaoListView(ListView): template_name = "materia/proposicao/proposicao_list.html" paginate_by = 10 diff --git a/templates/materia/subnav.yaml b/templates/materia/subnav.yaml index 8dece889a..901757993 100644 --- a/templates/materia/subnav.yaml +++ b/templates/materia/subnav.yaml @@ -13,7 +13,7 @@ - title: Numeração url: numeracao_list - title: Tramitação - url: tramitacao_materia + url: tramitacao_list - title: Relatoria url: relatoria diff --git a/templates/materia/tramitacao.html b/templates/materia/tramitacao.html deleted file mode 100644 index 33ed398bd..000000000 --- a/templates/materia/tramitacao.html +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "crud/detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} -{% block actions %} {% endblock %} -{% block detail_content %} -
- Matéria Legislativa - {% include "materia/resumo_detail_materia.html" %} - -
- Tramitações - - - - - - - - - - {% for t in tramitacoes %} - - - - - - - {% endfor %} -
Data AçãoOrigemDestinoStatus
{{t.data_tramitacao|date:'d/m/Y'}}{{t.unidade_tramitacao_local}}{{t.unidade_tramitacao_destino}}{{t.status.descricao}}
-
- {% crispy form %} -
-{% endblock %} diff --git a/templates/materia/tramitacao_edit.html b/templates/materia/tramitacao_edit.html deleted file mode 100644 index 05ddec8c2..000000000 --- a/templates/materia/tramitacao_edit.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends "crud/detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} -{% block actions %} {% endblock %} -{% block detail_content %} - {% crispy form %} -{% endblock %} From df31e1d6d8751b9845b5d5a68d7b39ec96833752 Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Mon, 2 May 2016 11:38:17 -0300 Subject: [PATCH 10/14] =?UTF-8?q?Valida=20ultima=20tramita=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- materia/forms.py | 21 ++++++++++++++----- materia/migrations/0031_auto_20160502_1131.py | 20 ++++++++++++++++++ materia/models.py | 3 ++- materia/views.py | 16 +++++++++++++- 4 files changed, 53 insertions(+), 7 deletions(-) create mode 100644 materia/migrations/0031_auto_20160502_1131.py diff --git a/materia/forms.py b/materia/forms.py index 5918bcf31..3793d0d5b 100644 --- a/materia/forms.py +++ b/materia/forms.py @@ -191,11 +191,6 @@ class RelatoriaForm(ModelForm): class TramitacaoForm(ModelForm): - urgente = forms.ChoiceField(required=False, - label='Tramitando', - choices=[(True, 'Sim'), (False, 'Não')], - widget=forms.Select( - attrs={'class': 'selector'})) class Meta: model = Tramitacao @@ -209,6 +204,22 @@ class TramitacaoForm(ModelForm): 'data_fim_prazo', 'texto'] + def clean(self): + if self.errors: + return self.errors + + ultima_tramitacao = Tramitacao.objects.filter( + materia_id=self.instance.materia.id).last() + + if ultima_tramitacao: + destino = ultima_tramitacao.unidade_tramitacao_destino + if (destino != self.cleaned_data['unidade_tramitacao_local']): + msg = _('A origem da nova tramitação deve ser igual ao ' + 'destino da última adicionada!') + raise ValidationError(msg) + + return self.cleaned_data + class LegislacaoCitadaForm(ModelForm): diff --git a/materia/migrations/0031_auto_20160502_1131.py b/materia/migrations/0031_auto_20160502_1131.py new file mode 100644 index 000000000..a51221080 --- /dev/null +++ b/materia/migrations/0031_auto_20160502_1131.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-02 14:31 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('materia', '0030_auto_20160429_1349'), + ] + + operations = [ + migrations.AlterField( + model_name='tramitacao', + name='urgente', + field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], verbose_name='Urgente ?'), + ), + ] diff --git a/materia/models.py b/materia/models.py index 0eb2037c8..b50c48afd 100644 --- a/materia/models.py +++ b/materia/models.py @@ -546,7 +546,8 @@ class Tramitacao(models.Model): UnidadeTramitacao, related_name='tramitacoes_destino', verbose_name=_('Unidade Destino')) - urgente = models.BooleanField(verbose_name=_('Urgente ?')) + urgente = models.BooleanField(verbose_name=_('Urgente ?'), + choices=YES_NO_CHOICES) turno = models.CharField( max_length=1, blank=True, verbose_name=_('Turno'), choices=TURNO_CHOICES) diff --git a/materia/views.py b/materia/views.py index 4b05609a9..d93d8d4ff 100644 --- a/materia/views.py +++ b/materia/views.py @@ -55,7 +55,21 @@ ProposicaoCrud = Crud.build(Proposicao, '') StatusTramitacaoCrud = Crud.build(StatusTramitacao, 'status_tramitacao') UnidadeTramitacaoCrud = Crud.build(UnidadeTramitacao, 'unidade_tramitacao') -TramitacaoCrud = MasterDetailCrud.build(Tramitacao, 'materia', '') + +class TramitacaoCrud(MasterDetailCrud): + model = Tramitacao + parent_field = 'materia' + help_path = '' + + class BaseMixin(MasterDetailCrud.BaseMixin): + list_field_names = ['data_tramitacao', 'unidade_tramitacao_local', + 'unidade_tramitacao_destino', 'status'] + + class CreateView(MasterDetailCrud.CreateView): + form_class = TramitacaoForm + + class UpdateView(MasterDetailCrud.UpdateView): + form_class = TramitacaoForm class AutoriaCrud(MasterDetailCrud): From 92964db767dbc67e16b9a566b12cfd3495b5022b Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Mon, 2 May 2016 11:46:21 -0300 Subject: [PATCH 11/14] =?UTF-8?q?Ordena=20tramita=C3=A7=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- materia/views.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/materia/views.py b/materia/views.py index d93d8d4ff..d4cbe2042 100644 --- a/materia/views.py +++ b/materia/views.py @@ -71,6 +71,13 @@ class TramitacaoCrud(MasterDetailCrud): class UpdateView(MasterDetailCrud.UpdateView): form_class = TramitacaoForm + class ListView(MasterDetailCrud.ListView): + + def get_queryset(self): + qs = super(MasterDetailCrud.ListView, self).get_queryset() + kwargs = {self.crud.parent_field: self.kwargs['pk']} + return qs.filter(**kwargs).order_by('-data_tramitacao') + class AutoriaCrud(MasterDetailCrud): model = Autoria From c146a931a9818ffbecaf5efe0d4b3ae0c278e350 Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Tue, 3 May 2016 08:44:47 -0300 Subject: [PATCH 12/14] Teste delete --- materia/views.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/materia/views.py b/materia/views.py index d4cbe2042..7e373774e 100644 --- a/materia/views.py +++ b/materia/views.py @@ -4,7 +4,7 @@ from random import choice from string import ascii_letters, digits from django.contrib import messages -from django.core.exceptions import ObjectDoesNotExist +from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.core.mail import send_mail from django.core.urlresolvers import reverse from django.http.response import HttpResponseRedirect @@ -78,6 +78,19 @@ class TramitacaoCrud(MasterDetailCrud): kwargs = {self.crud.parent_field: self.kwargs['pk']} return qs.filter(**kwargs).order_by('-data_tramitacao') + class DeleteView(MasterDetailCrud.DeleteView): + + def delete(self, request, *args, **kwargs): + tramitacao = Tramitacao.objects.get( + id=self.kwargs['pk']) + materia = MateriaLegislativa.objects.get(id=tramitacao.materia.id) + if tramitacao.pk != materia.tramitacao_set.last().pk: + msg = _('Somente a útlima tramitação pode ser deletada!') + raise ValidationError(msg) + else: + self.get_object().delete() + return HttpResponseRedirect(self.cancel_url()) + class AutoriaCrud(MasterDetailCrud): model = Autoria From c416825f1bb19906cb0d9082e8422561f0baf208 Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Tue, 3 May 2016 10:58:11 -0300 Subject: [PATCH 13/14] =?UTF-8?q?Termina=20valida=C3=A7=C3=B5es=20para=20d?= =?UTF-8?q?eletar=20uma=20tramita=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- materia/views.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/materia/views.py b/materia/views.py index 7e373774e..d199850a5 100644 --- a/materia/views.py +++ b/materia/views.py @@ -81,15 +81,19 @@ class TramitacaoCrud(MasterDetailCrud): class DeleteView(MasterDetailCrud.DeleteView): def delete(self, request, *args, **kwargs): - tramitacao = Tramitacao.objects.get( - id=self.kwargs['pk']) + tramitacao = Tramitacao.objects.get(id=self.kwargs['pk']) materia = MateriaLegislativa.objects.get(id=tramitacao.materia.id) + url = reverse('materia:tramitacao_list', + kwargs={'pk': tramitacao.materia.id}) + if tramitacao.pk != materia.tramitacao_set.last().pk: - msg = _('Somente a útlima tramitação pode ser deletada!') - raise ValidationError(msg) + msg = _('Somente a útlima tramitação pode ser deletada!') + # raise ValidationError(msg) + messages.add_message(request, messages.ERROR, msg) + return HttpResponseRedirect(url) else: - self.get_object().delete() - return HttpResponseRedirect(self.cancel_url()) + tramitacao.delete() + return HttpResponseRedirect(url) class AutoriaCrud(MasterDetailCrud): From c96464f48087cfa8d13d2c79b57ab80538ed8e8e Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Tue, 3 May 2016 11:18:21 -0300 Subject: [PATCH 14/14] Fix testes --- materia/tests/test_materia.py | 4 ++-- materia/tests/test_materia_urls.py | 6 +++--- materia/views.py | 3 +-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/materia/tests/test_materia.py b/materia/tests/test_materia.py index 31846e681..72be09f6e 100644 --- a/materia/tests/test_materia.py +++ b/materia/tests/test_materia.py @@ -256,7 +256,7 @@ def test_tramitacao_submit(client): descricao='Status_Teste') # Testa POST response = client.post( - reverse('materia:tramitacao_materia', + reverse('materia:tramitacao_create', kwargs={'pk': materia_principal.pk}), {'unidade_tramitacao_local': make_unidade_tramitacao( 'Unidade Local').pk, @@ -382,7 +382,7 @@ def test_form_errors_numeracao(client): def test_form_errors_tramitacao(client): materia_principal = make_materia_principal() - response = client.post(reverse('materia:tramitacao_materia', + response = client.post(reverse('materia:tramitacao_create', kwargs={'pk': materia_principal.pk}), {'salvar': 'salvar'}, follow=True) diff --git a/materia/tests/test_materia_urls.py b/materia/tests/test_materia_urls.py index 492adde94..dd8b51871 100644 --- a/materia/tests/test_materia_urls.py +++ b/materia/tests/test_materia_urls.py @@ -6,9 +6,9 @@ from django.core.urlresolvers import reverse ('materia:relatoria_edit', {'pk': '11', 'id': '99'}, '/materia/11/relatoria/99/edit'), - ('materia:tramitacao_edit', - {'pk': '3', 'id': '8'}, - '/materia/3/tramitacao/8/edit'), + ('materia:tramitacao_update', + {'pk': '8'}, + '/materia/tramitacao/8/edit'), ('materia:adicionar_proposicao', {}, '/materia/proposicao'), ('materia:editar_proposicao', {'pk': '3'}, diff --git a/materia/views.py b/materia/views.py index d199850a5..1bec66767 100644 --- a/materia/views.py +++ b/materia/views.py @@ -4,7 +4,7 @@ from random import choice from string import ascii_letters, digits from django.contrib import messages -from django.core.exceptions import ObjectDoesNotExist, ValidationError +from django.core.exceptions import ObjectDoesNotExist from django.core.mail import send_mail from django.core.urlresolvers import reverse from django.http.response import HttpResponseRedirect @@ -88,7 +88,6 @@ class TramitacaoCrud(MasterDetailCrud): if tramitacao.pk != materia.tramitacao_set.last().pk: msg = _('Somente a útlima tramitação pode ser deletada!') - # raise ValidationError(msg) messages.add_message(request, messages.ERROR, msg) return HttpResponseRedirect(url) else: