Browse Source

Adiciona ordenação de cargos de comissão

pull/3047/head
João Rodrigues 6 years ago
parent
commit
ade38de16f
  1. 63
      sapl/comissoes/forms.py
  2. 55
      sapl/comissoes/views.py
  3. 37
      sapl/templates/comissoes/cargos_ordenacao.html

63
sapl/comissoes/forms.py

@ -12,16 +12,16 @@ from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from sapl.base.models import Autor, TipoAutor from sapl.base.models import Autor, TipoAutor
from sapl.comissoes.models import (Comissao, Composicao, from sapl.comissoes.models import (CargoComissao, Comissao,
DocumentoAcessorio, Participacao, Composicao, DocumentoAcessorio,
Periodo, Reuniao) Participacao, Periodo, Reuniao)
from sapl.crispy_layout_mixin import (form_actions, SaplFormHelper, from sapl.crispy_layout_mixin import (form_actions, SaplFormHelper,
to_row) to_row)
from sapl.materia.models import MateriaEmTramitacao, PautaReuniao from sapl.materia.models import MateriaEmTramitacao, PautaReuniao
from sapl.parlamentares.models import (Legislatura, Mandato, from sapl.parlamentares.models import (Legislatura, Mandato,
Parlamentar) Parlamentar)
from sapl.utils import (FileFieldCheckMixin, FilterOverridesMetaMixin, from sapl.utils import (FileFieldCheckMixin,
validar_arquivo) FilterOverridesMetaMixin, validar_arquivo)
class ComposicaoForm(forms.ModelForm): class ComposicaoForm(forms.ModelForm):
@ -79,6 +79,57 @@ class ComposicaoForm(forms.ModelForm):
return cleaned_data return cleaned_data
def choices_posicao():
posicoes = list(range(1, len(CargoComissao.objects.all())+1))
choices = [(posicao, str(posicao)+"º") for posicao in posicoes]
choices.insert(0, (0, "Não definida"))
return choices
class CargosComissaoOrdenacaoForm(forms.Form):
cargo = forms.ModelChoiceField(
label='Cargo',
required=True,
empty_label='Selecione um cargo',
queryset=CargoComissao.objects.all().order_by('id_ordenacao')
)
posicao = forms.ChoiceField(
label='Posição',
required=True,
choices=choices_posicao()
)
def __init__(self, *args, **kwargs):
row1 = to_row(
[('cargo', 12)]
)
row2 = to_row(
[('posicao', 12)]
)
self.helper = SaplFormHelper()
self.helper.layout = Layout(
Fieldset(_(''), row1, row2,
form_actions(label="Atualizar"))
)
super().__init__(*args, **kwargs)
def clean(self):
super(CargosComissaoOrdenacaoForm, self).clean
if not self.is_valid():
return self.cleaned_data
def save(self):
cleaned_data = self.cleaned_data
cargo = cleaned_data['cargo']
cargo.id_ordenacao = cleaned_data['posicao']
cargo.save()
class PeriodoForm(forms.ModelForm): class PeriodoForm(forms.ModelForm):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

55
sapl/comissoes/views.py

@ -1,12 +1,12 @@
import logging import logging
from django.core.urlresolvers import reverse
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.mixins import PermissionRequiredMixin from django.contrib.auth.mixins import PermissionRequiredMixin
from django.core.urlresolvers import reverse
from django.db.models import F from django.db.models import F
from django.http.response import HttpResponseRedirect, JsonResponse from django.http.response import HttpResponseRedirect, JsonResponse
from django.views.decorators.clickjacking import xframe_options_exempt from django.views.decorators.clickjacking import xframe_options_exempt
from django.views.generic import ListView, CreateView, DeleteView from django.views.generic import CreateView, DeleteView, FormView, ListView
from django.views.generic.base import RedirectView 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, UpdateView from django.views.generic.edit import FormMixin, UpdateView
@ -16,17 +16,18 @@ from django_filters.views import FilterView
from sapl.base.models import AppConfig as AppsAppConfig from sapl.base.models import AppConfig as AppsAppConfig
from sapl.comissoes.apps import AppConfig from sapl.comissoes.apps import AppConfig
from sapl.comissoes.forms import (ComissaoForm, ComposicaoForm, from sapl.comissoes.forms import (CargosComissaoOrdenacaoForm, ComissaoForm,
ComposicaoForm,
DocumentoAcessorioCreateForm, DocumentoAcessorioCreateForm,
DocumentoAcessorioEditForm, DocumentoAcessorioEditForm,
ParticipacaoCreateForm, ParticipacaoEditForm, ParticipacaoCreateForm, ParticipacaoEditForm,
PautaReuniaoForm, PeriodoForm, ReuniaoForm, PautaReuniaoFilterSet, PautaReuniaoForm,
PautaReuniaoFilterSet) PeriodoForm, ReuniaoForm)
from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux, from sapl.crud.base import (Crud, CrudAux, MasterDetailCrud,
MasterDetailCrud, PermissionRequiredForAppCrudMixin, RP_DETAIL,
PermissionRequiredForAppCrudMixin) RP_LIST)
from sapl.materia.models import (MateriaLegislativa, Tramitacao, PautaReuniao, from sapl.materia.models import (MateriaEmTramitacao, MateriaLegislativa,
MateriaEmTramitacao) PautaReuniao, Tramitacao)
from sapl.utils import show_results_filter_set from sapl.utils import show_results_filter_set
from .models import (CargoComissao, Comissao, Composicao, DocumentoAcessorio, from .models import (CargoComissao, Comissao, Composicao, DocumentoAcessorio,
@ -97,6 +98,40 @@ class ParticipacaoCrud(MasterDetailCrud):
composicao_pk) composicao_pk)
class CargosComissaoOrdenacaoView(PermissionRequiredMixin, FormView):
template_name = 'comissoes/cargos_ordenacao.html'
form_class = CargosComissaoOrdenacaoForm
permission_required = ('base.list_appconfig',)
def get_context_data(self, **kwargs):
context = super(CargosComissaoOrdenacaoView, self).get_context_data(**kwargs)
cargos = CargoComissao.objects.all()
posicoes = list(range(1, len(cargos)+1))
tabela_ordenacao = []
for posicao in posicoes:
if cargos.filter(id_ordenacao=posicao):
cargo = cargos.filter(id_ordenacao=posicao)
tabela_ordenacao.append((posicao, cargo[0]))
else:
tabela_ordenacao.append((posicao, "-"))
cargos_desordenados = cargos.filter(id_ordenacao="Não definido")
for cargo_desordenado in cargos_desordenados:
tabela_ordenacao.append(("Não definida", cargo_desordenado))
context['cargos'] = tabela_ordenacao
return context
def get_success_url(self):
return reverse('sapl.comissoes:cargos_comissao_ordenacao')
def form_valid(self, form):
form.save()
return HttpResponseRedirect(self.get_success_url())
class ComposicaoCrud(MasterDetailCrud): class ComposicaoCrud(MasterDetailCrud):
model = Composicao model = Composicao
parent_field = 'comissao' parent_field = 'comissao'

37
sapl/templates/comissoes/cargos_ordenacao.html

@ -0,0 +1,37 @@
{% extends "crud/form.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block title %}
<h1 class="page-header">Ordenação dos Cargos</h1>
{% endblock %}
{% block base_content %}
<div class="row">
<div class="col-md-6">
<br/><h3><b>Atualizar Ordenação</b></h3><br/>
{% crispy form %}
</div>
<div class="col-md-6">
<br/>
<h3><b>Ordenação Atual</b></h3><br/>
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Posição</th>
<th>Cargo</th>
</tr>
</thead>
<tbody>
{% for posicao, cargo in cargos %}
<tr>
<td>{{ posicao }}</td>
<td>{{ cargo }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<br/>
</div>
</div>
{% endblock %}
Loading…
Cancel
Save