diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index ad85c014a..89892ba18 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -31,6 +31,12 @@ def em_tramitacao(): (False, 'Não')] +class ConfirmarProposicaoForm(ModelForm): + class Meta: + model = Proposicao + exclude = ['texto_original', 'descricao', 'tipo'] + + class ReceberProposicaoForm(ModelForm): cod_hash = forms.CharField(label='Código do Documento', required=True) diff --git a/sapl/materia/urls.py b/sapl/materia/urls.py index 13d58575b..b831fbfae 100644 --- a/sapl/materia/urls.py +++ b/sapl/materia/urls.py @@ -3,9 +3,9 @@ from django.conf.urls import include, url from sapl.materia.views import (AcompanhamentoConfirmarView, AcompanhamentoExcluirView, AcompanhamentoMateriaView, AnexadaCrud, - AutorCrud, AutoriaCrud, DespachoInicialCrud, - DocumentoAcessorioCrud, LegislacaoCitadaCrud, - MateriaLegislativaCrud, + AutorCrud, AutoriaCrud, ConfirmarProposicao, + DespachoInicialCrud, DocumentoAcessorioCrud, + LegislacaoCitadaCrud, MateriaLegislativaCrud, MateriaLegislativaPesquisaView, MateriaTaView, NumeracaoCrud, OrgaoCrud, OrigemCrud, ProposicaoCrud, ProposicaoDevolvida, @@ -44,6 +44,8 @@ urlpatterns = [ name='proposicao-recebida'), url(r'^proposicao/devolvida/', ProposicaoDevolvida.as_view(), name='proposicao-devolvida'), + url(r'^proposicao/confirmar/(?P\d+)', ConfirmarProposicao.as_view(), + name='proposicao-confirmar'), # Integração com Compilação url(r'^materia/(?P[0-9]+)/ta$', diff --git a/sapl/materia/views.py b/sapl/materia/views.py index 76acd2f28..4d5fecb07 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -26,11 +26,11 @@ from sapl.utils import (autor_label, autor_modal, gerar_hash_arquivo, get_base_url) from .forms import (AcompanhamentoMateriaForm, AnexadaForm, AutoriaForm, - DespachoInicialForm, DocumentoAcessorioForm, - LegislacaoCitadaForm, MateriaLegislativaFilterSet, - NumeracaoForm, ProposicaoForm, ReceberProposicaoForm, - RelatoriaForm, TramitacaoForm, UnidadeTramitacaoForm, - filtra_tramitacao_destino, + ConfirmarProposicaoForm, DespachoInicialForm, + DocumentoAcessorioForm, LegislacaoCitadaForm, + MateriaLegislativaFilterSet, NumeracaoForm, ProposicaoForm, + ReceberProposicaoForm, RelatoriaForm, TramitacaoForm, + UnidadeTramitacaoForm, filtra_tramitacao_destino, filtra_tramitacao_destino_and_status, filtra_tramitacao_status) from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria, @@ -111,7 +111,7 @@ class ProposicaoDevolvida(ListView): def get_queryset(self): return Proposicao.objects.filter( data_envio__isnull=False, - data_recebimento__isnull=False, + data_recebimento__isnull=True, data_devolucao__isnull=False) def get_context_data(self, **kwargs): @@ -173,8 +173,7 @@ class ReceberProposicao(CreateView): form_class = ReceberProposicaoForm def get_context_data(self, **kwargs): - context = super(ReceberProposicao, self).get_context_data( - **kwargs) + context = super(ReceberProposicao, self).get_context_data(**kwargs) context.update({'form': self.get_form()}) return context @@ -188,21 +187,9 @@ class ReceberProposicao(CreateView): hasher = gerar_hash_arquivo(proposicao.texto_original.path, str(proposicao.pk)) if hasher == form.cleaned_data['cod_hash']: - proposicao.data_recebimento = datetime.now() - if proposicao.tipo.descricao == 'Parecer': - documento = criar_doc_proposicao(proposicao) - proposicao.documento_gerado = documento - proposicao.save() - return HttpResponseRedirect( - reverse('sapl.materia:documentoacessorio_update', - kwargs={'pk': documento.pk})) - else: - materia = criar_materia_proposicao(proposicao) - proposicao.materia_gerada = materia - proposicao.save() - return HttpResponseRedirect( - reverse('sapl.materia:materialegislativa_update', - kwargs={'pk': materia.pk})) + return HttpResponseRedirect( + reverse('sapl.materia:proposicao-confirmar', + kwargs={'pk': proposicao.pk})) msg = 'Proposição não encontrada!' return self.render_to_response({'form': form, 'msg': msg}) @@ -213,6 +200,44 @@ class ReceberProposicao(CreateView): return reverse('sapl.materia:receber-proposicao') +class ConfirmarProposicao(CreateView): + template_name = "materia/confirmar_proposicao.html" + form_class = ConfirmarProposicaoForm + + def get_context_data(self, **kwargs): + context = super(ConfirmarProposicao, self).get_context_data(**kwargs) + proposicao = Proposicao.objects.get(pk=self.kwargs['pk']) + context.update({'form': self.get_form(), 'proposicao': proposicao}) + return context + + def post(self, request, *args, **kwargs): + form = ConfirmarProposicaoForm(request.POST) + proposicao = Proposicao.objects.get(pk=self.kwargs['pk']) + + if form.is_valid(): + if 'incorporar' in request.POST: + proposicao.data_recebimento = datetime.now() + if proposicao.tipo.descricao == 'Parecer': + documento = criar_doc_proposicao(proposicao) + proposicao.documento_gerado = documento + proposicao.save() + return HttpResponseRedirect( + reverse('sapl.materia:documentoacessorio_update', + kwargs={'pk': documento.pk})) + else: + materia = criar_materia_proposicao(proposicao) + proposicao.materia_gerada = materia + proposicao.save() + return HttpResponseRedirect( + reverse('sapl.materia:materialegislativa_update', + kwargs={'pk': materia.pk})) + else: + proposicao.data_devolucao = datetime.now() + proposicao.save() + return HttpResponseRedirect( + reverse('sapl.materia:proposicao-devolvida')) + + class ProposicaoCrud(Crud): model = Proposicao help_path = '' diff --git a/sapl/templates/materia/confirmar_proposicao.html b/sapl/templates/materia/confirmar_proposicao.html new file mode 100644 index 000000000..f81ad26dc --- /dev/null +++ b/sapl/templates/materia/confirmar_proposicao.html @@ -0,0 +1,32 @@ +{% extends "base.html" %} +{% load i18n crispy_forms_tags %} + +{% block base_content %} + +
+ Confirmar recebimento de Proposição + + + + + +
Tipo: {{proposicao.tipo}}
Autor: {{proposicao.autor}}
Descrição: {{proposicao.descricao}}
Data de Envio: {{proposicao.data_envio|date:'d/m/Y H:i:s'}}
+ +
+ {% csrf_token %} +
+ +               + +
+
+
+{% endblock %} diff --git a/sapl/templates/materia/prop_devolvidas_list.html b/sapl/templates/materia/prop_devolvidas_list.html index 3e9219a85..fb4b5a5a0 100644 --- a/sapl/templates/materia/prop_devolvidas_list.html +++ b/sapl/templates/materia/prop_devolvidas_list.html @@ -7,7 +7,7 @@ - + @@ -17,7 +17,7 @@ {% for prop in object_list %} - +
Data do RecebimentoData do Devolução Tipo Descrição Autor
{{ prop.data_recebimento|date:"d/m/Y H:i:s" }}{{ prop.data_devolucao|date:"d/m/Y H:i:s" }} {{ prop.tipo.descricao }} {{ prop.descricao }} {{ prop.autor }}