Browse Source

Fix #2700 Corrige Duplicação em PDF de Resumo de Sessão (#2704)

* Corrige duplicação em pdf de resumo de sessão

* Corrige conflito de migração
pull/2811/head
Vinícius Cantuária 6 years ago
committed by Cesar Carvalho
parent
commit
6daa1c5e32
  1. 128
      sapl/sessao/forms.py
  2. 85
      sapl/sessao/migrations/0037_auto_20190415_1635.py
  3. 16
      sapl/sessao/migrations/0038_merge_20190415_1800.py
  4. 84
      sapl/sessao/models.py
  5. 112
      sapl/sessao/views.py

128
sapl/sessao/forms.py

@ -26,29 +26,14 @@ from sapl.utils import (RANGE_DIAS_MES, RANGE_MESES,
from .models import (Bancada, Bloco, ExpedienteMateria, JustificativaAusencia, from .models import (Bancada, Bloco, ExpedienteMateria, JustificativaAusencia,
Orador, OradorExpediente, OrdemDia, PresencaOrdemDia, SessaoPlenaria, Orador, OradorExpediente, OrdemDia, PresencaOrdemDia, SessaoPlenaria,
SessaoPlenariaPresenca, TipoResultadoVotacao, SessaoPlenariaPresenca, TipoResultadoVotacao,
OcorrenciaSessao, RetiradaPauta, TipoRetiradaPauta, OradorOrdemDia) OcorrenciaSessao, RetiradaPauta, TipoRetiradaPauta, OradorOrdemDia, ORDENACAO_RESUMO,
ResumoOrdenacao)
MES_CHOICES = RANGE_MESES MES_CHOICES = RANGE_MESES
DIA_CHOICES = RANGE_DIAS_MES DIA_CHOICES = RANGE_DIAS_MES
ORDENACAO_RESUMO = [('cont_mult', 'Conteúdo Multimídia'),
('exp', 'Expedientes'),
('id_basica', 'Identificação Básica'),
('lista_p', 'Lista de Presença'),
('lista_p_o_d', 'Lista de Presença Ordem do Dia'),
('mat_exp', 'Matérias do Expediente'),
('mat_o_d', 'Matérias da Ordem do Dia'),
('mesa_d', 'Mesa Diretora'),
('oradores_exped', 'Oradores do Expediente'),
('oradores_expli', 'Oradores das Explicações Pessoais'),
('ocorr_sessao', 'Ocorrências da Sessão'),
('v_n_mat_exp', 'Votações Nominais - Matérias do Expediente'),
('v_n_mat_o_d', 'Votações Nominais - Matérias da Ordem do Dia'),
('oradores_o_d', 'Oradores da Ordem do Dia')]
class SessaoPlenariaForm(FileFieldCheckMixin, ModelForm): class SessaoPlenariaForm(FileFieldCheckMixin, ModelForm):
class Meta: class Meta:
@ -807,38 +792,64 @@ class PautaSessaoFilterSet(SessaoPlenariaFilterSet):
class ResumoOrdenacaoForm(forms.Form): class ResumoOrdenacaoForm(forms.Form):
primeiro = forms.ChoiceField(label=_(''), primeiro = forms.ChoiceField(
choices=ORDENACAO_RESUMO) label='',
segundo = forms.ChoiceField(label=_(''), choices=ORDENACAO_RESUMO
choices=ORDENACAO_RESUMO) )
terceiro = forms.ChoiceField(label='', segundo = forms.ChoiceField(
choices=ORDENACAO_RESUMO) label='',
quarto = forms.ChoiceField(label=_(''), choices=ORDENACAO_RESUMO
choices=ORDENACAO_RESUMO) )
quinto = forms.ChoiceField(label=_(''), terceiro = forms.ChoiceField(
choices=ORDENACAO_RESUMO) label='',
sexto = forms.ChoiceField(label=_(''), choices=ORDENACAO_RESUMO
choices=ORDENACAO_RESUMO) )
setimo = forms.ChoiceField(label=_(''), quarto = forms.ChoiceField(
choices=ORDENACAO_RESUMO) label='',
oitavo = forms.ChoiceField(label=_(''), choices=ORDENACAO_RESUMO
choices=ORDENACAO_RESUMO) )
nono = forms.ChoiceField(label=_(''), quinto = forms.ChoiceField(
choices=ORDENACAO_RESUMO) label='',
decimo = forms.ChoiceField(label='10°', choices=ORDENACAO_RESUMO
choices=ORDENACAO_RESUMO) )
decimo_primeiro = forms.ChoiceField(label='11°', sexto = forms.ChoiceField(
choices=ORDENACAO_RESUMO) label='',
decimo_segundo = forms.ChoiceField(label='12°', choices=ORDENACAO_RESUMO
choices=ORDENACAO_RESUMO) )
decimo_terceiro = forms.ChoiceField(label='13°', setimo = forms.ChoiceField(
choices=ORDENACAO_RESUMO) label='',
decimo_quarto = forms.ChoiceField(label='14°', choices=ORDENACAO_RESUMO
choices=ORDENACAO_RESUMO) )
oitavo = forms.ChoiceField(
label='',
choices=ORDENACAO_RESUMO
)
nono = forms.ChoiceField(
label='',
choices=ORDENACAO_RESUMO
)
decimo = forms.ChoiceField(
label='10°',
choices=ORDENACAO_RESUMO
)
decimo_primeiro = forms.ChoiceField(
label='11°',
choices=ORDENACAO_RESUMO
)
decimo_segundo = forms.ChoiceField(
label='12°',
choices=ORDENACAO_RESUMO
)
decimo_terceiro = forms.ChoiceField(
label='13°',
choices=ORDENACAO_RESUMO
)
decimo_quarto = forms.ChoiceField(
label='14°',
choices=ORDENACAO_RESUMO
)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(ResumoOrdenacaoForm, self).__init__(*args, **kwargs)
row1 = to_row( row1 = to_row(
[('primeiro', 12)]) [('primeiro', 12)])
row2 = to_row( row2 = to_row(
@ -878,6 +889,8 @@ class ResumoOrdenacaoForm(forms.Form):
form_actions(label='Atualizar')) form_actions(label='Atualizar'))
) )
super().__init__(*args, **kwargs)
def clean(self): def clean(self):
super(ResumoOrdenacaoForm, self).clean() super(ResumoOrdenacaoForm, self).clean()
@ -896,6 +909,27 @@ class ResumoOrdenacaoForm(forms.Form):
'Não é possível ter campos repetidos')) 'Não é possível ter campos repetidos'))
return self.cleaned_data return self.cleaned_data
def save(self):
ordenacao = ResumoOrdenacao.objects.get()
cleaned_data = self.cleaned_data
ordenacao.primeiro = cleaned_data['primeiro']
ordenacao.segundo = cleaned_data['segundo']
ordenacao.terceiro = cleaned_data['terceiro']
ordenacao.quarto = cleaned_data['quarto']
ordenacao.quinto = cleaned_data['quinto']
ordenacao.sexto = cleaned_data['sexto']
ordenacao.setimo = cleaned_data['setimo']
ordenacao.oitavo = cleaned_data['oitavo']
ordenacao.nono = cleaned_data['nono']
ordenacao.decimo = cleaned_data['decimo']
ordenacao.decimo_primeiro = cleaned_data['decimo_primeiro']
ordenacao.decimo_segundo = cleaned_data['decimo_segundo']
ordenacao.decimo_terceiro = cleaned_data['decimo_terceiro']
ordenacao.decimo_quarto = cleaned_data['decimo_quarto']
ordenacao.save()
class JustificativaAusenciaForm(ModelForm): class JustificativaAusenciaForm(ModelForm):

85
sapl/sessao/migrations/0037_auto_20190415_1635.py

@ -0,0 +1,85 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-04-15 19:35
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('sessao', '0036_auto_20190412_1106'),
]
operations = [
migrations.AlterField(
model_name='resumoordenacao',
name='decimo',
field=models.CharField(default='mat_o_d', max_length=50),
),
migrations.AlterField(
model_name='resumoordenacao',
name='decimo_primeiro',
field=models.CharField(default='v_n_mat_o_d', max_length=50),
),
migrations.AlterField(
model_name='resumoordenacao',
name='decimo_quarto',
field=models.CharField(default='ocorr_sessao', max_length=50),
),
migrations.AlterField(
model_name='resumoordenacao',
name='decimo_segundo',
field=models.CharField(default='oradores_o_d', max_length=50),
),
migrations.AlterField(
model_name='resumoordenacao',
name='decimo_terceiro',
field=models.CharField(default='oradores_expli', max_length=50),
),
migrations.AlterField(
model_name='resumoordenacao',
name='nono',
field=models.CharField(default='lista_p_o_d', max_length=50),
),
migrations.AlterField(
model_name='resumoordenacao',
name='oitavo',
field=models.CharField(default='oradores_exped', max_length=50),
),
migrations.AlterField(
model_name='resumoordenacao',
name='primeiro',
field=models.CharField(default='id_basica', max_length=50),
),
migrations.AlterField(
model_name='resumoordenacao',
name='quarto',
field=models.CharField(default='lista_p', max_length=50),
),
migrations.AlterField(
model_name='resumoordenacao',
name='quinto',
field=models.CharField(default='exp', max_length=50),
),
migrations.AlterField(
model_name='resumoordenacao',
name='segundo',
field=models.CharField(default='cont_mult', max_length=50),
),
migrations.AlterField(
model_name='resumoordenacao',
name='setimo',
field=models.CharField(default='v_n_mat_exp', max_length=50),
),
migrations.AlterField(
model_name='resumoordenacao',
name='sexto',
field=models.CharField(default='mat_exp', max_length=50),
),
migrations.AlterField(
model_name='resumoordenacao',
name='terceiro',
field=models.CharField(default='mesa_d', max_length=50),
),
]

16
sapl/sessao/migrations/0038_merge_20190415_1800.py

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-04-15 21:00
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('sessao', '0037_auto_20190415_1635'),
('sessao', '0037_auto_20190415_1324'),
]
operations = [
]

84
sapl/sessao/models.py

@ -584,30 +584,86 @@ class Bloco(models.Model):
return self.nome return self.nome
ORDENACAO_RESUMO = [
('id_basica', 'Identificação Básica'),
('cont_mult', 'Conteúdo Multimídia'),
('mesa_d', 'Mesa Diretora'),
('lista_p', 'Lista de Presença'),
('exp', 'Expedientes'),
('mat_exp', 'Matérias do Expediente'),
('v_n_mat_exp', 'Votações Nominais - Matérias do Expediente'),
('oradores_exped', 'Oradores do Expediente'),
('lista_p_o_d', 'Lista de Presença Ordem do Dia'),
('mat_o_d', 'Matérias da Ordem do Dia'),
('v_n_mat_o_d', 'Votações Nominais - Matérias da Ordem do Dia'),
('oradores_o_d', 'Oradores da Ordem do Dia'),
('oradores_expli', 'Oradores das Explicações Pessoais'),
('ocorr_sessao', 'Ocorrências da Sessão')
]
@reversion.register() @reversion.register()
class ResumoOrdenacao(models.Model): class ResumoOrdenacao(models.Model):
''' '''
Tabela para registrar em qual ordem serão renderizados os componentes Tabela para registrar em qual ordem serão renderizados os componentes
da tela de resumo de uma sessão da tela de resumo de uma sessão
''' '''
primeiro = models.CharField(max_length=30) primeiro = models.CharField(
segundo = models.CharField(max_length=30) max_length=50,
terceiro = models.CharField(max_length=30) default=ORDENACAO_RESUMO[0][0]
quarto = models.CharField(max_length=30) )
quinto = models.CharField(max_length=30) segundo = models.CharField(
sexto = models.CharField(max_length=30) max_length=50,
setimo = models.CharField(max_length=30) default=ORDENACAO_RESUMO[1][0]
oitavo = models.CharField(max_length=30) )
nono = models.CharField(max_length=30) terceiro = models.CharField(
decimo = models.CharField(max_length=30) max_length=50,
default=ORDENACAO_RESUMO[2][0]
)
quarto = models.CharField(
max_length=50,
default=ORDENACAO_RESUMO[3][0]
)
quinto = models.CharField(
max_length=50,
default=ORDENACAO_RESUMO[4][0]
)
sexto = models.CharField(
max_length=50,
default=ORDENACAO_RESUMO[5][0]
)
setimo = models.CharField(
max_length=50,
default=ORDENACAO_RESUMO[6][0]
)
oitavo = models.CharField(
max_length=50,
default=ORDENACAO_RESUMO[7][0]
)
nono = models.CharField(
max_length=50,
default=ORDENACAO_RESUMO[8][0]
)
decimo = models.CharField(
max_length=50,
default=ORDENACAO_RESUMO[9][0]
)
decimo_primeiro = models.CharField( decimo_primeiro = models.CharField(
max_length=30, default="Ocorrências da Sessão") max_length=50,
default=ORDENACAO_RESUMO[10][0]
)
decimo_segundo = models.CharField( decimo_segundo = models.CharField(
max_length=30, default="Votos Nominais Mat Expediente") max_length=50,
default=ORDENACAO_RESUMO[11][0]
)
decimo_terceiro = models.CharField( decimo_terceiro = models.CharField(
max_length=30, default="Votos Nominais Mat Ordem Dia") max_length=50,
default=ORDENACAO_RESUMO[12][0]
)
decimo_quarto = models.CharField( decimo_quarto = models.CharField(
max_length=30, default="Oradores da Ordem do Dia") max_length=50,
default=ORDENACAO_RESUMO[13][0]
)
class Meta: class Meta:
verbose_name = _('Ordenação do Resumo de uma Sessão') verbose_name = _('Ordenação do Resumo de uma Sessão')

112
sapl/sessao/views.py

@ -49,7 +49,7 @@ from .models import (Bancada, Bloco, CargoBancada, CargoMesa,
PresencaOrdemDia, RegistroVotacao, ResumoOrdenacao, PresencaOrdemDia, RegistroVotacao, ResumoOrdenacao,
SessaoPlenaria, SessaoPlenariaPresenca, TipoExpediente, SessaoPlenaria, SessaoPlenariaPresenca, TipoExpediente,
TipoResultadoVotacao, TipoSessaoPlenaria, VotoParlamentar, TipoRetiradaPauta, TipoResultadoVotacao, TipoSessaoPlenaria, VotoParlamentar, TipoRetiradaPauta,
RetiradaPauta, TipoJustificativa, JustificativaAusencia, OradorOrdemDia) RetiradaPauta, TipoJustificativa, JustificativaAusencia, OradorOrdemDia, ORDENACAO_RESUMO)
TipoSessaoCrud = CrudAux.build(TipoSessaoPlenaria, 'tipo_sessao_plenaria') TipoSessaoCrud = CrudAux.build(TipoSessaoPlenaria, 'tipo_sessao_plenaria')
@ -1296,49 +1296,38 @@ class ResumoOrdenacaoView(PermissionRequiredMixin, FormView):
form_class = ResumoOrdenacaoForm form_class = ResumoOrdenacaoForm
permission_required = {'sessao.change_resumoordenacao'} permission_required = {'sessao.change_resumoordenacao'}
def get_success_url(self): def get_tupla(self, tupla_key):
return reverse('sapl.base:sistema') for tupla in ORDENACAO_RESUMO:
if tupla[0] == tupla_key:
return tupla
def get_initial(self): def get_initial(self):
initial = super(ResumoOrdenacaoView, self).get_initial()
ordenacao = ResumoOrdenacao.objects.first()
if ordenacao:
initial.update({'primeiro': ordenacao.primeiro,
'segundo': ordenacao.segundo,
'terceiro': ordenacao.terceiro,
'quarto': ordenacao.quarto,
'quinto': ordenacao.quinto,
'sexto': ordenacao.sexto,
'setimo': ordenacao.setimo,
'oitavo': ordenacao.oitavo,
'nono': ordenacao.nono,
'decimo': ordenacao.decimo,
'decimo_primeiro': ordenacao.decimo_primeiro,
'decimo_segundo': ordenacao.decimo_segundo,
'decimo_terceiro': ordenacao.decimo_terceiro,
'decimo_quarto': ordenacao.decimo_quarto})
return initial
def form_valid(self, form):
ordenacao = ResumoOrdenacao.objects.get_or_create()[0] ordenacao = ResumoOrdenacao.objects.get_or_create()[0]
ordenacao.primeiro = form.cleaned_data['primeiro'] initial = {
ordenacao.segundo = form.cleaned_data['segundo'] 'primeiro': self.get_tupla(ordenacao.primeiro),
ordenacao.terceiro = form.cleaned_data['terceiro'] 'segundo': self.get_tupla(ordenacao.segundo),
ordenacao.quarto = form.cleaned_data['quarto'] 'terceiro': self.get_tupla(ordenacao.terceiro),
ordenacao.quinto = form.cleaned_data['quinto'] 'quarto': self.get_tupla(ordenacao.quarto),
ordenacao.sexto = form.cleaned_data['sexto'] 'quinto': self.get_tupla(ordenacao.quinto),
ordenacao.setimo = form.cleaned_data['setimo'] 'sexto': self.get_tupla(ordenacao.sexto),
ordenacao.oitavo = form.cleaned_data['oitavo'] 'setimo': self.get_tupla(ordenacao.setimo),
ordenacao.nono = form.cleaned_data['nono'] 'oitavo': self.get_tupla(ordenacao.oitavo),
ordenacao.decimo = form.cleaned_data['decimo'] 'nono': self.get_tupla(ordenacao.nono),
ordenacao.decimo_primeiro = form.cleaned_data['decimo_primeiro'] 'decimo': self.get_tupla(ordenacao.decimo),
ordenacao.decimo_segundo = form.cleaned_data['decimo_segundo'] 'decimo_primeiro': self.get_tupla(ordenacao.decimo_primeiro),
ordenacao.decimo_terceiro = form.cleaned_data['decimo_terceiro'] 'decimo_segundo': self.get_tupla(ordenacao.decimo_segundo),
ordenacao.decimo_quarto = form.cleaned_data['decimo_quarto'] 'decimo_terceiro': self.get_tupla(ordenacao.decimo_terceiro),
'decimo_quarto': self.get_tupla(ordenacao.decimo_quarto)
ordenacao.save() }
return initial
def get_success_url(self):
return reverse('sapl.base:sistema')
def form_valid(self, form):
form.save()
return HttpResponseRedirect(self.get_success_url()) return HttpResponseRedirect(self.get_success_url())
@ -1761,7 +1750,6 @@ class ResumoView(DetailView):
context.update(get_ocorrencias_da_sessão(self.object)) context.update(get_ocorrencias_da_sessão(self.object))
# ===================================================================== # =====================================================================
# Indica a ordem com a qual o template será renderizado # Indica a ordem com a qual o template será renderizado
ordenacao = ResumoOrdenacao.objects.first()
dict_ord_template = { dict_ord_template = {
'cont_mult': 'conteudo_multimidia.html', 'cont_mult': 'conteudo_multimidia.html',
'exp': 'expedientes.html', 'exp': 'expedientes.html',
@ -1779,10 +1767,9 @@ class ResumoView(DetailView):
'ocorr_sessao': 'ocorrencias_da_sessao.html' 'ocorr_sessao': 'ocorrencias_da_sessao.html'
} }
if ordenacao: ordenacao = ResumoOrdenacao.objects.get_or_create()[0]
try: context.update({
context.update( 'primeiro_ordenacao': dict_ord_template[ordenacao.primeiro],
{'primeiro_ordenacao': dict_ord_template[ordenacao.primeiro],
'segundo_ordenacao': dict_ord_template[ordenacao.segundo], 'segundo_ordenacao': dict_ord_template[ordenacao.segundo],
'terceiro_ordenacao': dict_ord_template[ordenacao.terceiro], 'terceiro_ordenacao': dict_ord_template[ordenacao.terceiro],
'quarto_ordenacao': dict_ord_template[ordenacao.quarto], 'quarto_ordenacao': dict_ord_template[ordenacao.quarto],
@ -1795,42 +1782,7 @@ class ResumoView(DetailView):
'decimo_primeiro_ordenacao': dict_ord_template[ordenacao.decimo_primeiro], 'decimo_primeiro_ordenacao': dict_ord_template[ordenacao.decimo_primeiro],
'decimo_segundo_ordenacao': dict_ord_template[ordenacao.decimo_segundo], 'decimo_segundo_ordenacao': dict_ord_template[ordenacao.decimo_segundo],
'decimo_terceiro_ordenacao': dict_ord_template[ordenacao.decimo_terceiro], 'decimo_terceiro_ordenacao': dict_ord_template[ordenacao.decimo_terceiro],
'decimo_quarto_ordenacao': dict_ord_template[ordenacao.decimo_quarto]}) 'decimo_quarto_ordenacao': dict_ord_template[ordenacao.decimo_quarto]
except KeyError as e:
self.logger.error('user=' + self.request.user.username + '. ' + "KeyError: " + str(e) + ". Erro "
"ao tentar utilizar configuração de ordenação. Utilizando ordenação padrão.")
context.update(
{'primeiro_ordenacao': dict_ord_template['id_basica'],
'segundo_ordenacao': dict_ord_template['cont_mult'],
'terceiro_ordenacao': dict_ord_template['mesa_d'],
'quarto_ordenacao': dict_ord_template['lista_p'],
'quinto_ordenacao': dict_ord_template['exp'],
'sexto_ordenacao': dict_ord_template['mat_exp'],
'setimo_ordenacao': dict_ord_template['v_n_mat_exp'],
'oitavo_ordenacao': dict_ord_template['oradores_exped'],
'nono_ordenacao': dict_ord_template['lista_p_o_d'],
'decimo_ordenacao': dict_ord_template['mat_o_d'],
'decimo_primeiro_ordenacao': dict_ord_template['v_n_mat_o_d'],
'decimo_segundo_ordenacao': dict_ord_template['oradores_o_d'],
'decimo_terceiro_ordenacao': dict_ord_template['oradores_expli'],
'decimo_quarto_ordenacao': dict_ord_template['ocorr_sessao']
})
else:
context.update(
{'primeiro_ordenacao': dict_ord_template['id_basica'],
'segundo_ordenacao': dict_ord_template['cont_mult'],
'terceiro_ordenacao': dict_ord_template['mesa_d'],
'quarto_ordenacao': dict_ord_template['lista_p'],
'quinto_ordenacao': dict_ord_template['exp'],
'sexto_ordenacao': dict_ord_template['mat_exp'],
'setimo_ordenacao': dict_ord_template['v_n_mat_exp'],
'oitavo_ordenacao': dict_ord_template['oradores_exped'],
'nono_ordenacao': dict_ord_template['lista_p_o_d'],
'decimo_ordenacao': dict_ord_template['mat_o_d'],
'decimo_primeiro_ordenacao': dict_ord_template['v_n_mat_o_d'],
'decimo_segundo_ordenacao': dict_ord_template['oradores_o_d'],
'decimo_terceiro_ordenacao': dict_ord_template['oradores_expli'],
'decimo_quarto_ordenacao': dict_ord_template['ocorr_sessao']
}) })
return context return context

Loading…
Cancel
Save