diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py index d453d8991..67131bdfa 100644 --- a/sapl/protocoloadm/forms.py +++ b/sapl/protocoloadm/forms.py @@ -352,6 +352,16 @@ class ProtocoloMateriaForm(ModelForm): assunto_ementa = forms.CharField(required=True, widget=forms.Textarea, label='Ementa') + + def clean_autor(self): + autor_field = self.cleaned_data['autor'] + try: + autor = Autor.objects.get(id=autor_field) + except ObjectDoesNotExist: + autor_field = None + else: + autor_field = autor + return autor_field class Meta: @@ -379,7 +389,7 @@ class ProtocoloMateriaForm(ModelForm): Fieldset(_('Identificação da Matéria'), row1, row2, row3, row4, form_actions(save_label='Protocolar Matéria'))) - + super(ProtocoloMateriaForm, self).__init__( *args, **kwargs) diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index a9fe486c2..8de8957d0 100644 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -1,8 +1,10 @@ from datetime import date, datetime + from braces.views import FormValidMessageMixin from django.contrib import messages from django.contrib.auth.mixins import PermissionRequiredMixin +from django.db.models import Q from django.core.exceptions import ObjectDoesNotExist from django.core.urlresolvers import reverse from django.db.models import Max @@ -28,6 +30,10 @@ from .forms import (AnularProcoloAdmForm, DocumentoAcessorioAdministrativoForm, from .models import (DocumentoAcessorioAdministrativo, DocumentoAdministrativo, Protocolo, StatusTramitacaoAdministrativo, TipoDocumentoAdministrativo, TramitacaoAdministrativo) +from sapl.parlamentares.models import Parlamentar +from sapl.protocoloadm.models import Protocolo +from sapl.comissoes.models import Comissao +from django.contrib.contenttypes.models import ContentType TipoDocumentoAdministrativoCrud = CrudAux.build( TipoDocumentoAdministrativo, '') @@ -440,6 +446,30 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView): protocolo.save() return redirect(self.get_success_url(protocolo)) + + def get_context_data(self, **kwargs): + context = super(CreateView, self).get_context_data(**kwargs) + autores_ativos = self.autores_ativos() + + autores = [] + for a in autores_ativos: + autores.append([a.id, a.__str__()]) + + context['form'].fields['autor'].choices = autores + return context + + + def autores_ativos(self): + 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) + + 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]) + q = autor_parlamentar | autor_comissoes | autores_outros + return q class ProtocoloMateriaTemplateView(PermissionRequiredMixin, TemplateView):