Browse Source

Fix #1694

pull/1696/head
VictorFabreF 8 years ago
parent
commit
32ddaceba8
  1. 49
      sapl/comissoes/forms.py
  2. 24
      sapl/comissoes/views.py
  3. 7
      sapl/templates/comissoes/layouts.yaml

49
sapl/comissoes/forms.py

@ -9,23 +9,22 @@ from sapl.base.models import Autor, TipoAutor
from sapl.comissoes.models import Participacao, Composicao, Comissao from sapl.comissoes.models import Participacao, Composicao, Comissao
from sapl.parlamentares.models import Parlamentar, Legislatura, Mandato from sapl.parlamentares.models import Parlamentar, Legislatura, Mandato
class ParticipacaoCreateForm(forms.ModelForm):
class ParticipacaoForm(forms.ModelForm):
parent_pk = forms.CharField(required=False) # widget=forms.HiddenInput()) parent_pk = forms.CharField(required=False) # widget=forms.HiddenInput())
class Meta: class Meta:
model = Participacao model = Participacao
# includes = ['parlamentar', 'cargo', 'titular', 'data_designacao', 'data_desligamento', 'data_']
# exclude = []
exclude = ['composicao'] exclude = ['composicao']
def __init__(self, user=None, **kwargs): def __init__(self, user=None, **kwargs):
super(ParticipacaoForm, self).__init__(**kwargs) super(ParticipacaoCreateForm, self).__init__(**kwargs)
import ipdb; ipdb.set_trace() if self.instance:
if self.instance.pk: comissao = kwargs['initial']
participantes = self.instance.composicao.participacao_set.all() comissao_pk = int(comissao['parent_pk'])
composicao = Composicao.objects.get(id=comissao_pk)
participantes = composicao.participacao_set.all()
id_part = [p.parlamentar.id for p in participantes] id_part = [p.parlamentar.id for p in participantes]
else: else:
id_part = [] id_part = []
@ -34,11 +33,11 @@ class ParticipacaoForm(forms.ModelForm):
parlamentares = Mandato.objects.filter(qs, parlamentares = Mandato.objects.filter(qs,
parlamentar__ativo=True parlamentar__ativo=True
).prefetch_related('parlamentar'). \ ).prefetch_related('parlamentar').\
values_list('parlamentar', values_list('parlamentar',
flat=True).distinct() flat=True).distinct()
qs = Parlamentar.objects.filter(id__in=parlamentares).distinct(). \ qs = Parlamentar.objects.filter(id__in=parlamentares).distinct().\
exclude(id__in=id_part) exclude(id__in=id_part)
eligible = self.verifica() eligible = self.verifica()
result = list(set(qs) & set(eligible)) result = list(set(qs) & set(eligible))
@ -50,7 +49,7 @@ class ParticipacaoForm(forms.ModelForm):
self.fields['parlamentar'].queryset = qs self.fields['parlamentar'].queryset = qs
def create_participacao(self): def create_participacao(self):
composicao = self.instance.composicao composicao = Composicao.objects.get(id=self.initial['parent_pk'])
data_inicio_comissao = composicao.periodo.data_inicio data_inicio_comissao = composicao.periodo.data_inicio
data_fim_comissao = composicao.periodo.data_fim data_fim_comissao = composicao.periodo.data_fim
q1 = Q(data_fim_mandato__isnull=False, q1 = Q(data_fim_mandato__isnull=False,
@ -63,13 +62,11 @@ class ParticipacaoForm(forms.ModelForm):
return qs return qs
def clean(self): def clean(self):
super(ParticipacaoForm, self).clean() super(ParticipacaoCreateForm, self).clean()
# if self.instance:
return self.cleaned_data return self.cleaned_data
def verifica(self): def verifica(self):
composicao = self.instance.composicao composicao = Composicao.objects.get(id=self.initial['parent_pk'])
participantes = composicao.participacao_set.all() participantes = composicao.participacao_set.all()
participantes_id = [p.parlamentar.id for p in participantes] participantes_id = [p.parlamentar.id for p in participantes]
parlamentares = Parlamentar.objects.all().exclude(id__in=participantes_id).order_by('nome_completo') parlamentares = Parlamentar.objects.all().exclude(id__in=participantes_id).order_by('nome_completo')
@ -93,6 +90,26 @@ class ParticipacaoForm(forms.ModelForm):
return lista return lista
class ParticipacaoEditForm(forms.ModelForm):
parent_pk = forms.CharField(required=False) # widget=forms.HiddenInput())
nome_parlamentar = forms.CharField(required=False, label='Parlamentar')
class Meta:
model = Participacao
fields = ['nome_parlamentar', 'parlamentar', 'cargo', 'titular', 'data_designacao', 'data_desligamento', 'motivo_desligamento', 'observacao']
widgets = {
'parlamentar': forms.HiddenInput(),
}
def __init__(self, user=None, **kwargs):
super(ParticipacaoEditForm, self).__init__(**kwargs)
self.initial['nome_parlamentar'] = Parlamentar.objects.filter(id=self.initial['parlamentar']).first().nome_parlamentar
self.fields['nome_parlamentar'].widget.attrs['disabled'] = 'disabled'
class ComissaoForm(forms.ModelForm): class ComissaoForm(forms.ModelForm):
class Meta: class Meta:
@ -114,7 +131,7 @@ class ComissaoForm(forms.ModelForm):
comissao = super(ComissaoForm, self).save(commit) comissao = super(ComissaoForm, self).save(commit)
content_type = ContentType.objects.get_for_model(Comissao) content_type = ContentType.objects.get_for_model(Comissao)
object_id = comissao.pk object_id = comissao.pk
tipo = TipoAutor.objects.get(descricao='Comissão') tipo = TipoAutor.objects.get(descricao__icontains='Comiss')
nome = comissao.sigla+' - '+comissao.nome nome = comissao.sigla+' - '+comissao.nome
Autor.objects.create( Autor.objects.create(
content_type=content_type, content_type=content_type,

24
sapl/comissoes/views.py

@ -4,7 +4,7 @@ from django.db.models import F
from django.views.decorators.clickjacking import xframe_options_exempt from django.views.decorators.clickjacking import xframe_options_exempt
from django.views.generic import ListView from django.views.generic import ListView
from sapl.comissoes.forms import ParticipacaoForm from sapl.comissoes.forms import ParticipacaoCreateForm, ParticipacaoEditForm
from sapl.crud.base import RP_DETAIL, RP_LIST, Crud, CrudAux, MasterDetailCrud from sapl.crud.base import RP_DETAIL, RP_LIST, Crud, CrudAux, MasterDetailCrud
from sapl.materia.models import MateriaLegislativa, Tramitacao from sapl.materia.models import MateriaLegislativa, Tramitacao
@ -29,25 +29,31 @@ TipoComissaoCrud = CrudAux.build(
class ParticipacaoCrud(MasterDetailCrud): class ParticipacaoCrud(MasterDetailCrud):
model = Participacao model = Participacao
parent_field = 'composicao' parent_field = 'composicao__comissao'
public = [RP_DETAIL, ] public = [RP_DETAIL, ]
ListView = None ListView = None
# is_m2m = True
link_return_to_parent_field = True link_return_to_parent_field = True
class BaseMixin(MasterDetailCrud.BaseMixin): class BaseMixin(MasterDetailCrud.BaseMixin):
list_field_names = ['composicao', 'parlamentar', 'cargo'] list_field_names = ['composicao', 'parlamentar', 'cargo']
class CreateView(MasterDetailCrud.CreateView): class CreateView(MasterDetailCrud.CreateView):
form_class = ParticipacaoForm form_class = ParticipacaoCreateForm
# def get_initial(self): def get_initial(self):
# initial = super().get_initial() initial = super().get_initial()
# initial['parent_pk'] = self.kwargs['pk'] initial['parent_pk'] = self.kwargs['pk']
# return initial return initial
class UpdateView(MasterDetailCrud.UpdateView): class UpdateView(MasterDetailCrud.UpdateView):
form_class = ParticipacaoForm layout_key = 'ParticipacaoEdit'
form_class = ParticipacaoEditForm
class DeleteView(MasterDetailCrud.DeleteView):
def get_success_url(self):
return '{}?pk={}'.format(reverse('sapl.comissoes:composicao_list', args=[self.object.composicao.comissao.pk]), self.object.composicao.pk)
class ComposicaoCrud(MasterDetailCrud): class ComposicaoCrud(MasterDetailCrud):

7
sapl/templates/comissoes/layouts.yaml

@ -36,3 +36,10 @@ Participacao:
- data_designacao data_desligamento - data_designacao data_desligamento
- motivo_desligamento - motivo_desligamento
- observacao - observacao
ParticipacaoEdit:
{% trans 'Participação' %}:
- nome_parlamentar cargo titular
- data_designacao data_desligamento
- motivo_desligamento
- observacao
Loading…
Cancel
Save