diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index 9ff12378c..ba10e5b2a 100644 --- a/sapl/sessao/forms.py +++ b/sapl/sessao/forms.py @@ -349,14 +349,6 @@ class ExpedienteMateriaForm(ModelForm): else: cleaned_data['materia'] = materia - exists = self._model.objects.filter( - sessao_plenaria=sessao, - materia=materia).exists() - - if exists and not self.instance.pk: - msg = _('Essa matéria já foi cadastrada.') - raise ValidationError(msg) - return cleaned_data def save(self, commit=False): diff --git a/sapl/sessao/urls.py b/sapl/sessao/urls.py index 79c43df49..2630e6515 100644 --- a/sapl/sessao/urls.py +++ b/sapl/sessao/urls.py @@ -36,7 +36,8 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente, OrdemDiaLeituraView, retirar_leitura, TransferenciaMateriasExpediente, TransferenciaMateriasOrdemDia, - filtra_materias_copia_sessao_ajax) + filtra_materias_copia_sessao_ajax, verifica_materia_sessao_plenaria_ajax) + from .apps import AppConfig @@ -80,6 +81,9 @@ urlpatterns = [ url(r'^sessao/filtra-materias-copia-sessao-ajax/', filtra_materias_copia_sessao_ajax, name='filtra_materias_copia_sessao_ajax_view'), + url(r'^sessao/verifica-materia-sessao-plenaria-ajax/', + verifica_materia_sessao_plenaria_ajax, + name='verifica_materia_sessao_plenaria_ajax_view'), url(r'^sessao/(?P\d+)/(?P\d+)/abrir-votacao$', abrir_votacao, diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index d8d8549a0..7a995e7b1 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -736,6 +736,11 @@ class MateriaOrdemDiaCrud(MasterDetailCrud): class CreateView(MasterDetailCrud.CreateView): form_class = OrdemDiaForm + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context["tipo_materia_sessao"] = "ordem" + return context + def get_initial(self): self.initial['data_ordem'] = SessaoPlenaria.objects.get( pk=self.kwargs['pk']).data_inicio.strftime('%d/%m/%Y') @@ -753,6 +758,17 @@ class MateriaOrdemDiaCrud(MasterDetailCrud): class UpdateView(MasterDetailCrud.UpdateView): form_class = OrdemDiaForm + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + + context["tipo_materia_sessao"] = "ordem" + + context["tipo_materia_salvo"] = self.object.materia.tipo.id + context["numero_materia_salvo"] = self.object.materia.numero + context["ano_materia_salvo"] = self.object.materia.ano + + return context + def get_initial(self): initial = super().get_initial() @@ -833,6 +849,11 @@ class ExpedienteMateriaCrud(MasterDetailCrud): class CreateView(MasterDetailCrud.CreateView): form_class = ExpedienteMateriaForm + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context["tipo_materia_sessao"] = "expediente" + return context + def get_initial(self): initial = super().get_initial() initial['data_ordem'] = SessaoPlenaria.objects.get( @@ -851,6 +872,17 @@ class ExpedienteMateriaCrud(MasterDetailCrud): class UpdateView(MasterDetailCrud.UpdateView): form_class = ExpedienteMateriaForm + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + + context["tipo_materia_sessao"] = "expediente" + + context["tipo_materia_salvo"] = self.object.materia.tipo.id + context["numero_materia_salvo"] = self.object.materia.numero + context["ano_materia_salvo"] = self.object.materia.ano + + return context + def get_initial(self): initial = super().get_initial() @@ -3719,6 +3751,25 @@ def retira_materias_ja_adicionadas(id_sessao, model): return lista_id_materias +def verifica_materia_sessao_plenaria_ajax(request): + # Define se a matéria é do expediente ou da ordem do dia + tipo_materia_sessao = request.GET['tipo_materia_sessao'] + + id_materia_selecionada = request.GET['id_materia_selecionada'] + pk_sessao_plenaria = request.GET['pk_sessao_plenaria'] + + if tipo_materia_sessao == "expediente": + is_materia_presente = ExpedienteMateria.objects.filter( + sessao_plenaria=pk_sessao_plenaria, materia=id_materia_selecionada + ).exists() + elif tipo_materia_sessao == "ordem": + is_materia_presente = OrdemDia.objects.filter( + sessao_plenaria=pk_sessao_plenaria, materia=id_materia_selecionada + ).exists() + + return JsonResponse({ 'is_materia_presente': is_materia_presente }) + + class AdicionarVariasMateriasExpediente(PermissionRequiredForAppCrudMixin, MateriaLegislativaPesquisaView): filterset_class = AdicionarVariasMateriasFilterSet diff --git a/sapl/templates/sessao/expedientemateria_form.html b/sapl/templates/sessao/expedientemateria_form.html index e90ec63ff..f4dcad044 100644 --- a/sapl/templates/sessao/expedientemateria_form.html +++ b/sapl/templates/sessao/expedientemateria_form.html @@ -4,54 +4,91 @@ {% load common_tags %} {% block extra_js %} + + } + + var fields = ["#id_tipo_materia", "#id_numero_materia", "#id_ano_materia"]; + for (i = 0; i < fields.length; i++){ + $(fields[i]).change(recuperar_materia) + } + recuperar_materia() + + var modal_estilos = 'display: block; width: 85%; max-width: 600px; background: #fff; padding: 15px; border-radius: 5px;' + +'-webkit-box-shadow: 0px 6px 14px -2px rgba(0, 0, 0, 0.75); -moz-box-shadow: 0px 6px 14px -2px rgba(0, 0, 0, 0.75);' + +'box-shadow: 0px 6px 14px -2px rgba(0, 0, 0, 0.75); position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%);' + +'z-index: 99999999; text-align: center'; + + var fundo_modal_estilos = 'top: 0; right: 0; bottom: 0; left: 0; position: fixed; background-color: rgba(0, 0, 0, 0.6); z-index: 99999999;' + +'display: none;'; + + var modal = '
' + +'' + +'
'; + + $(document).ready( function() { + $("body").append(modal) + + $("select[name='tipo_votacao']").children("option[value='4']").remove(); + $('#id_apenas_leitura').change( function(event) { + $('#div_id_tipo_votacao').toggle() + if ($('#id_apenas_leitura').prop('checked')){ + $("select[name='tipo_votacao']").append(new Option('Leitura', '4')) + $("select[name='tipo_votacao']").val('4') + } else { + $("select[name='tipo_votacao']").children("option[value='4']").remove() + $("select[name='tipo_votacao']").val('1') + } + }); + $("#fundo_modal, #close_model_btn").click( function() { $("#fundo_modal").hide() }); + $("#modal").click( function(e) { e.stopPropagation() }); + }); + {% endblock %}