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')
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 Meta:

7
sapl/sessao/urls.py

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

89
sapl/sessao/views.py

@ -1,6 +1,6 @@
import logging
from re import sub
from re import sub, search
import ast
from django.contrib import messages
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.edit import FormMixin
from django_filters.views import FilterView
from django.shortcuts import render
from sapl.base.models import AppConfig as AppsAppConfig
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,
ExpedienteForm, JustificativaAusenciaForm, OcorrenciaSessaoForm, ListMateriaForm,
MesaForm, OradorExpedienteForm, OradorForm, PautaSessaoFilterSet,
PresencaForm, ResumoOrdenacaoForm, SessaoPlenariaFilterSet,
PresencaForm, SessaoPlenariaFilterSet,
SessaoPlenariaForm, VotacaoEditForm, VotacaoForm,
VotacaoNominalForm, RetiradaPautaForm, OradorOrdemDiaForm)
from .models import (Bancada, CargoBancada, CargoMesa,
@ -1295,45 +1297,58 @@ def remove_parlamentar_composicao(request):
{'msg': (
'Selecione algum parlamentar para ser excluido!', 0)})
class ResumoOrdenacaoView(PermissionRequiredMixin, FormView):
template_name = 'sessao/resumo_ordenacao.html'
form_class = ResumoOrdenacaoForm
permission_required = {'sessao.change_resumoordenacao'}
def get_tupla(self, tupla_key):
def get_tupla(tupla_key):
for tupla in ORDENACAO_RESUMO:
if tupla[0] == tupla_key:
return tupla
def get_initial(self):
ordenacao = ResumoOrdenacao.objects.get_or_create()[0]
def resumo_ordenacao(request):
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 = {
'primeiro': self.get_tupla(ordenacao.primeiro),
'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())
return HttpResponseRedirect(reverse(
'sapl.sessao:resumo_ordenacao'))
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 crispy_forms_tags %}
@ -7,7 +8,64 @@
{% endblock %}
{% 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 %}

Loading…
Cancel
Save