Browse Source

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

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

50
sapl/sessao/views.py

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

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 },
function(data) {
let is_materia_presente = data['is_materia_presente']
let is_materia_presente_any_sessao = data['is_materia_presente_any_sessao']
if (is_materia_presente){
$('#fundo_modal').fadeIn()
}
else if(is_materia_presente_any_sessao){
$('#fundo_modal2').fadeIn()
}
});
}
}
@ -72,8 +76,17 @@
+'</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() {
$("body").append(modal)
$("body").append(modal2)
$("select[name='tipo_votacao']").children("option[value='4']").remove();
$('#id_apenas_leitura').change( function(event) {
@ -89,6 +102,9 @@
$("#fundo_modal, #close_model_btn").click( function() { $("#fundo_modal").hide() });
$("#modal").click( function(e) { e.stopPropagation() });
$("#fundo_modal2, #close_model2_btn").click( function() { $("#fundo_modal2").hide() });
$("#modal2").click( function(e) { e.stopPropagation() });
});
</script>
{% endblock %}

Loading…
Cancel
Save