Browse Source

Fix #1694

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

45
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.parlamentares.models import Parlamentar, Legislatura, Mandato
class ParticipacaoForm(forms.ModelForm):
class ParticipacaoCreateForm(forms.ModelForm):
parent_pk = forms.CharField(required=False) # widget=forms.HiddenInput())
class Meta:
model = Participacao
# includes = ['parlamentar', 'cargo', 'titular', 'data_designacao', 'data_desligamento', 'data_']
# exclude = []
exclude = ['composicao']
def __init__(self, user=None, **kwargs):
super(ParticipacaoForm, self).__init__(**kwargs)
super(ParticipacaoCreateForm, self).__init__(**kwargs)
import ipdb; ipdb.set_trace()
if self.instance.pk:
participantes = self.instance.composicao.participacao_set.all()
if self.instance:
comissao = kwargs['initial']
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]
else:
id_part = []
@ -50,7 +49,7 @@ class ParticipacaoForm(forms.ModelForm):
self.fields['parlamentar'].queryset = qs
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_fim_comissao = composicao.periodo.data_fim
q1 = Q(data_fim_mandato__isnull=False,
@ -63,13 +62,11 @@ class ParticipacaoForm(forms.ModelForm):
return qs
def clean(self):
super(ParticipacaoForm, self).clean()
# if self.instance:
super(ParticipacaoCreateForm, self).clean()
return self.cleaned_data
def verifica(self):
composicao = self.instance.composicao
composicao = Composicao.objects.get(id=self.initial['parent_pk'])
participantes = composicao.participacao_set.all()
participantes_id = [p.parlamentar.id for p in participantes]
parlamentares = Parlamentar.objects.all().exclude(id__in=participantes_id).order_by('nome_completo')
@ -93,6 +90,26 @@ class ParticipacaoForm(forms.ModelForm):
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 Meta:
@ -114,7 +131,7 @@ class ComissaoForm(forms.ModelForm):
comissao = super(ComissaoForm, self).save(commit)
content_type = ContentType.objects.get_for_model(Comissao)
object_id = comissao.pk
tipo = TipoAutor.objects.get(descricao='Comissão')
tipo = TipoAutor.objects.get(descricao__icontains='Comiss')
nome = comissao.sigla+' - '+comissao.nome
Autor.objects.create(
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.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.materia.models import MateriaLegislativa, Tramitacao
@ -29,25 +29,31 @@ TipoComissaoCrud = CrudAux.build(
class ParticipacaoCrud(MasterDetailCrud):
model = Participacao
parent_field = 'composicao'
parent_field = 'composicao__comissao'
public = [RP_DETAIL, ]
ListView = None
# is_m2m = True
link_return_to_parent_field = True
class BaseMixin(MasterDetailCrud.BaseMixin):
list_field_names = ['composicao', 'parlamentar', 'cargo']
class CreateView(MasterDetailCrud.CreateView):
form_class = ParticipacaoForm
form_class = ParticipacaoCreateForm
# def get_initial(self):
# initial = super().get_initial()
# initial['parent_pk'] = self.kwargs['pk']
# return initial
def get_initial(self):
initial = super().get_initial()
initial['parent_pk'] = self.kwargs['pk']
return initial
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):

7
sapl/templates/comissoes/layouts.yaml

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