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: if not data_relativa:
data_relativa = timezone.now() data_relativa = timezone.now()
data_relativa_na_legislatura_atual = Legislatura.objects.filter( legislatura_relativa = Legislatura.objects.filter(
data_inicio__lte=timezone.now(), data_inicio__lte=data_relativa,
data_fim__gte=timezone.now()).exists() data_fim__gte=data_relativa).first()
params = { params = {
'parlamentar_set__mandato__data_inicio_mandato__lte': 'parlamentar_set__mandato__data_inicio_mandato__lte':
@ -185,7 +185,7 @@ class AutoresPossiveisFilterSet(FilterSet):
'parlamentar_set__mandato__data_fim_mandato__gte': data_relativa 'parlamentar_set__mandato__data_fim_mandato__gte': data_relativa
} }
if data_relativa_na_legislatura_atual: if legislatura_relativa.atual():
params['parlamentar_set__ativo'] = True params['parlamentar_set__ativo'] = True
qs = queryset.filter(**params).distinct() 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 import models, transaction
from django.db.models import Max from django.db.models import Max
from django.forms import ModelForm, ModelChoiceField, widgets from django.forms import ModelForm, ModelChoiceField, widgets
from django.forms.fields import BooleanField
from django.forms.forms import Form 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 import six
from django.utils.encoding import force_text from django.utils.encoding import force_text
from django.utils.html import format_html from django.utils.html import format_html
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django_filters.filterset import STRICTNESS from django_filters.filterset import STRICTNESS
import django_filters import django_filters
from sapl.base.models import Autor, TipoAutor from sapl.base.models import Autor, TipoAutor
@ -693,10 +692,13 @@ class AutoriaForm(ModelForm):
tipo_autor = ModelChoiceField(label=_('Tipo Autor'), tipo_autor = ModelChoiceField(label=_('Tipo Autor'),
required=False, required=False,
queryset= queryset=TipoAutor.objects.all().order_by(
TipoAutor.objects.all().order_by('descricao'), 'descricao'),
empty_label='Selecione',) empty_label='Selecione',)
data_relativa = forms.DateField(
widget=forms.HiddenInput())
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(AutoriaForm, self).__init__(*args, **kwargs) super(AutoriaForm, self).__init__(*args, **kwargs)
@ -707,11 +709,14 @@ class AutoriaForm(ModelForm):
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
Fieldset(_('Autoria'), 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: class Meta:
model = Autoria model = Autoria
fields = ['tipo_autor', 'autor', 'primeiro_autor'] fields = ['tipo_autor', 'autor', 'primeiro_autor', 'data_relativa']
def clean(self): def clean(self):
super(AutoriaForm, self).clean() super(AutoriaForm, self).clean()

84
sapl/materia/views.py

@ -2,23 +2,6 @@ from datetime import datetime, date
from random import choice from random import choice
from string import ascii_letters, digits 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.helper import FormHelper
from crispy_forms.layout import HTML from crispy_forms.layout import HTML
from django import forms 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.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
from sapl.base.models import Autor, CasaLegislativa from sapl.base.models import Autor, CasaLegislativa
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
@ -62,7 +45,25 @@ from sapl.protocoloadm.models import Protocolo
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)
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') AssuntoMateriaCrud = Crud.build(AssuntoMateria, 'assunto_materia')
@ -93,8 +94,8 @@ def proposicao_texto(request, pk):
if proposicao.texto_original: if proposicao.texto_original:
if (not proposicao.data_recebimento and if (not proposicao.data_recebimento and
proposicao.autor.user_id != request.user.id): proposicao.autor.user_id != request.user.id):
raise Http404 raise Http404
arquivo = proposicao.texto_original arquivo = proposicao.texto_original
@ -1093,24 +1094,27 @@ class AutoriaCrud(MasterDetailCrud):
def layout_key(self): def layout_key(self):
return 'AutoriaCreate' return 'AutoriaCreate'
def get_context_data(self, **kwargs): def get_initial(self):
context = super(CreateView, self).get_context_data(**kwargs) initial = super().get_initial()
autores_ativos = self.autores_ativos() materia = MateriaLegislativa.objects.get(id=self.kwargs['pk'])
initial['data_relativa'] = materia.data_apresentacao
autores = [] initial['autor'] = []
return initial
context['form'].fields['autor'].choices = autores
return context
def autores_ativos(self): 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) 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) model_comissao = ContentType.objects.get_for_model(Comissao)
autor_comissoes = Autor.objects.filter(content_type=model_comissao, object_id__in=lista_comissoes) autor_comissoes = Autor.objects.filter(
autores_outros = Autor.objects.exclude(content_type__in=[model_parlamentar, model_comissao]) 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 q = autor_parlamentar | autor_comissoes | autores_outros
return q return q
@ -1516,9 +1520,9 @@ class AcompanhamentoMateriaView(CreateView):
base_url = get_base_url(request) base_url = get_base_url(request)
destinatario = AcompanhamentoMateria.objects.get( destinatario = AcompanhamentoMateria.objects.get(
materia=materia, materia=materia,
email=email, email=email,
confirmado=False) confirmado=False)
casa = CasaLegislativa.objects.first() casa = CasaLegislativa.objects.first()
do_envia_email_confirmacao(base_url, do_envia_email_confirmacao(base_url,
@ -1699,10 +1703,10 @@ class TramitacaoEmLoteView(PrimeiraTramitacaoEmLoteView):
context['primeira_tramitacao'] = False context['primeira_tramitacao'] = False
if ('tramitacao__status' in qr and if ('tramitacao__status' in qr and
'tramitacao__unidade_tramitacao_destino' in qr and 'tramitacao__unidade_tramitacao_destino' in qr and
qr['tramitacao__status'] and qr['tramitacao__status'] and
qr['tramitacao__unidade_tramitacao_destino'] qr['tramitacao__unidade_tramitacao_destino']
): ):
lista = filtra_tramitacao_destino_and_status( lista = filtra_tramitacao_destino_and_status(
qr['tramitacao__status'], qr['tramitacao__status'],
qr['tramitacao__unidade_tramitacao_destino']) qr['tramitacao__unidade_tramitacao_destino'])

8
sapl/templates/materia/autoria_form.html

@ -19,9 +19,13 @@
$("#id_autor option").remove() $("#id_autor option").remove()
var selected = $("#id_tipo_autor").val(); var selected = $("#id_tipo_autor").val();
if (selected !== undefined && selected !== null) { 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) { if (data) {
var results = data.results.sort(compare); var results = data.sort(compare);
if (results.length > 1) { if (results.length > 1) {
$("#id_autor").append("<option>-----</option>"); $("#id_autor").append("<option>-----</option>");
} }

Loading…
Cancel
Save