Browse Source

Modal para verificar se a materia selecionada ja foi adicionada em outra sessao

pull/3480/head
Gustavo Santos 4 years ago
parent
commit
d4330c3517
  1. 42
      sapl/sessao/views.py
  2. 16
      sapl/templates/sessao/expedientemateria_form.html

42
sapl/sessao/views.py

@ -3,13 +3,12 @@ from collections import OrderedDict
from re import sub from re import sub
import logging import logging
from django.conf import settings
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.decorators import permission_required from django.contrib.auth.decorators import permission_required
from django.contrib.auth.mixins import PermissionRequiredMixin from django.contrib.auth.mixins import PermissionRequiredMixin
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.db.models import Max, Q from django.db.models import Max, Q
from django.http import JsonResponse from django.http import JsonResponse, request
from django.http.response import Http404, HttpResponseRedirect from django.http.response import Http404, HttpResponseRedirect
from django.urls import reverse from django.urls import reverse
from django.utils import timezone from django.utils import timezone
@ -53,7 +52,6 @@ from .models import (Bancada, CargoBancada, CargoMesa,
RetiradaPauta, TipoJustificativa, JustificativaAusencia, OradorOrdemDia, RetiradaPauta, TipoJustificativa, JustificativaAusencia, OradorOrdemDia,
ORDENACAO_RESUMO, RegistroLeitura) ORDENACAO_RESUMO, RegistroLeitura)
TipoSessaoCrud = CrudAux.build(TipoSessaoPlenaria, 'tipo_sessao_plenaria') TipoSessaoCrud = CrudAux.build(TipoSessaoPlenaria, 'tipo_sessao_plenaria')
TipoJustificativaCrud = CrudAux.build(TipoJustificativa, 'tipo_justificativa') TipoJustificativaCrud = CrudAux.build(TipoJustificativa, 'tipo_justificativa')
CargoBancadaCrud = CrudAux.build(CargoBancada, '') CargoBancadaCrud = CrudAux.build(CargoBancada, '')
@ -210,12 +208,8 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
url_materia = reverse( url_materia = reverse(
'sapl.materia:materialegislativa_detail', kwargs={'pk': materia.id}) 'sapl.materia:materialegislativa_detail', kwargs={'pk': materia.id})
numeracao = materia.numeracao_set.first() if materia.numeracao_set.first() else "-" numeracao = materia.numeracao_set.first() if materia.numeracao_set.first() else "-"
todos_autoria = materia.autoria_set.all() autoria = materia.autoria_set.filter(primeiro_autor=True)
autoria = todos_autoria.filter(primeiro_autor=True)
autor = ', '.join([str(a.autor) for a in autoria]) if autoria else "-" autor = ', '.join([str(a.autor) for a in autoria]) if autoria else "-"
todos_autores = ', '.join([str(a.autor) for a in todos_autoria]) if autoria else "-"
num_protocolo = materia.numero_protocolo if materia.numero_protocolo else "-" num_protocolo = materia.numero_protocolo if materia.numero_protocolo else "-"
data_inicio_sessao = SessaoPlenaria.objects.get(id=pk).data_inicio data_inicio_sessao = SessaoPlenaria.objects.get(id=pk).data_inicio
@ -236,17 +230,12 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
.select_related("materia", "tramitacao")\ .select_related("materia", "tramitacao")\
.filter(materia=materia)\ .filter(materia=materia)\
.first() .first()
#idUnica para cada materia
idAutor = "autor"+str(i) title_materia = f"""<a id={obj.materia.id} href={url_materia}>{row[1][0]}</a></br>
idAutores = "autores"+str(i)
title_materia = f"""<div onmouseover = "mostra_autores({idAutor}, {idAutores})" onmouseleave = "autor_unico({idAutor}, {idAutores})">
<a id={obj.materia.id} href={url_materia}>{row[1][0]}</a></br>
<b>Processo:</b> {numeracao}</br> <b>Processo:</b> {numeracao}</br>
<span id='{idAutor}'><b>Autor:</b> {autor}</br></span> <b>Autor:</b> {autor}</br>
<span id='{idAutores}' style="display: none"><b>Autor:</b> {todos_autores}</br></span>
<b>Protocolo:</b> {num_protocolo}</br> <b>Protocolo:</b> {num_protocolo}</br>
<b>Turno:</b> {turno}</br> <b>Turno:</b> {turno}</br>
</div>
""" """
# Na linha abaixo, o segundo argumento é None para não colocar # Na linha abaixo, o segundo argumento é None para não colocar
# url em toda a string de title_materia # url em toda a string de title_materia
@ -1359,7 +1348,7 @@ class PresencaView(FormMixin, PresencaMixin, DetailView):
# Id dos parlamentares presentes # Id dos parlamentares presentes
marcados = request.POST.getlist('presenca_ativos') \ marcados = request.POST.getlist('presenca_ativos') \
+ request.POST.getlist('presenca_inativos') +request.POST.getlist('presenca_inativos')
# Deletar os que foram desmarcados # Deletar os que foram desmarcados
deletar = set(presentes_banco) - set(marcados) deletar = set(presentes_banco) - set(marcados)
@ -1474,7 +1463,7 @@ class PresencaOrdemDiaView(FormMixin, PresencaMixin, DetailView):
# Id dos parlamentares presentes # Id dos parlamentares presentes
marcados = request.POST.getlist('presenca_ativos') \ marcados = request.POST.getlist('presenca_ativos') \
+ request.POST.getlist('presenca_inativos') +request.POST.getlist('presenca_inativos')
# Deletar os que foram desmarcados # Deletar os que foram desmarcados
deletar = set(presentes_banco) - set(marcados) deletar = set(presentes_banco) - set(marcados)
@ -2548,8 +2537,7 @@ class ConsideracoesFinaisView(FormMixin, DetailView):
return context return context
def delete(self): def delete(self):
ConsideracoesFinais.objects.filter( ConsideracoesFinais.objects.filter(sessao_plenaria=self.object).delete()
sessao_plenaria=self.object).delete()
username = self.request.user.username username = self.request.user.username
self.logger.info('user=' + username + '. ConsideracoesFinais com SessaoPlenaria de id={} deletada.' self.logger.info('user=' + username + '. ConsideracoesFinais com SessaoPlenaria de id={} deletada.'
@ -2561,8 +2549,7 @@ class ConsideracoesFinaisView(FormMixin, DetailView):
def save(self, form): def save(self, form):
conteudo = form.cleaned_data['conteudo'] conteudo = form.cleaned_data['conteudo']
ConsideracoesFinais.objects.filter( ConsideracoesFinais.objects.filter(sessao_plenaria=self.object).delete()
sessao_plenaria=self.object).delete()
consideracao = ConsideracoesFinais() consideracao = ConsideracoesFinais()
consideracao.sessao_plenaria_id = self.object.id consideracao.sessao_plenaria_id = self.object.id
@ -3843,9 +3830,6 @@ class PesquisarSessaoPlenariaView(FilterView):
context['page_range'] = make_pagination( context['page_range'] = make_pagination(
page_obj.number, paginator.num_pages) page_obj.number, paginator.num_pages)
context['USE_SOLR'] = settings.USE_SOLR if hasattr(
settings, 'USE_SOLR') else False
return context return context
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
@ -3909,12 +3893,18 @@ def verifica_materia_sessao_plenaria_ajax(request):
is_materia_presente = ExpedienteMateria.objects.filter( is_materia_presente = ExpedienteMateria.objects.filter(
sessao_plenaria=pk_sessao_plenaria, materia=id_materia_selecionada sessao_plenaria=pk_sessao_plenaria, materia=id_materia_selecionada
).exists() ).exists()
is_materia_presente_any_sessao = ExpedienteMateria.objects.filter(
materia=id_materia_selecionada
).exists()
elif tipo_materia_sessao == MATERIAS_ORDEMDIA: elif tipo_materia_sessao == MATERIAS_ORDEMDIA:
is_materia_presente = OrdemDia.objects.filter( is_materia_presente = OrdemDia.objects.filter(
sessao_plenaria=pk_sessao_plenaria, materia=id_materia_selecionada sessao_plenaria=pk_sessao_plenaria, materia=id_materia_selecionada
).exists() ).exists()
is_materia_presente_any_sessao = OrdemDia.objects.filter(
materia=id_materia_selecionada
).exists()
return JsonResponse({'is_materia_presente': is_materia_presente}) return JsonResponse({'is_materia_presente': is_materia_presente, 'is_materia_presente_any_sessao': is_materia_presente_any_sessao})
class AdicionarVariasMateriasExpediente(PermissionRequiredForAppCrudMixin, class AdicionarVariasMateriasExpediente(PermissionRequiredForAppCrudMixin,

16
sapl/templates/sessao/expedientemateria_form.html

@ -40,9 +40,13 @@
{ id_materia_selecionada: id_materia, tipo_materia_sessao: tipo_materia_sessao, pk_sessao_plenaria: pk_sessao_plenaria }, { id_materia_selecionada: id_materia, tipo_materia_sessao: tipo_materia_sessao, pk_sessao_plenaria: pk_sessao_plenaria },
function(data) { function(data) {
let is_materia_presente = data['is_materia_presente'] let is_materia_presente = data['is_materia_presente']
let is_materia_presente_any_sessao = data['is_materia_presente_any_sessao']
if (is_materia_presente){ if (is_materia_presente){
$('#fundo_modal').fadeIn() $('#fundo_modal').fadeIn()
} }
else if(is_materia_presente_any_sessao){
$('#fundo_modal2').fadeIn()
}
}); });
} }
} }
@ -72,8 +76,17 @@
+'</div>' +'</div>'
+'</div>'; +'</div>';
var modal2 = '<div id="fundo_modal2" style="'+fundo_modal_estilos+'">'
+'<div id="modal2" style="'+modal_estilos+'">'
+'<h2>Atenção!</h2><br/>'
+'<h3>A matéria em questão já foi adicionada em uma outra sessão. Deseja continuar mesmo assim?</h3><br/>'
+'<button id="close_model2_btn" type="button" class="btn btn-warning mb-2" data-dimiss="model">Compreendo e quero continuar</button>'
+'</div>'
+'</div>';
$(document).ready( function() { $(document).ready( function() {
$("body").append(modal) $("body").append(modal)
$("body").append(modal2)
$("select[name='tipo_votacao']").children("option[value='4']").remove(); $("select[name='tipo_votacao']").children("option[value='4']").remove();
$('#id_apenas_leitura').change( function(event) { $('#id_apenas_leitura').change( function(event) {
@ -89,6 +102,9 @@
$("#fundo_modal, #close_model_btn").click( function() { $("#fundo_modal").hide() }); $("#fundo_modal, #close_model_btn").click( function() { $("#fundo_modal").hide() });
$("#modal").click( function(e) { e.stopPropagation() }); $("#modal").click( function(e) { e.stopPropagation() });
$("#fundo_modal2, #close_model2_btn").click( function() { $("#fundo_modal2").hide() });
$("#modal2").click( function(e) { e.stopPropagation() });
}); });
</script> </script>
{% endblock %} {% endblock %}

Loading…
Cancel
Save