Browse Source

Ref autoria create c uso de autores por contexto

pull/1356/head
LeandroRoberto 8 years ago
parent
commit
d34672f9a9
  1. 8
      sapl/api/forms.py
  2. 19
      sapl/materia/forms.py
  3. 84
      sapl/materia/views.py
  4. 8
      sapl/templates/materia/autoria_form.html

8
sapl/api/forms.py

@ -175,9 +175,9 @@ class AutoresPossiveisFilterSet(FilterSet):
if not data_relativa:
data_relativa = timezone.now()
data_relativa_na_legislatura_atual = Legislatura.objects.filter(
data_inicio__lte=timezone.now(),
data_fim__gte=timezone.now()).exists()
legislatura_relativa = Legislatura.objects.filter(
data_inicio__lte=data_relativa,
data_fim__gte=data_relativa).first()
params = {
'parlamentar_set__mandato__data_inicio_mandato__lte':
@ -185,7 +185,7 @@ class AutoresPossiveisFilterSet(FilterSet):
'parlamentar_set__mandato__data_fim_mandato__gte': data_relativa
}
if data_relativa_na_legislatura_atual:
if legislatura_relativa.atual():
params['parlamentar_set__ativo'] = True
qs = queryset.filter(**params).distinct()

19
sapl/materia/forms.py

@ -14,16 +14,15 @@ from django.core.urlresolvers import reverse
from django.db import models, transaction
from django.db.models import Max
from django.forms import ModelForm, ModelChoiceField, widgets
from django.forms.fields import BooleanField
from django.forms.forms import Form
from django.forms.widgets import Select
from django.forms.widgets import Select, HiddenInput
from django.utils import six
from django.utils.encoding import force_text
from django.utils.html import format_html
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
from django_filters.filterset import STRICTNESS
import django_filters
from sapl.base.models import Autor, TipoAutor
@ -693,10 +692,13 @@ class AutoriaForm(ModelForm):
tipo_autor = ModelChoiceField(label=_('Tipo Autor'),
required=False,
queryset=
TipoAutor.objects.all().order_by('descricao'),
queryset=TipoAutor.objects.all().order_by(
'descricao'),
empty_label='Selecione',)
data_relativa = forms.DateField(
widget=forms.HiddenInput())
def __init__(self, *args, **kwargs):
super(AutoriaForm, self).__init__(*args, **kwargs)
@ -707,11 +709,14 @@ class AutoriaForm(ModelForm):
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(_('Autoria'),
row1, form_actions(save_label='Salvar')))
row1, 'data_relativa', form_actions(save_label='Salvar')))
if not kwargs['instance']:
self.fields['autor'].choices = []
class Meta:
model = Autoria
fields = ['tipo_autor', 'autor', 'primeiro_autor']
fields = ['tipo_autor', 'autor', 'primeiro_autor', 'data_relativa']
def clean(self):
super(AutoriaForm, self).clean()

84
sapl/materia/views.py

@ -2,23 +2,6 @@ from datetime import datetime, date
from random import choice
from string import ascii_letters, digits
from .email_utils import do_envia_email_confirmacao
from .forms import (AcessorioEmLoteFilterSet, AcompanhamentoMateriaForm,
AdicionarVariasAutoriasFilterSet, DespachoInicialForm,
DocumentoAcessorioForm, MateriaAssuntoForm,
MateriaLegislativaFilterSet, MateriaSimplificadaForm,
PrimeiraTramitacaoEmLoteFilterSet, ReceberProposicaoForm,
RelatoriaForm, TramitacaoEmLoteFilterSet,
filtra_tramitacao_destino,
filtra_tramitacao_destino_and_status,
filtra_tramitacao_status)
from .models import (AcompanhamentoMateria, Anexada, AssuntoMateria, Autoria,
DespachoInicial, DocumentoAcessorio, MateriaAssunto,
MateriaLegislativa, Numeracao, Orgao, Origem, Proposicao,
RegimeTramitacao, Relatoria, StatusTramitacao,
TipoDocumento, TipoFimRelatoria, TipoMateriaLegislativa,
TipoProposicao, Tramitacao, UnidadeTramitacao)
from .signals import tramitacao_signal
from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML
from django import forms
@ -39,7 +22,7 @@ from django.views.generic import CreateView, ListView, TemplateView, UpdateView
from django.views.generic.base import RedirectView
from django.views.generic.edit import FormView
from django_filters.views import FilterView
import sapl
from sapl.base.models import Autor, CasaLegislativa
from sapl.comissoes.models import Comissao
from sapl.comissoes.models import Comissao, Participacao
@ -62,7 +45,25 @@ from sapl.protocoloadm.models import Protocolo
from sapl.utils import (TURNO_TRAMITACAO_CHOICES, YES_NO_CHOICES, autor_label,
autor_modal, gerar_hash_arquivo, get_base_url,
montar_row_autor)
import sapl
from .email_utils import do_envia_email_confirmacao
from .forms import (AcessorioEmLoteFilterSet, AcompanhamentoMateriaForm,
AdicionarVariasAutoriasFilterSet, DespachoInicialForm,
DocumentoAcessorioForm, MateriaAssuntoForm,
MateriaLegislativaFilterSet, MateriaSimplificadaForm,
PrimeiraTramitacaoEmLoteFilterSet, ReceberProposicaoForm,
RelatoriaForm, TramitacaoEmLoteFilterSet,
filtra_tramitacao_destino,
filtra_tramitacao_destino_and_status,
filtra_tramitacao_status)
from .models import (AcompanhamentoMateria, Anexada, AssuntoMateria, Autoria,
DespachoInicial, DocumentoAcessorio, MateriaAssunto,
MateriaLegislativa, Numeracao, Orgao, Origem, Proposicao,
RegimeTramitacao, Relatoria, StatusTramitacao,
TipoDocumento, TipoFimRelatoria, TipoMateriaLegislativa,
TipoProposicao, Tramitacao, UnidadeTramitacao)
from .signals import tramitacao_signal
AssuntoMateriaCrud = Crud.build(AssuntoMateria, 'assunto_materia')
@ -93,8 +94,8 @@ def proposicao_texto(request, pk):
if proposicao.texto_original:
if (not proposicao.data_recebimento and
proposicao.autor.user_id != request.user.id):
raise Http404
proposicao.autor.user_id != request.user.id):
raise Http404
arquivo = proposicao.texto_original
@ -1093,24 +1094,27 @@ class AutoriaCrud(MasterDetailCrud):
def layout_key(self):
return 'AutoriaCreate'
def get_context_data(self, **kwargs):
context = super(CreateView, self).get_context_data(**kwargs)
autores_ativos = self.autores_ativos()
autores = []
context['form'].fields['autor'].choices = autores
return context
def get_initial(self):
initial = super().get_initial()
materia = MateriaLegislativa.objects.get(id=self.kwargs['pk'])
initial['data_relativa'] = materia.data_apresentacao
initial['autor'] = []
return initial
def autores_ativos(self):
lista_parlamentares = Parlamentar.objects.filter(ativo=True).values_list('id', flat=True)
lista_parlamentares = Parlamentar.objects.filter(
ativo=True).values_list('id', flat=True)
model_parlamentar = ContentType.objects.get_for_model(Parlamentar)
autor_parlamentar = Autor.objects.filter(content_type=model_parlamentar, object_id__in=lista_parlamentares)
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)
lista_comissoes = Comissao.objects.filter(Q(data_extincao__isnull=True) | Q(
data_extincao__gt=date.today())).values_list('id', flat=True)
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])
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
@ -1516,9 +1520,9 @@ class AcompanhamentoMateriaView(CreateView):
base_url = get_base_url(request)
destinatario = AcompanhamentoMateria.objects.get(
materia=materia,
email=email,
confirmado=False)
materia=materia,
email=email,
confirmado=False)
casa = CasaLegislativa.objects.first()
do_envia_email_confirmacao(base_url,
@ -1699,10 +1703,10 @@ class TramitacaoEmLoteView(PrimeiraTramitacaoEmLoteView):
context['primeira_tramitacao'] = False
if ('tramitacao__status' in qr and
'tramitacao__unidade_tramitacao_destino' in qr and
qr['tramitacao__status'] and
qr['tramitacao__unidade_tramitacao_destino']
):
'tramitacao__unidade_tramitacao_destino' in qr and
qr['tramitacao__status'] and
qr['tramitacao__unidade_tramitacao_destino']
):
lista = filtra_tramitacao_destino_and_status(
qr['tramitacao__status'],
qr['tramitacao__unidade_tramitacao_destino'])

8
sapl/templates/materia/autoria_form.html

@ -19,9 +19,13 @@
$("#id_autor option").remove()
var selected = $("#id_tipo_autor").val();
if (selected !== undefined && selected !== null) {
$.getJSON("/api/autor?tipo=" + selected, function(data){
var json_data = {
tipo : selected,
data_relativa : $("#id_data_relativa").val()
}
$.getJSON("/api/autor/possiveis", json_data, function(data){
if (data) {
var results = data.results.sort(compare);
var results = data.sort(compare);
if (results.length > 1) {
$("#id_autor").append("<option>-----</option>");
}

Loading…
Cancel
Save