|
|
@ -1,19 +1,19 @@ |
|
|
|
from crispy_forms.helper import FormHelper |
|
|
|
from crispy_forms.layout import ButtonHolder, Field, Fieldset, Layout, Submit |
|
|
|
from django import forms |
|
|
|
from django.core.urlresolvers import reverse |
|
|
|
from django.forms import ModelForm |
|
|
|
from django.utils.translation import ugettext_lazy as _ |
|
|
|
from django.views.generic import ListView |
|
|
|
from django.views.generic.edit import FormMixin |
|
|
|
from parlamentares.models import Filiacao, Parlamentar |
|
|
|
from sapl.crud import build_crud |
|
|
|
from sessao.models import Parlamentar |
|
|
|
from vanilla import GenericView |
|
|
|
|
|
|
|
from crispy_forms.helper import FormHelper |
|
|
|
from crispy_forms.layout import ButtonHolder, Field, Fieldset, Layout, Submit |
|
|
|
from django.forms import ModelForm |
|
|
|
|
|
|
|
from .models import (CargoComissao, Comissao, Composicao, Participacao, |
|
|
|
Periodo, TipoComissao) |
|
|
|
|
|
|
|
from parlamentares.models import Parlamentar, Filiacao |
|
|
|
|
|
|
|
cargo_crud = build_crud( |
|
|
|
CargoComissao, 'cargo_comissao', [ |
|
|
|
|
|
|
@ -108,6 +108,7 @@ class MateriasView(comissao_crud.CrudDetailView): |
|
|
|
class ReunioesView(comissao_crud.CrudDetailView): |
|
|
|
template_name = 'comissoes/reunioes.html' |
|
|
|
|
|
|
|
|
|
|
|
class ParticipacaoCadastroForm(ModelForm): |
|
|
|
|
|
|
|
YES_OR_NO = ( |
|
|
@ -115,31 +116,37 @@ class ParticipacaoCadastroForm(ModelForm): |
|
|
|
(False, 'Não') |
|
|
|
) |
|
|
|
|
|
|
|
PARLAMENTARES_CHOICES = [('', '---------')] + [(p.parlamentar.id, p.parlamentar.nome_parlamentar + ' / ' + p.partido.sigla) for p in Filiacao.objects.filter(data_desfiliacao__isnull=True, parlamentar__ativo=True).order_by('parlamentar__nome_parlamentar')] |
|
|
|
|
|
|
|
PARLAMENTARES_CHOICES = [('', '---------')] + [ |
|
|
|
(p.parlamentar.id, |
|
|
|
p.parlamentar.nome_parlamentar + ' / ' + p.partido.sigla) |
|
|
|
for p in Filiacao.objects.filter( |
|
|
|
data_desfiliacao__isnull=True, parlamentar__ativo=True).order_by( |
|
|
|
'parlamentar__nome_parlamentar')] |
|
|
|
|
|
|
|
parlamentar = forms.ChoiceField(required=True, |
|
|
|
parlamentar_id = forms.ChoiceField(required=True, |
|
|
|
label='Parlamentar', |
|
|
|
choices=PARLAMENTARES_CHOICES, |
|
|
|
widget=forms.Select( |
|
|
|
attrs={'class': 'selector'})) |
|
|
|
|
|
|
|
titular = forms.BooleanField(widget=forms.RadioSelect(choices=YES_OR_NO), required=True) |
|
|
|
titular = forms.BooleanField( |
|
|
|
widget=forms.RadioSelect(choices=YES_OR_NO), required=True) |
|
|
|
|
|
|
|
data_designacao = forms.DateField(label=u'Data Designação', |
|
|
|
input_formats=['%d/%m/%Y'], |
|
|
|
required=True, |
|
|
|
widget=forms.DateInput(format='%d/%m/%Y')) |
|
|
|
widget=forms.DateInput( |
|
|
|
format='%d/%m/%Y')) |
|
|
|
|
|
|
|
data_desligamento = forms.DateField(label=u'Data Desligamento', |
|
|
|
input_formats=['%d/%m/%Y'], |
|
|
|
required=False, |
|
|
|
widget=forms.DateInput(format='%d/%m/%Y')) |
|
|
|
widget=forms.DateInput( |
|
|
|
format='%d/%m/%Y')) |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = Participacao |
|
|
|
fields = ['parlamentar', |
|
|
|
'composicao', |
|
|
|
fields = ['parlamentar_id', |
|
|
|
'cargo', |
|
|
|
'titular', |
|
|
|
'data_designacao', |
|
|
@ -152,8 +159,7 @@ class ParticipacaoCadastroForm(ModelForm): |
|
|
|
self.helper.layout = Layout( |
|
|
|
Fieldset( |
|
|
|
'Formulário de Cadastro', |
|
|
|
'parlamentar', |
|
|
|
'composicao', # TODO colocar como hidden (remover daqui) |
|
|
|
'parlamentar_id', |
|
|
|
'cargo', |
|
|
|
'titular', |
|
|
|
'data_designacao', |
|
|
@ -161,7 +167,6 @@ class ParticipacaoCadastroForm(ModelForm): |
|
|
|
'motivo_desligamento', |
|
|
|
'observacao' |
|
|
|
), |
|
|
|
# Field('documento', type="hidden"), |
|
|
|
ButtonHolder( |
|
|
|
Submit('submit', 'Salvar', |
|
|
|
css_class='button primary') |
|
|
@ -169,10 +174,53 @@ class ParticipacaoCadastroForm(ModelForm): |
|
|
|
) |
|
|
|
super(ParticipacaoCadastroForm, self).__init__(*args, **kwargs) |
|
|
|
|
|
|
|
|
|
|
|
class ComissaoParlamentarIncluirView(FormMixin, GenericView): |
|
|
|
template_name = "comissoes/comissao_parlamentar.html" |
|
|
|
|
|
|
|
def get(self, request, *args, **kwargs): |
|
|
|
pk = kwargs['pk'] |
|
|
|
form = ParticipacaoCadastroForm() |
|
|
|
return self.render_to_response({'form': form}) |
|
|
|
return self.render_to_response({'form': form, |
|
|
|
'composicao_id': self.kwargs['id']}) |
|
|
|
|
|
|
|
def post(self, request, *args, **kwargs): |
|
|
|
composicao = Composicao.objects.get(id=self.kwargs['id']) |
|
|
|
form = ParticipacaoCadastroForm(request.POST) |
|
|
|
|
|
|
|
if form.is_valid(): |
|
|
|
cargo = form.cleaned_data['cargo'] |
|
|
|
if cargo.nome == 'Presidente': |
|
|
|
for p in Participacao.objects.filter(composicao=composicao): |
|
|
|
if p.cargo.nome == 'Presidente': |
|
|
|
return self.render_to_response( |
|
|
|
{'form': form, |
|
|
|
'composicao_id': self.kwargs['id'], |
|
|
|
'error': 'Esse cargo já está sendo ocupado!'}) |
|
|
|
else: |
|
|
|
# Pensar em forma melhor para não duplicar código |
|
|
|
participacao = form.save(commit=False) |
|
|
|
parlamentar = Parlamentar.objects.get( |
|
|
|
id=int(form.cleaned_data['parlamentar_id'])) |
|
|
|
|
|
|
|
participacao.composicao = composicao |
|
|
|
participacao.parlamentar = parlamentar |
|
|
|
|
|
|
|
participacao.save() |
|
|
|
else: |
|
|
|
participacao = form.save(commit=False) |
|
|
|
parlamentar = Parlamentar.objects.get( |
|
|
|
id=int(form.cleaned_data['parlamentar_id'])) |
|
|
|
|
|
|
|
participacao.composicao = composicao |
|
|
|
participacao.parlamentar = parlamentar |
|
|
|
|
|
|
|
participacao.save() |
|
|
|
return self.form_valid(form) |
|
|
|
else: |
|
|
|
return self.render_to_response( |
|
|
|
{'form': form, |
|
|
|
'composicao_id': self.kwargs['id']}) |
|
|
|
|
|
|
|
def get_success_url(self): |
|
|
|
pk = self.kwargs['pk'] |
|
|
|
return reverse('comissao:composicao', kwargs={'pk': pk}) |
|
|
|