diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index 5b8173178..b2bc489d0 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -1327,6 +1327,7 @@ def resumo_ata_pdf(request, pk): context.update(get_materias_ordem_do_dia(sessao_plenaria)) context.update(get_oradores_ordemdia(sessao_plenaria)) context.update(get_ocorrencias_da_sessao(sessao_plenaria)) + context.update(get_consideracoes_finais(sessao_plenaria)) context.update(get_oradores_explicacoes_pessoais(sessao_plenaria)) context.update(get_assinaturas(sessao_plenaria)) context.update({'object': sessao_plenaria}) diff --git a/sapl/sessao/urls.py b/sapl/sessao/urls.py index 2630e6515..af66c2d83 100644 --- a/sapl/sessao/urls.py +++ b/sapl/sessao/urls.py @@ -4,7 +4,7 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente, AdicionarVariasMateriasOrdemDia, BancadaCrud, CargoBancadaCrud, ExpedienteMateriaCrud, ExpedienteView, JustificativaAusenciaCrud, - OcorrenciaSessaoView, MateriaOrdemDiaCrud, OradorOrdemDiaCrud, + OcorrenciaSessaoView, ConsideracoesFinaisView, MateriaOrdemDiaCrud, OradorOrdemDiaCrud, MesaView, OradorCrud, OradorExpedienteCrud, PainelView, PautaSessaoDetailView, PautaSessaoView, @@ -128,6 +128,8 @@ urlpatterns = [ ExpedienteView.as_view(), name='expediente'), url(r'^sessao/(?P\d+)/ocorrencia_sessao$', OcorrenciaSessaoView.as_view(), name='ocorrencia_sessao'), + url(r'^sessao/(?P\d+)/consideracoes_finais$', + ConsideracoesFinaisView.as_view(), name='consideracoes_finais'), url(r'^sessao/(?P\d+)/presenca$', PresencaView.as_view(), name='presenca'), url(r'^sessao/(?P\d+)/painel$', diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 2a3e814d3..083e9076e 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -44,7 +44,7 @@ from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm, SessaoPlenariaForm, VotacaoEditForm, VotacaoForm, VotacaoNominalForm, RetiradaPautaForm, OradorOrdemDiaForm) from .models import (Bancada, CargoBancada, CargoMesa, - ExpedienteMateria, ExpedienteSessao, OcorrenciaSessao, IntegranteMesa, + ExpedienteMateria, ExpedienteSessao, OcorrenciaSessao, ConsideracoesFinais, IntegranteMesa, MateriaLegislativa, Orador, OradorExpediente, OrdemDia, PresencaOrdemDia, RegistroVotacao, ResumoOrdenacao, SessaoPlenaria, SessaoPlenariaPresenca, TipoExpediente, @@ -2186,6 +2186,12 @@ def get_ocorrencias_da_sessao(sessao_plenaria): context = {'ocorrencias_da_sessao': ocorrencias_sessao} return context +def get_consideracoes_finais(sessao_plenaria): + consideracoes_finais = ConsideracoesFinais.objects.filter( + sessao_plenaria_id=sessao_plenaria.id) + context = {'consideracoes_finais': consideracoes_finais} + return context + class ResumoView(DetailView): template_name = 'sessao/resumo.html' @@ -2271,6 +2277,9 @@ class ResumoView(DetailView): # Ocorrẽncias da Sessão context.update(get_ocorrencias_da_sessao(self.object)) # ===================================================================== + # Ocorrẽncias da Sessão + context.update(get_consideracoes_finais(self.object)) + # ===================================================================== # Indica a ordem com a qual o template será renderizado dict_ord_template = { 'cont_mult': 'conteudo_multimidia.html', @@ -2502,6 +2511,70 @@ class OcorrenciaSessaoView(FormMixin, DetailView): pk = self.kwargs['pk'] return reverse('sapl.sessao:ocorrencia_sessao', kwargs={'pk': pk}) +class ConsideracoesFinaisView(FormMixin, DetailView): + template_name = 'sessao/consideracoes_finais.html' + form_class = OcorrenciaSessaoForm + model = SessaoPlenaria + + logger = logging.getLogger(__name__) + + def get_context_data(self, **kwargs): + context = FormMixin.get_context_data(self, **kwargs) + context['title'] = 'Considerações Finais (%s)' % ( + self.object) + sessao = context['object'] + tipo_sessao = sessao.tipo + if tipo_sessao.nome == "Solene": + context.update( + {'subnav_template_name': 'sessao/subnav-solene.yaml'}) + return context + + def delete(self): + ConsideracoesFinais.objects.filter(sessao_plenaria=self.object).delete() + + username = self.request.user.username + self.logger.info('user=' + username + '. ConsideracoesFinais com SessaoPlenaria de id={} deletada.' + .format(self.object.id)) + + msg = _('Registro deletado com sucesso') + messages.add_message(self.request, messages.SUCCESS, msg) + + def save(self, form): + conteudo = form.cleaned_data['conteudo'] + + ConsideracoesFinais.objects.filter(sessao_plenaria=self.object).delete() + + consideracao = ConsideracoesFinais() + consideracao.sessao_plenaria_id = self.object.id + consideracao.conteudo = conteudo + consideracao.save() + + msg = _('Registro salvo com sucesso') + messages.add_message(self.request, messages.SUCCESS, msg) + + username = self.request.user.username + self.logger.info( + 'user=' + username + '. consideracoesFinais de sessao_plenaria_id={} atualizada com sucesso.'.format(self.object.id)) + + @method_decorator(permission_required('sessao.add_consideraoesfinais')) + def post(self, request, *args, **kwargs): + self.object = self.get_object() + form = OcorrenciaSessaoForm(request.POST) + + if not form.is_valid(): + return self.form_invalid(form) + + if request.POST.get('delete'): + self.delete() + + elif request.POST.get('save'): + self.save(form) + + return self.form_valid(form) + + def get_success_url(self): + pk = self.kwargs['pk'] + return reverse('sapl.sessao:consideracoes_finais', kwargs={'pk': pk}) class VotacaoEditView(SessaoPermissionMixin): diff --git a/sapl/templates/sessao/consideracoes_finais.html b/sapl/templates/sessao/consideracoes_finais.html new file mode 100644 index 000000000..6e19bcee0 --- /dev/null +++ b/sapl/templates/sessao/consideracoes_finais.html @@ -0,0 +1,29 @@ +{% extends "crud/detail.html" %} +{% load i18n %} +{% load crispy_forms_tags %} +{% load common_tags %} + +{% block actions %}{% endblock %} +{% block detail_content %} + {% if perms|get_add_perm:view %} +
+ {% csrf_token %} +
+ +
+ + +
+ {% else %} + {{object.consideracoesfinais.conteudo|safe}} + {% endif %} +{% endblock detail_content %} + + +{% block extra_js %} + {% if perms|get_add_perm:view %} + + {% endif %} +{% endblock %} \ No newline at end of file diff --git a/sapl/templates/sessao/subnav-solene.yaml b/sapl/templates/sessao/subnav-solene.yaml index 34f381005..deef59805 100644 --- a/sapl/templates/sessao/subnav-solene.yaml +++ b/sapl/templates/sessao/subnav-solene.yaml @@ -12,6 +12,8 @@ url: orador_list - title: {% trans 'Ocorrências da Sessão' %} url: ocorrencia_sessao + - title: {% trans 'Considerações Finais' %} + url: consideracoes_finais - title: {% trans 'Expedientes' %} children: diff --git a/sapl/templates/sessao/subnav.yaml b/sapl/templates/sessao/subnav.yaml index b36e6b9ef..b868e5a88 100644 --- a/sapl/templates/sessao/subnav.yaml +++ b/sapl/templates/sessao/subnav.yaml @@ -14,6 +14,8 @@ url: orador_list - title: {% trans 'Ocorrências da Sessão' %} url: ocorrencia_sessao + - title: {% trans 'Considerações Finais' %} + url: consideracoes_finais - title: {% trans 'Retirada de Pauta'%} url: retiradapauta_list