Browse Source

2806 aprimorar ordem resumo (#2831)

* Iniciando mudança de tela ordenar resumo

* Melhorando visualização e resposta para usuario.

* Apagando antiga maneira de ordenação de resumo

* Corrigindo erros code climate Fix #2806
pull/2761/head
Ulysses Lara 6 years ago
committed by Edward
parent
commit
b80d0ba0cf
  1. 140
      sapl/sessao/forms.py
  2. 7
      sapl/sessao/urls.py
  3. 89
      sapl/sessao/views.py
  4. 62
      sapl/templates/sessao/resumo_ordenacao.html

140
sapl/sessao/forms.py

@ -739,146 +739,6 @@ class PautaSessaoFilterSet(SessaoPlenariaFilterSet):
titulo = _('Pesquisa de Pauta de Sessão') titulo = _('Pesquisa de Pauta de Sessão')
class ResumoOrdenacaoForm(forms.Form):
primeiro = forms.ChoiceField(
label='',
choices=ORDENACAO_RESUMO
)
segundo = forms.ChoiceField(
label='',
choices=ORDENACAO_RESUMO
)
terceiro = forms.ChoiceField(
label='',
choices=ORDENACAO_RESUMO
)
quarto = forms.ChoiceField(
label='',
choices=ORDENACAO_RESUMO
)
quinto = forms.ChoiceField(
label='',
choices=ORDENACAO_RESUMO
)
sexto = forms.ChoiceField(
label='',
choices=ORDENACAO_RESUMO
)
setimo = forms.ChoiceField(
label='',
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):
row1 = to_row(
[('primeiro', 12)])
row2 = to_row(
[('segundo', 12)])
row3 = to_row(
[('terceiro', 12)])
row4 = to_row(
[('quarto', 12)])
row5 = to_row(
[('quinto', 12)])
row6 = to_row(
[('sexto', 12)])
row7 = to_row(
[('setimo', 12)])
row8 = to_row(
[('oitavo', 12)])
row9 = to_row(
[('nono', 12)])
row10 = to_row(
[('decimo', 12)])
row11 = to_row(
[('decimo_primeiro', 12)])
row12 = to_row(
[('decimo_segundo', 12)])
row13 = to_row(
[('decimo_terceiro', 12)])
row14 = to_row(
[('decimo_quarto', 12)]
)
self.helper = SaplFormHelper()
self.helper.layout = Layout(
Fieldset(_(''),
row1, row2, row3, row4, row5,
row6, row7, row8, row9, row10,
row11, row12, row13, row14,
form_actions(label='Atualizar'))
)
super().__init__(*args, **kwargs)
def clean(self):
super(ResumoOrdenacaoForm, self).clean()
if not self.is_valid():
return self.cleaned_data
cleaned_data = self.cleaned_data
for c1 in cleaned_data:
i = 0
for c2 in cleaned_data:
if cleaned_data[str(c1)] == cleaned_data[str(c2)]:
i = i + 1
if i > 1:
raise ValidationError(_(
'Não é possível ter campos repetidos'))
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):
class Meta: class Meta:

7
sapl/sessao/urls.py

@ -11,7 +11,7 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
PesquisarPautaSessaoView, PesquisarPautaSessaoView,
PesquisarSessaoPlenariaView, PesquisarSessaoPlenariaView,
PresencaOrdemDiaView, PresencaView, PresencaOrdemDiaView, PresencaView,
ResumoOrdenacaoView, ResumoView, ResumoAtaView, RetiradaPautaCrud, SessaoCrud, ResumoView, ResumoAtaView, RetiradaPautaCrud, SessaoCrud,
TipoJustificativaCrud, TipoExpedienteCrud, TipoResultadoVotacaoCrud, TipoJustificativaCrud, TipoExpedienteCrud, TipoResultadoVotacaoCrud,
TipoExpedienteCrud, TipoResultadoVotacaoCrud, TipoRetiradaPautaCrud, TipoExpedienteCrud, TipoResultadoVotacaoCrud, TipoRetiradaPautaCrud,
TipoSessaoCrud, VotacaoEditView, TipoSessaoCrud, VotacaoEditView,
@ -33,7 +33,8 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
renumerar_materias_expediente, renumerar_materias_expediente,
sessao_legislativa_legislatura_ajax, sessao_legislativa_legislatura_ajax,
VotacaoEmBlocoOrdemDia, VotacaoEmBlocoExpediente, VotacaoEmBlocoOrdemDia, VotacaoEmBlocoExpediente,
VotacaoEmBlocoSimbolicaView, VotacaoEmBlocoNominalView) VotacaoEmBlocoSimbolicaView, VotacaoEmBlocoNominalView,
resumo_ordenacao)
from .apps import AppConfig from .apps import AppConfig
@ -99,7 +100,7 @@ urlpatterns = [
url(r'^sistema/cargo-bancada/', url(r'^sistema/cargo-bancada/',
include(CargoBancadaCrud.get_urls())), include(CargoBancadaCrud.get_urls())),
url(r'^sistema/resumo-ordenacao/', url(r'^sistema/resumo-ordenacao/',
ResumoOrdenacaoView.as_view(), resumo_ordenacao,
name='resumo_ordenacao'), name='resumo_ordenacao'),
url(r'^sessao/(?P<pk>\d+)/adicionar-varias-materias-expediente/', url(r'^sessao/(?P<pk>\d+)/adicionar-varias-materias-expediente/',
AdicionarVariasMateriasExpediente.as_view(), AdicionarVariasMateriasExpediente.as_view(),

89
sapl/sessao/views.py

@ -1,6 +1,6 @@
import logging import logging
from re import sub from re import sub, search
import ast
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.decorators import permission_required from django.contrib.auth.decorators import permission_required
@ -22,6 +22,8 @@ from django.views.generic.base import RedirectView
from django.views.generic.detail import DetailView from django.views.generic.detail import DetailView
from django.views.generic.edit import FormMixin from django.views.generic.edit import FormMixin
from django_filters.views import FilterView from django_filters.views import FilterView
from django.shortcuts import render
from sapl.base.models import AppConfig as AppsAppConfig from sapl.base.models import AppConfig as AppsAppConfig
from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux, from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux,
@ -41,7 +43,7 @@ from sapl.utils import show_results_filter_set, remover_acentos, get_client_ip,
from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm, from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm,
ExpedienteForm, JustificativaAusenciaForm, OcorrenciaSessaoForm, ListMateriaForm, ExpedienteForm, JustificativaAusenciaForm, OcorrenciaSessaoForm, ListMateriaForm,
MesaForm, OradorExpedienteForm, OradorForm, PautaSessaoFilterSet, MesaForm, OradorExpedienteForm, OradorForm, PautaSessaoFilterSet,
PresencaForm, ResumoOrdenacaoForm, SessaoPlenariaFilterSet, PresencaForm, SessaoPlenariaFilterSet,
SessaoPlenariaForm, VotacaoEditForm, VotacaoForm, SessaoPlenariaForm, VotacaoEditForm, VotacaoForm,
VotacaoNominalForm, RetiradaPautaForm, OradorOrdemDiaForm) VotacaoNominalForm, RetiradaPautaForm, OradorOrdemDiaForm)
from .models import (Bancada, CargoBancada, CargoMesa, from .models import (Bancada, CargoBancada, CargoMesa,
@ -1295,45 +1297,58 @@ def remove_parlamentar_composicao(request):
{'msg': ( {'msg': (
'Selecione algum parlamentar para ser excluido!', 0)}) 'Selecione algum parlamentar para ser excluido!', 0)})
def get_tupla(tupla_key):
class ResumoOrdenacaoView(PermissionRequiredMixin, FormView):
template_name = 'sessao/resumo_ordenacao.html'
form_class = ResumoOrdenacaoForm
permission_required = {'sessao.change_resumoordenacao'}
def get_tupla(self, tupla_key):
for tupla in ORDENACAO_RESUMO: for tupla in ORDENACAO_RESUMO:
if tupla[0] == tupla_key: if tupla[0] == tupla_key:
return tupla return tupla
def get_initial(self): def resumo_ordenacao(request):
ordenacao = ResumoOrdenacao.objects.get_or_create()[0] ordenacao = ResumoOrdenacao.objects.get_or_create()[0]
initial = [
get_tupla(ordenacao.primeiro),
get_tupla(ordenacao.segundo),
get_tupla(ordenacao.terceiro),
get_tupla(ordenacao.quarto),
get_tupla(ordenacao.quinto),
get_tupla(ordenacao.sexto),
get_tupla(ordenacao.setimo),
get_tupla(ordenacao.oitavo),
get_tupla(ordenacao.nono),
get_tupla(ordenacao.decimo),
get_tupla(ordenacao.decimo_primeiro),
get_tupla(ordenacao.decimo_segundo),
get_tupla(ordenacao.decimo_terceiro),
get_tupla(ordenacao.decimo_quarto)
]
context = {
'ordenacao': initial
}
if request.method == 'GET':
return render(request, 'sessao/resumo_ordenacao.html', context)
elif request.method == 'POST':
ordenacao.primeiro = ast.literal_eval(request.POST['0'])[0]
ordenacao.segundo = ast.literal_eval(request.POST['1'])[0]
ordenacao.terceiro = ast.literal_eval(request.POST['2'])[0]
ordenacao.quarto = ast.literal_eval(request.POST['3'])[0]
ordenacao.quinto = ast.literal_eval(request.POST['4'])[0]
ordenacao.sexto = ast.literal_eval(request.POST['5'])[0]
ordenacao.setimo = ast.literal_eval(request.POST['6'])[0]
ordenacao.oitavo = ast.literal_eval(request.POST['7'])[0]
ordenacao.nono = ast.literal_eval(request.POST['8'])[0]
ordenacao.decimo = ast.literal_eval(request.POST['9'])[0]
ordenacao.decimo_primeiro =ast.literal_eval(request.POST['10'])[0]
ordenacao.decimo_segundo = ast.literal_eval(request.POST['11'])[0]
ordenacao.decimo_terceiro = ast.literal_eval(request.POST['12'])[0]
ordenacao.decimo_quarto = ast.literal_eval(request.POST['13'])[0]
ordenacao.save()
msg = _('Ordem salva com sucesso.')
messages.add_message(request, messages.SUCCESS, msg)
initial = { return HttpResponseRedirect(reverse(
'primeiro': self.get_tupla(ordenacao.primeiro), 'sapl.sessao:resumo_ordenacao'))
'segundo': self.get_tupla(ordenacao.segundo),
'terceiro': self.get_tupla(ordenacao.terceiro),
'quarto': self.get_tupla(ordenacao.quarto),
'quinto': self.get_tupla(ordenacao.quinto),
'sexto': self.get_tupla(ordenacao.sexto),
'setimo': self.get_tupla(ordenacao.setimo),
'oitavo': self.get_tupla(ordenacao.oitavo),
'nono': self.get_tupla(ordenacao.nono),
'decimo': self.get_tupla(ordenacao.decimo),
'decimo_primeiro': self.get_tupla(ordenacao.decimo_primeiro),
'decimo_segundo': self.get_tupla(ordenacao.decimo_segundo),
'decimo_terceiro': self.get_tupla(ordenacao.decimo_terceiro),
'decimo_quarto': self.get_tupla(ordenacao.decimo_quarto)
}
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())
def get_turno(turno): def get_turno(turno):

62
sapl/templates/sessao/resumo_ordenacao.html

@ -1,4 +1,5 @@
{% extends "crud/form.html" %} {% extends "base.html" %}
{% load i18n %} {% load i18n %}
{% load crispy_forms_tags %} {% load crispy_forms_tags %}
@ -7,7 +8,64 @@
{% endblock %} {% endblock %}
{% block base_content %} {% block base_content %}
<form id="form" method="post">
{% csrf_token %}
<div class="container" style="margin-top20px; padding:30px;background-color: #364347; border-radius: 15px;">
<div class="row">
<div class="col-sm-1">
<h3 style="color:white;margin-bottom: 20px">Ordem</h3>
<ul class="list-group">
{% for item in ordenacao %}
<li class="list-group-item list-group-item-dark">
{{forloop.counter}}º
</li>
{% endfor %}
<ul>
</div>
<div class="col-sm">
<h3 style="color:white; margin-bottom: 20px;">Tópico</h3>
<ul class="list-group" id="sortable">
{% for item in ordenacao %}
<li class="list-group-item d-flex justify-content-between align-items-center ">
<input type="hidden" name="{{forloop.counter0}}" value="{{item}}">
{{item.1}}
<spam class="ui-icon ui-icon-arrowthick-2-n-s"></spam>
</li>
{% endfor %}
<ul>
</div>
</div>
</div>
<div class="form-group row justify-content-between" style="margin-top:25px">
<a href="{% url 'sapl.base:sistema'%}" class="btn btn-dark">Cancelar</a>
<a class="btn btn-primary float-right" style="color:white" id="submit">Salvar</a>
</div>
{% crispy form %} </form>
{% endblock %}
{% block extra_js %}
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
$(function() {
$( "#sortable" ).sortable();
$( "#sortable" ).disableSelection();
let revalue = () => {
let aux = 0;
$("#sortable li input").each((index,obj) => {
obj.name = aux;
aux++;
})
$("#form").submit()
}
document.getElementById("submit").onclick = revalue
});
</script>
{% endblock %} {% endblock %}

Loading…
Cancel
Save