Browse Source

fix: Ajustes na Leitura em bloco, inclusao da funcionalidade para Ordem do dia

pull/3618/head
joao 2 years ago
parent
commit
59bced7c19
  1. 5
      sapl/sessao/urls.py
  2. 83
      sapl/sessao/views.py
  3. 4
      sapl/templates/sessao/leitura/leitura_bloco.html
  4. 3
      sapl/templates/sessao/subnav.yaml

5
sapl/sessao/urls.py

@ -31,7 +31,7 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
sessao_legislativa_legislatura_ajax, sessao_legislativa_legislatura_ajax,
VotacaoEmBlocoOrdemDia, VotacaoEmBlocoExpediente, VotacaoEmBlocoOrdemDia, VotacaoEmBlocoExpediente,
VotacaoEmBlocoSimbolicaView, VotacaoEmBlocoNominalView, VotacaoEmBlocoSimbolicaView, VotacaoEmBlocoNominalView,
LeituraEmBlocoExpediente, LeituraEmBlocoExpediente, LeituraEmBlocoOrdemDia,
recuperar_nome_tipo_sessao, recuperar_nome_tipo_sessao,
ExpedienteLeituraView, ExpedienteLeituraView,
OrdemDiaLeituraView, OrdemDiaLeituraView,
@ -162,6 +162,9 @@ urlpatterns = [
url(r'^sessao/(?P<pk>\d+)/leitura_bloco_expediente$', url(r'^sessao/(?P<pk>\d+)/leitura_bloco_expediente$',
LeituraEmBlocoExpediente.as_view(), LeituraEmBlocoExpediente.as_view(),
name='leitura_bloco_expediente'), name='leitura_bloco_expediente'),
url(r'^sessao/(?P<pk>\d+)/leitura_bloco_ordem_dia$',
LeituraEmBlocoOrdemDia.as_view(),
name='leitura_bloco_ordem_dia'),
url(r'^sessao/(?P<pk>\d+)/resumo$', url(r'^sessao/(?P<pk>\d+)/resumo$',
ResumoView.as_view(), name='resumo'), ResumoView.as_view(), name='resumo'),
url(r'^sessao/(?P<pk>\d+)/resumo_ata$', url(r'^sessao/(?P<pk>\d+)/resumo_ata$',

83
sapl/sessao/views.py

@ -274,8 +274,8 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
exist_leitura = obj.registroleitura_set.filter( exist_leitura = obj.registroleitura_set.filter(
materia=obj.materia).exists() materia=obj.materia).exists()
if (obj.tipo_votacao != 4 and not exist_resultado and not exist_retirada) or \ if (obj.tipo_votacao != LEITURA and not exist_resultado and not exist_retirada) or \
(obj.tipo_votacao == 4 and not exist_leitura): (obj.tipo_votacao == LEITURA and not exist_leitura):
if obj.votacao_aberta: if obj.votacao_aberta:
url = '' url = ''
if is_expediente: if is_expediente:
@ -4384,7 +4384,7 @@ class JustificativaAusenciaCrud(MasterDetailCrud):
pass pass
class LeituraEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView): class LeituraEmBloco(PermissionRequiredForAppCrudMixin, ListView):
template_name = 'sessao/leitura/leitura_bloco.html' template_name = 'sessao/leitura/leitura_bloco.html'
app_label = AppConfig.label app_label = AppConfig.label
expediente = True expediente = True
@ -4392,7 +4392,7 @@ class LeituraEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView):
def get_queryset(self): def get_queryset(self):
return ExpedienteMateria.objects.filter(sessao_plenaria_id=self.kwargs['pk'], return ExpedienteMateria.objects.filter(sessao_plenaria_id=self.kwargs['pk'],
retiradapauta=None, tipo_votacao=4, registroleitura__materia=None) retiradapauta=None, tipo_votacao=LEITURA, registroleitura__materia=None)
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs) context = super().get_context_data(**kwargs)
@ -4413,46 +4413,35 @@ class LeituraEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView):
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
if 'marcadas_4' in request.POST: if 'marcadas_4' in request.POST:
models = None models = None
selectedlist = request.POST.getlist('marcadas_4')
if request.POST['origem'] == 'ordem': if request.POST['origem'] == 'ordem':
models = OrdemDia.objects.filter(id__in=request.POST.getlist('marcadas_4')) models = OrdemDia.objects.filter(id__in=selectedlist)
elif request.POST['origem'] == 'expediente': elif request.POST['origem'] == 'expediente':
models = ExpedienteMateria.objects.filter(id__in=request.POST.getlist('marcadas_4')) models = ExpedienteMateria.objects.filter(id__in=selectedlist)
if models is None: if not models:
messages.add_message(self.request, messages.ERROR, messages.add_message(self.request, messages.ERROR,
_('Impossível localizar as matérias selecionadas')) _('Impossível localizar as matérias selecionadas'))
return self.get(request, self.kwargs) return self.get(request, self.kwargs)
else:
for m in models: materias = [m.materia for m in models]
try: RegistroLeitura.objects.filter(materia__in=materias).delete()
obj = None leituras = []
if isinstance(m, ExpedienteMateria): for m in models:
obj = RegistroLeitura.objects.filter(materia=m.materia, expediente=m).delete() obj = None
obj = RegistroLeitura() if isinstance(m, ExpedienteMateria):
obj.expediente = m obj = RegistroLeitura(expediente=m, materia=m.materia,
elif isinstance(m, OrdemDia): observacao=request.POST['observacao'],
obj = RegistroLeitura.objects.filter(materia=m.materia, ordem=m).delete() user=self.request.user,
obj = RegistroLeitura() ip=get_client_ip(self.request))
obj.ordem = m elif isinstance(m, OrdemDia):
else: obj = RegistroLeitura(ordem=m, materia=m.materia,
messages.add_message(self.request, messages.ERROR, observacao=request.POST['observacao'],
_('Tipo de Pauta nao encontrado')) user=self.request.user,
return self.get(request, self.kwargs) ip=get_client_ip(self.request))
leituras.append(obj)
obj.materia = m.materia
obj.observacao = request.POST['observacao'] RegistroLeitura.objects.bulk_create(leituras)
obj.user = self.request.user
obj.ip = get_client_ip(self.request)
obj.save()
except Exception as e:
messages.add_message(self.request, messages.ERROR,
_('Erro ao salvar registro de Leitura, por favor, refaça a operação'))
return self.get(request, self.kwargs)
else:
m.resultado = "Matéria lida"
m.votacao_aberta = False
m.save()
else: else:
messages.add_message(self.request, messages.ERROR, _('Nenhuma matéria selecionada para leitura em Bloco')) messages.add_message(self.request, messages.ERROR, _('Nenhuma matéria selecionada para leitura em Bloco'))
return self.get(request, self.kwargs) return self.get(request, self.kwargs)
@ -4468,6 +4457,24 @@ class LeituraEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView):
kwargs={'pk': self.kwargs['pk']}) kwargs={'pk': self.kwargs['pk']})
class LeituraEmBlocoExpediente(LeituraEmBloco):
expediente = True
paginate_by = 100
def get_queryset(self):
return ExpedienteMateria.objects.filter(sessao_plenaria_id=self.kwargs['pk'],
retiradapauta=None, tipo_votacao=LEITURA, registroleitura__materia=None)
class LeituraEmBlocoOrdemDia(LeituraEmBloco):
expediente = False
paginate_by = 100
def get_queryset(self):
return OrdemDia.objects.filter(sessao_plenaria_id=self.kwargs['pk'],
retiradapauta=None, tipo_votacao=LEITURA, registroleitura__materia=None)
class VotacaoEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView): class VotacaoEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView):
template_name = 'sessao/votacao/votacao_bloco.html' template_name = 'sessao/votacao/votacao_bloco.html'
app_label = AppConfig.label app_label = AppConfig.label

4
sapl/templates/sessao/leitura/leitura_bloco.html

@ -38,7 +38,7 @@
<div class="checkbox" id="check_all"> <div class="checkbox" id="check_all">
<label for="id_check_all"> <label for="id_check_all">
<input type="checkbox" id="id_check_all" onchange="checkAll(this)" /> Marcar/Desmarcar Todos <input type="checkbox" id="id_check_all" onchange="toggleCheck(this)" /> Marcar/Desmarcar Todos
</label> </label>
</div> </div>
@ -103,7 +103,7 @@
{% block extra_js %} {% block extra_js %}
<script> <script>
function checkAll(elem) { function toggleCheck(elem) {
let checkboxes = document.getElementsByName('marcadas_4'); let checkboxes = document.getElementsByName('marcadas_4');
for (let i = 0; i < checkboxes.length; i++) { for (let i = 0; i < checkboxes.length; i++) {
if (checkboxes[i].type == 'checkbox') if (checkboxes[i].type == 'checkbox')

3
sapl/templates/sessao/subnav.yaml

@ -51,6 +51,9 @@
- title: {% trans 'Votação em Bloco' %} - title: {% trans 'Votação em Bloco' %}
url: votacao_bloco_ordemdia url: votacao_bloco_ordemdia
check_permission: sessao.add_sessaoplenaria check_permission: sessao.add_sessaoplenaria
- title: {% trans 'Leitura em Bloco' %}
url: leitura_bloco_ordem_dia
check_permission: sessao.add_sessaoplenaria
- title: {% trans 'Copiar Matérias para Sessão Posterior' %} - title: {% trans 'Copiar Matérias para Sessão Posterior' %}
url: transf_mat_ordemdia url: transf_mat_ordemdia
check_permission: sessao.add_sessaoplenaria check_permission: sessao.add_sessaoplenaria

Loading…
Cancel
Save