Browse Source

Refatoração

pull/3047/head
João Rodrigues 6 years ago
parent
commit
1df12b0eb0
  1. 71
      sapl/comissoes/forms.py
  2. 9
      sapl/comissoes/migrations/0023_auto_20191211_1752.py
  3. 4
      sapl/comissoes/models.py
  4. 8
      sapl/comissoes/urls.py
  5. 45
      sapl/comissoes/views.py
  6. 42
      sapl/templates/comissoes/cargos_ordenacao.html
  7. 3
      sapl/templates/comissoes/layouts.yaml
  8. 3
      sapl/templates/menu_tabelas_auxiliares.yaml

71
sapl/comissoes/forms.py

@ -12,9 +12,9 @@ from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _
from sapl.base.models import Autor, TipoAutor
from sapl.comissoes.models import (CargoComissao, Comissao,
Composicao, DocumentoAcessorio,
Participacao, Periodo, Reuniao)
from sapl.comissoes.models import (Comissao, Composicao,
DocumentoAcessorio, Participacao,
Periodo, Reuniao)
from sapl.crispy_layout_mixin import (form_actions, SaplFormHelper,
to_row)
from sapl.materia.models import MateriaEmTramitacao, PautaReuniao
@ -79,71 +79,6 @@ class ComposicaoForm(forms.ModelForm):
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
)
def __init__(self, *args, **kwargs):
super(CargosComissaoOrdenacaoForm, self).__init__(**kwargs)
self.fields['posicao'].choices = choices_posicao()
row1 = to_row(
[('cargo', 12)]
)
row2 = to_row(
[('posicao', 12)]
)
self.helper = SaplFormHelper()
self.helper.layout = Layout(
Fieldset(_(''), row1, row2,
form_actions(label="Atualizar"))
)
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']
posicao = cleaned_data['posicao']
if posicao == '0':
cargo.id_ordenacao = None
else:
if CargoComissao.objects.filter(id_ordenacao=posicao).exists():
outro_cargo = CargoComissao.objects.get(id_ordenacao=posicao)
outro_cargo.id_ordenacao = cargo.id_ordenacao
outro_cargo.save()
cargo.id_ordenacao = posicao
else:
cargo.id_ordenacao = posicao
cargo.save()
class PeriodoForm(forms.ModelForm):
logger = logging.getLogger(__name__)

9
sapl/comissoes/migrations/0023_auto_20191210_1532.py → sapl/comissoes/migrations/0023_auto_20191211_1752.py

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-12-10 18:32
# Generated by Django 1.11.20 on 2019-12-11 20:52
from __future__ import unicode_literals
from django.db import migrations, models
@ -23,6 +23,11 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='cargocomissao',
name='id_ordenacao',
field=models.PositiveIntegerField(blank=True, null=True, verbose_name='Id de Ordenacao'),
field=models.PositiveIntegerField(blank=True, null=True, verbose_name='Posição na Ordenação'),
),
migrations.AlterField(
model_name='cargocomissao',
name='nome',
field=models.CharField(max_length=50, verbose_name='Nome do Cargo'),
),
]

4
sapl/comissoes/models.py

@ -122,9 +122,9 @@ class Periodo(models.Model): # PeriodoCompComissao
@reversion.register()
class CargoComissao(models.Model):
id_ordenacao = models.PositiveIntegerField(
blank=True, null=True, verbose_name=_('Id de Ordenacao'),
blank=True, null=True, verbose_name=_('Posição na Ordenação'),
)
nome = models.CharField(max_length=50, verbose_name=_('Cargo'))
nome = models.CharField(max_length=50, verbose_name=_('Nome do Cargo'))
unico = models.BooleanField(
choices=YES_NO_CHOICES, verbose_name=_('Único'), default=True
)

8
sapl/comissoes/urls.py

@ -1,6 +1,6 @@
from django.conf.urls import include, url
from sapl.comissoes.views import (AdicionaPautaView, CargosComissaoOrdenacaoView, CargoCrud,
ComissaoCrud, ComposicaoCrud, DocumentoAcessorioCrud,
from sapl.comissoes.views import (AdicionaPautaView, CargoComissaoCrud, ComissaoCrud,
ComposicaoCrud, DocumentoAcessorioCrud,
MateriasTramitacaoListView, ParticipacaoCrud,
get_participacoes_comissao, PeriodoComposicaoCrud,
RemovePautaView, ReuniaoCrud, TipoComissaoCrud)
@ -22,9 +22,7 @@ urlpatterns = [
url(r'^comissao/(?P<pk>\d+)/pauta/add', AdicionaPautaView.as_view(), name='pauta_add'),
url(r'^comissao/(?P<pk>\d+)/pauta/remove', RemovePautaView.as_view(), name='pauta_remove'),
url(r'^sistema/comissao/cargo/', include(CargoCrud.get_urls())),
url(r'^sistema/comissao/cargos-ordenacao',
CargosComissaoOrdenacaoView.as_view(), name='cargos_comissao_ordenacao'),
url(r'^sistema/comissao/cargo/', include(CargoComissaoCrud.get_urls())),
url(r'^sistema/comissao/periodo-composicao/',
include(PeriodoComposicaoCrud.get_urls())),
url(r'^sistema/comissao/tipo/', include(TipoComissaoCrud.get_urls())),

45
sapl/comissoes/views.py

@ -16,11 +16,11 @@ from django_filters.views import FilterView
from sapl.base.models import AppConfig as AppsAppConfig
from sapl.comissoes.apps import AppConfig
from sapl.comissoes.forms import (CargosComissaoOrdenacaoForm, ComissaoForm,
ComposicaoForm,
from sapl.comissoes.forms import (ComissaoForm, ComposicaoForm,
DocumentoAcessorioCreateForm,
DocumentoAcessorioEditForm,
ParticipacaoCreateForm, ParticipacaoEditForm,
ParticipacaoCreateForm,
ParticipacaoEditForm,
PautaReuniaoFilterSet, PautaReuniaoForm,
PeriodoForm, ReuniaoForm)
from sapl.crud.base import (Crud, CrudAux, MasterDetailCrud,
@ -47,7 +47,10 @@ def pegar_url_reuniao(pk):
url = reverse('sapl.comissoes:reuniao_detail', kwargs={'pk': r_pk})
return url
CargoCrud = CrudAux.build(CargoComissao, 'cargo_comissao')
CargoComissaoCrud = CrudAux.build(
CargoComissao, 'cargo_comissao',
list_field_names=['nome', 'id_ordenacao', 'unico']
)
TipoComissaoCrud = CrudAux.build(
TipoComissao, 'tipo_comissao', list_field_names=[
@ -98,40 +101,6 @@ class ParticipacaoCrud(MasterDetailCrud):
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.get(id_ordenacao=posicao)
tabela_ordenacao.append((posicao, cargo))
else:
tabela_ordenacao.append((posicao, ""))
cargos_desordenados = cargos.filter(id_ordenacao=None)
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):
model = Composicao
parent_field = 'comissao'

42
sapl/templates/comissoes/cargos_ordenacao.html

@ -1,42 +0,0 @@
{% 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>
{% if cargo %}
<td>
<a href="{% url 'sapl.comissoes:cargocomissao_detail' cargo.pk %}">{{ cargo }}</a>
</td>
{% else %}
<td>-</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
<br/>
</div>
</div>
{% endblock %}

3
sapl/templates/comissoes/layouts.yaml

@ -1,7 +1,8 @@
{% load i18n %}
CargoComissao:
{% trans 'Cargo de Comissão' %}:
- nome:10 unico
- nome:6 unico id_ordenacao
Periodo:
{% trans 'Período de composição de Comissão' %}:

3
sapl/templates/menu_tabelas_auxiliares.yaml

@ -59,9 +59,6 @@
- title: {% trans 'Cargo de Comissão' %}
url: sapl.comissoes:cargocomissao_list
css_class: btn btn-link
- title: {% trans 'Ordenação dos Cargos' %}
url: sapl.comissoes:cargos_comissao_ordenacao
css_class: btn btn-link
- title: {% trans 'Período de Composição' %}
url: sapl.comissoes:periodo_list
css_class: btn btn-link

Loading…
Cancel
Save