diff --git a/parlamentares/forms.py b/parlamentares/forms.py index 43377bbe6..1252e4cdc 100644 --- a/parlamentares/forms.py +++ b/parlamentares/forms.py @@ -1,165 +1,13 @@ from crispy_forms.helper import FormHelper from crispy_forms.layout import HTML, Fieldset, Layout, Submit from django import forms -from django.core.exceptions import ValidationError from django.forms import ModelForm from django.utils.translation import ugettext_lazy as _ import crispy_layout_mixin from crispy_layout_mixin import form_actions -from sapl.settings import MAX_IMAGE_UPLOAD_SIZE -from .models import Dependente, Filiacao, Legislatura, Mandato, Parlamentar - - -class ParlamentaresListForm(forms.Form): - periodo = forms.CharField() - - -class ParlamentaresForm (ModelForm): - ativo = forms.TypedChoiceField( - coerce=lambda x: x == 'True', - choices=((True, 'Sim'), (False, 'Não')), - ) - - def clean_fotografia(self): - fotografia = self.cleaned_data.get('fotografia', False) - if fotografia: - if fotografia.size > MAX_IMAGE_UPLOAD_SIZE: - raise ValidationError('Imagem muito grande. ( > 2mb )') - return fotografia - - class Meta: - model = Parlamentar - fields = ['nome_parlamentar', - 'ativo', - 'nome_completo', - 'nivel_instrucao', - 'sexo', - 'cpf', - 'rg', - 'titulo_eleitor', - 'data_nascimento', - 'situacao_militar', - 'profissao', - 'endereco_web', - 'email', - 'numero_gab_parlamentar', - 'telefone', - 'fax', - 'endereco_residencia', - 'cep_residencia', - 'municipio_residencia', - 'telefone_residencia', - 'fax_residencia', - 'locais_atuacao', - 'fotografia', - 'biografia'] - - widgets = { - 'cpf': forms.TextInput(attrs={'class': 'cpf'}), - 'rg': forms.TextInput(attrs={'class': 'rg'}), - 'titulo_eleitor': forms.TextInput(attrs={ - 'class': 'titulo_eleitor'}), - 'telefone': forms.TextInput(attrs={'class': 'telefone'}), - 'fax': forms.TextInput(attrs={'class': 'telefone'}), - 'cep_residencia': forms.TextInput(attrs={'class': 'cep'}), - 'telefone_residencia': forms.TextInput(attrs={ - 'class': 'telefone'}), - 'fax_residencia': forms.TextInput(attrs={'class': 'telefone'}), - 'fotografia': forms.FileInput, - 'biografia': forms.Textarea(attrs={'id': 'biografia-parlamentar'}) - } - - def __init__(self, *args, **kwargs): - - row1 = crispy_layout_mixin.to_row( - [('nome_parlamentar', 8), ('ativo', 4)]) - - row2 = crispy_layout_mixin.to_row( - [('nome_completo', 12)]) - - row3 = crispy_layout_mixin.to_row( - [('nivel_instrucao', 4), - ('sexo', 4), - ('data_nascimento', 4)]) - - row4 = crispy_layout_mixin.to_row( - [('cpf', 4), - ('rg', 4), - ('titulo_eleitor', 4)]) - - row5 = crispy_layout_mixin.to_row( - [('situacao_militar', 6), - ('profissao', 6)]) - - row6 = crispy_layout_mixin.to_row( - [('endereco_web', 12)]) - - row7 = crispy_layout_mixin.to_row( - [('email', 12)]) - - row8 = crispy_layout_mixin.to_row( - [('numero_gab_parlamentar', 4), - ('telefone', 4), - ('fax', 4)]) - - row9 = crispy_layout_mixin.to_row( - [('endereco_residencia', 6), - ('cep_residencia', 6)]) - - row10 = crispy_layout_mixin.to_row( - [('municipio_residencia', 12)]) - - row11 = crispy_layout_mixin.to_row( - [('telefone_residencia', 6), - ('fax_residencia', 6)]) - - row12 = crispy_layout_mixin.to_row( - [('locais_atuacao', 12)]) - - row13 = crispy_layout_mixin.to_row( - [('fotografia', 12)]) - - row14 = crispy_layout_mixin.to_row( - [('biografia', 12)]) - - self.helper = FormHelper() - self.helper.layout = Layout( - Fieldset(_('Cadastro do Parlamentar'), - row1, row2, row3, row4, row5, - row6, row7, row8, row9, row10, - row11, row12, row13, - HTML("""
- {% if not form.fotografia.errors %} - {% if form.fotografia.value %} - -

- - {% endif %} - {% endif %} -
""", ), - row14, - form_actions()) - ) - super(ParlamentaresForm, self).__init__( - *args, **kwargs) - - -class ParlamentaresEditForm(ParlamentaresForm): - - def __init__(self, *args, **kwargs): - super(ParlamentaresEditForm, self).__init__( - *args, **kwargs) - self.helper.layout[0][-1:] = form_actions(more=[ - HTML(' '), - Submit('excluir', 'Excluir', - css_class='btn btn-primary')]) +from .models import Dependente, Filiacao, Legislatura, Mandato class MandatoForm(ModelForm): diff --git a/parlamentares/urls.py b/parlamentares/urls.py index c7a9f922c..6e0ebb975 100644 --- a/parlamentares/urls.py +++ b/parlamentares/urls.py @@ -4,19 +4,19 @@ from parlamentares.views import (CargoMesaCrud, ColigacaoCrud, FiliacaoEditView, FiliacaoView, LegislaturaCrud, MandatoEditView, MandatoView, MesaDiretoraView, NivelInstrucaoCrud, - ParlamentaresCadastroView, + ParlamentarCrud, ParlamentaresDependentesEditView, - ParlamentaresDependentesView, - ParlamentaresEditarView, ParlamentaresView, - PartidoCrud, SessaoLegislativaCrud, - TipoAfastamentoCrud, TipoDependenteCrud, - TipoMilitarCrud) + ParlamentaresDependentesView, PartidoCrud, + SessaoLegislativaCrud, TipoAfastamentoCrud, + TipoDependenteCrud, TipoMilitarCrud) from .apps import AppConfig app_name = AppConfig.name urlpatterns = [ + url(r'^parlamentares/', include(ParlamentarCrud.get_urls())), + url(r'^sistema/parlamentares/legislatura/', include(LegislaturaCrud.get_urls())), url(r'^sistema/parlamentares/tipo-dependente/', @@ -36,10 +36,6 @@ urlpatterns = [ url(r'^sistema/mesa-diretora/cargo-mesa/', include(CargoMesaCrud.get_urls())), - url(r'^parlamentares/$', - ParlamentaresView.as_view(), name='parlamentares'), - url(r'^parlamentares/(?P\d+)/cadastro$', - ParlamentaresCadastroView.as_view(), name='parlamentares_cadastro'), url(r'^parlamentares/(?P\d+)/dependentes$', ParlamentaresDependentesView.as_view(), name='parlamentares_dependentes'), @@ -59,9 +55,6 @@ urlpatterns = [ MandatoEditView.as_view(), name='parlamentares_mandato_edit'), - url(r'^parlamentares/(?P\d+)/editar$', - ParlamentaresEditarView.as_view(), name='parlamentares_editar'), - url(r'^mesa-diretora/$', MesaDiretoraView.as_view(), name='mesa_diretora'), ] diff --git a/parlamentares/views.py b/parlamentares/views.py index f0e5ae54e..a419db2d9 100644 --- a/parlamentares/views.py +++ b/parlamentares/views.py @@ -1,5 +1,3 @@ -import os - from django.contrib import messages from django.core.urlresolvers import reverse, reverse_lazy from django.http import HttpResponseRedirect @@ -10,9 +8,7 @@ from django.views.generic import CreateView, FormView, UpdateView from crud.base import Crud from .forms import (DependenteEditForm, DependenteForm, FiliacaoEditForm, - FiliacaoForm, MandatoEditForm, MandatoForm, - ParlamentaresEditForm, ParlamentaresForm, - ParlamentaresListForm) + FiliacaoForm, MandatoEditForm, MandatoForm) from .models import (CargoMesa, Coligacao, ComposicaoMesa, Dependente, Filiacao, Legislatura, Mandato, NivelInstrucao, Parlamentar, Partido, SessaoLegislativa, SituacaoMilitar, @@ -95,123 +91,6 @@ def validate(form, parlamentar, filiacao, request): return True -class ParlamentaresView(FormView): - template_name = "parlamentares/parlamentares_list.html" - - def get(self, request, *args, **kwargs): - form = ParlamentaresListForm() - - if not Legislatura.objects.all(): - mensagem = _('Cadastre alguma Legislatura antes' - ' de cadastrar algum Parlamentar') - messages.add_message(request, messages.INFO, mensagem) - return self.render_to_response( - {'legislaturas': [], - 'legislatura_id': 0, - 'form': form, - }) - - legislaturas = Legislatura.objects.all().order_by( - '-data_inicio', '-data_fim') - - mandatos = Mandato.objects.filter( - legislatura_id=legislaturas.first().id) - - parlamentares = [] - dict_parlamentar = {} - for m in mandatos: - - if m.parlamentar.filiacao_set.last(): - partido = m.parlamentar.filiacao_set.last().partido.sigla - else: - partido = _('Sem Registro') - - dict_parlamentar = { - 'id': m.parlamentar.id, - 'nome': m.parlamentar.nome_parlamentar, - 'partido': partido, - 'ativo': m.parlamentar.ativo} - parlamentares.append(dict_parlamentar) - - return self.render_to_response( - {'legislaturas': legislaturas, - 'legislatura_id': legislaturas.first().id, - 'form': form, - 'parlamentares': parlamentares}) - - def post(self, request, *args, **kwargs): - form = ParlamentaresListForm(request.POST) - - mandatos = Mandato.objects.filter( - legislatura_id=int(form.data['periodo'])) - - parlamentares = [] - dict_parlamentar = {} - for m in mandatos: - - if m.parlamentar.filiacao_set.last(): - partido = m.parlamentar.filiacao_set.last().partido.sigla - else: - partido = _('Sem Registro') - - dict_parlamentar = { - 'id': m.parlamentar.id, - 'nome': m.parlamentar.nome_parlamentar, - 'partido': partido, - 'ativo': m.parlamentar.ativo} - parlamentares.append(dict_parlamentar) - - return self.render_to_response( - {'legislaturas': Legislatura.objects.all().order_by( - '-data_inicio', '-data_fim'), - 'legislatura_id': int(form.data['periodo']), - 'form': form, - 'parlamentares': parlamentares}) - - -class ParlamentaresCadastroView(CreateView): - template_name = "parlamentares/parlamentares_cadastro.html" - form_class = ParlamentaresForm - model = Parlamentar - - def get_success_url(self): - return reverse('parlamentares:parlamentares') - - def get_context_data(self, **kwargs): - context = super(ParlamentaresCadastroView, self).get_context_data( - **kwargs) - legislatura_id = self.kwargs['pk'] - context.update({'legislatura_id': legislatura_id}) - return context - - def form_valid(self, form): - form.save() - return redirect(self.get_success_url()) - - -class ParlamentaresEditarView(UpdateView): - template_name = "parlamentares/parlamentares_cadastro.html" - form_class = ParlamentaresEditForm - model = Parlamentar - success_url = reverse_lazy('parlamentares:parlamentares') - - def form_valid(self, form): - parlamentar = form.instance - if 'salvar' in self.request.POST: - form.save() - elif 'excluir' in self.request.POST: - Mandato.objects.get(parlamentar=parlamentar).delete() - parlamentar.delete() - elif "remover-foto" in self.request.POST: - try: - os.unlink(parlamentar.fotografia.path) - except OSError: - pass # Should log this error!!!!! - parlamentar.fotografia = None - parlamentar.save() - return HttpResponseRedirect(self.get_success_url()) - - class ParlamentaresDependentesView(CreateView): template_name = "parlamentares/parlamentares_dependentes.html" form_class = DependenteForm diff --git a/templates/base.html b/templates/base.html index 85f491306..27d96c4a7 100644 --- a/templates/base.html +++ b/templates/base.html @@ -49,7 +49,7 @@ - + diff --git a/templates/parlamentares/subnav.yaml b/templates/parlamentares/subnav.yaml index bfef5bc0d..efb862f91 100644 --- a/templates/parlamentares/subnav.yaml +++ b/templates/parlamentares/subnav.yaml @@ -1,5 +1,5 @@ - title: Início - url: parlamentares_editar + url: parlamentar_detail - title: Mandatos url: parlamentares_mandato - title: Filiações Partidárias