Browse Source

Fix #3182 - Adicionar matéria

pull/3224/head
João Rodrigues 5 years ago
committed by João Rodrigues
parent
commit
12fbeaaf1a
  1. 8
      sapl/sessao/forms.py
  2. 6
      sapl/sessao/urls.py
  3. 51
      sapl/sessao/views.py
  4. 79
      sapl/templates/sessao/expedientemateria_form.html

8
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):

6
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<pk>\d+)/(?P<spk>\d+)/abrir-votacao$',
abrir_votacao,

51
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

79
sapl/templates/sessao/expedientemateria_form.html

@ -4,7 +4,6 @@
{% load common_tags %}
{% block extra_js %}
<script language="Javascript">
// document.getElementById("id_observacao").readOnly = true;
@ -14,44 +13,82 @@
var ano_materia = $("#id_ano_materia").val()
if (tipo_materia && numero_materia && ano_materia){
$.get("/sessao/recuperar-materia", {
tipo_materia: tipo_materia,
numero_materia: numero_materia,
ano_materia: ano_materia
},
$.get("/sessao/recuperar-materia",
{ tipo_materia: tipo_materia, numero_materia: numero_materia, ano_materia: ano_materia },
function(data, status) {
if ($(".ementa-materia").length === 0){
$("#div_id_tipo_materia").closest('.row').after(
$('<div class="row"/>').append(
$('<div class="col-xs-12"/>').append(
$('<div class="alert alert-info ementa-materia"/>').html(data.ementa))))
$("#div_id_tipo_materia").closest('.row').after($('<div class="row"/>').append($('<div class="col-xs-12"/>').append(
$('<div class="alert alert-info ementa-materia"/>').html(data.ementa)
)))
}
else {
$('.ementa-materia').html(data.ementa)
}
let tipo_materia_salvo = "{{ tipo_materia_salvo }}"
let numero_materia_salvo = "{{ numero_materia_salvo }}"
let ano_materia_salvo = "{{ ano_materia_salvo }}"
if (tipo_materia !== tipo_materia_salvo || numero_materia !== numero_materia_salvo || ano_materia !== ano_materia_salvo){
let id_materia = data.id
if (id_materia){
// Define se a matéria é do expediente ou da ordem do dia
let tipo_materia_sessao = "{{ tipo_materia_sessao }}"
let pk_sessao_plenaria = "{{ root_pk }}"
$.get("{% url 'sapl.sessao:verifica_materia_sessao_plenaria_ajax_view' %}",
{ 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']
if (is_materia_presente){
$('#fundo_modal').fadeIn()
}
});
}
}
});
}
}
var fields = ["#id_tipo_materia", "#id_numero_materia", "#id_ano_materia"];
for (i = 0; i < fields.length; i++){
$(fields[i]).change(recuperar_materia);
$(fields[i]).change(recuperar_materia)
}
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 = '<div id="fundo_modal" style="'+fundo_modal_estilos+'">'
+'<div id="modal" style="'+modal_estilos+'">'
+'<h2>Atenção!</h2><br/>'
+'<h3>A matéria selecionada já foi adicionada na sessão. Essa matéria será duplicada.</h3><br/>'
+'<button id="close_model_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)
$("select[name='tipo_votacao']").children("option[value='4']").remove();
$('#id_apenas_leitura').change( function(event) {
$('#div_id_tipo_votacao').toggle();
$('#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');
$("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')
}
else{
$("select[name='tipo_votacao']").children("option[value='4']").remove();
$("select[name='tipo_votacao']").val('1');
}
})
});
</script>
$("#fundo_modal, #close_model_btn").click( function() { $("#fundo_modal").hide() });
$("#modal").click( function(e) { e.stopPropagation() });
});
</script>
{% endblock %}

Loading…
Cancel
Save