Browse Source

Inicia lógica para filtrar por autores ativos

pull/1323/head
Eduardo Calil 9 years ago
parent
commit
fa61346965
  1. 12
      sapl/materia/forms.py
  2. 82
      sapl/materia/views.py
  3. 25
      sapl/templates/materia/autoria_form.html

12
sapl/materia/forms.py

@ -654,18 +654,6 @@ class AutoriaForm(ModelForm):
TipoAutor.objects.all().order_by('descricao'), TipoAutor.objects.all().order_by('descricao'),
empty_label='Selecione',) empty_label='Selecione',)
def __init__(self, *args, **kwargs):
super(AutoriaForm, self).__init__(*args, **kwargs)
row1 = to_row([('tipo_autor', 4),
('autor', 4),
('primeiro_autor', 4)])
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(_('Autoria'),
row1, form_actions(save_label='Salvar')))
class Meta: class Meta:
model = Autoria model = Autoria
fields = ['tipo_autor', 'autor', 'primeiro_autor'] fields = ['tipo_autor', 'autor', 'primeiro_autor']

82
sapl/materia/views.py

@ -40,7 +40,7 @@ from django.views.generic.base import RedirectView
from django.views.generic.edit import FormView from django.views.generic.edit import FormView
from django_filters.views import FilterView from django_filters.views import FilterView
import sapl import sapl
from sapl.base.models import Autor, CasaLegislativa from sapl.base.models import Autor, CasaLegislativa, TipoAutor
from sapl.comissoes.models import Comissao from sapl.comissoes.models import Comissao
from sapl.comissoes.models import Comissao, Participacao from sapl.comissoes.models import Comissao, Participacao
from sapl.compilacao.models import (STATUS_TA_IMMUTABLE_RESTRICT, from sapl.compilacao.models import (STATUS_TA_IMMUTABLE_RESTRICT,
@ -57,8 +57,9 @@ from sapl.materia.forms import (AnexadaForm, ConfirmarProposicaoForm,
TramitacaoUpdateForm) TramitacaoUpdateForm)
from sapl.materia.models import Autor from sapl.materia.models import Autor
from sapl.norma.models import LegislacaoCitada from sapl.norma.models import LegislacaoCitada
from sapl.parlamentares.models import Parlamentar from sapl.parlamentares.models import Frente, Mandato, Parlamentar
from sapl.protocoloadm.models import Protocolo from sapl.protocoloadm.models import Protocolo
from sapl.sessao.models import Bancada, Bloco
from sapl.utils import (TURNO_TRAMITACAO_CHOICES, YES_NO_CHOICES, autor_label, from sapl.utils import (TURNO_TRAMITACAO_CHOICES, YES_NO_CHOICES, autor_label,
autor_modal, gerar_hash_arquivo, get_base_url, autor_modal, gerar_hash_arquivo, get_base_url,
montar_row_autor) montar_row_autor)
@ -1068,6 +1069,62 @@ class DocumentoAcessorioCrud(MasterDetailCrud):
return context return context
def filtra_ativos(content_type):
if content_type == Parlamentar:
mandatos_ativos = Mandato.objects.filter()
return
elif content_type == Comissao:
return
elif content_type == Frente:
return
elif content_type == Bancada:
return
elif content_type == Bloco:
return
elif content_type == Orgao:
return
def autores_ativos(tipo=None):
content_types_list = []
for ta in TipoAutor:
if ta.content_type:
content_types_list.append(ta.content_type)
autores_by_ct = {}
for ct in content_types_list:
autores_by_ct[str(ct.id)] = filtra_ativos(ct)
# model_parlamentar = ContentType.objects.get_for_model(
# Parlamentar)
# model_comissao = ContentType.objects.get_for_model(Comissao)
#
# lista_parlamentares = Parlamentar.objects.filter(
# ativo=True).values_list(
# 'id', flat=True)
# autor_parlamentar = Autor.objects.filter(
# content_type=model_parlamentar,
# object_id__in=lista_parlamentares)
#
# lista_comissoes = Comissao.objects.filter(
# Q(data_extincao__isnull=True)|Q(
# data_extincao__gt=date.today())).values_list(
# 'id', flat=True)
#
# autor_comissoes = Autor.objects.filter(
# content_type=model_comissao,
# object_id__in=lista_comissoes)
# autores_outros = Autor.objects.exclude(
# content_type__in=[model_parlamentar,
# model_comissao])
# q = autor_parlamentar | autor_comissoes | autores_outros
return q
def atualizar_autores(request):
pass
class AutoriaCrud(MasterDetailCrud): class AutoriaCrud(MasterDetailCrud):
model = Autoria model = Autoria
parent_field = 'materia' parent_field = 'materia'
@ -1083,26 +1140,21 @@ class AutoriaCrud(MasterDetailCrud):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(CreateView, self).get_context_data(**kwargs) context = super(CreateView, self).get_context_data(**kwargs)
autores_ativos = self.autores_ativos() autores_ativos_list = autores_ativos()
autores = [] autores = []
for a in autores_ativos: for a in autores_ativos_list:
autores.append([a.id, a.__str__()]) autores.append([a.id, a.__str__()])
context['form'].fields['autor'].choices = autores context['form'].fields['autor'].choices = autores
return context return context
def autores_ativos(self): class UpdateView(MasterDetailCrud.UpdateView):
lista_parlamentares = Parlamentar.objects.filter(ativo=True).values_list('id', flat=True) form_class = AutoriaForm
model_parlamentar = ContentType.objects.get_for_model(Parlamentar)
autor_parlamentar = Autor.objects.filter(content_type=model_parlamentar, object_id__in=lista_parlamentares) @property
def layout_key(self):
lista_comissoes = Comissao.objects.filter(Q(data_extincao__isnull=True)|Q(data_extincao__gt=date.today())).values_list('id', flat=True) return 'AutoriaUpdate'
model_comissao = ContentType.objects.get_for_model(Comissao)
autor_comissoes = Autor.objects.filter(content_type=model_comissao, object_id__in=lista_comissoes)
autores_outros = Autor.objects.exclude(content_type__in=[model_parlamentar, model_comissao])
q = autor_parlamentar | autor_comissoes | autores_outros
return q
class DespachoInicialCrud(MasterDetailCrud): class DespachoInicialCrud(MasterDetailCrud):

25
sapl/templates/materia/autoria_form.html

@ -0,0 +1,25 @@
{% extends "crud/form.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% load common_tags %}
{% block extra_js %}
<script language="Javascript">
function atualizar_autores() {
var tipo_autor = $("#id_tipo_autor").val();
var materia_id = {{ root_pk }}
$.get("/materia/autoria/atualizar-autores",
{tipo_autor: tipo_autor, materia_id: materia_id},
function(data) {
});
}
$("#id_tipo_autor").change(function () {
atualizar_autores();
});
</script>
{% endblock %}
Loading…
Cancel
Save