Browse Source

Separa criação de mandato e parlamentar (#2579)

Fix #2536

Adiciona cadastro de parlamentar na tabelas auxiliares

Remoção de mandato na criação do parlamentar

Corrige testes

Corrige título no CRUD de parlamentar

Corrige identação

Adiciona botão de criação de parlamentar após pesquisa

Corrige botões em parlamentares

Altera nomes

Remove intermediário para vinculação de parlamentar

Arruma bug

Altera redirecionamento para detales de parlamentar

Início da criação do form e view de vincular parlamentar

Corrige VincularParlamentarForm

Corrige VincularParlamentarView

Adiciona html de vincular parlamentar

Mostrar somente parlamentares ativos

Cria variável data_expedicao_diploma

Compara mandato por legislatura invés de data

Corrige verificação de existencia de chave no dicionário

Adiciona data fim do mandato na criação do mandato

Adiciona restrição para usuário não logado

Co-authored-by: UlyssesBML <ulysses3353@gmail.com>
Co-authored-by: Ricardo Lima Canela <ricardolimacanela@gmail.com>
pull/2683/head
Vinícius Cantuária 6 years ago
committed by Edward
parent
commit
53013f0d62
  1. 62
      sapl/parlamentares/forms.py
  2. 5
      sapl/parlamentares/urls.py
  3. 30
      sapl/parlamentares/views.py
  4. 6
      sapl/templates/parlamentares/layouts.yaml
  5. 44
      sapl/templates/parlamentares/parlamentar_filter.html
  6. 20
      sapl/templates/parlamentares/parlamentares_list.html
  7. 8
      sapl/templates/parlamentares/vincular_parlamentar.html

62
sapl/parlamentares/forms.py

@ -506,3 +506,65 @@ class VotanteForm(ModelForm):
votante.user = u
votante.save()
return votante
class VincularParlamentarForm(forms.Form):
logger = logging.getLogger(__name__)
parlamentar = forms.ModelChoiceField(
label=Parlamentar._meta.verbose_name,
queryset=Parlamentar.objects.filter(ativo=True),
required=True,
empty_label='Selecione'
)
legislatura = forms.ModelChoiceField(
label=Legislatura._meta.verbose_name,
queryset=Legislatura.objects.all(),
required=True,
empty_label='Selecione'
)
data_expedicao_diploma = forms.DateField(
label='Data de Expedição do Diploma',
required=False,
widget=forms.DateInput(format='%d/%m/%Y')
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
row1 = to_row([
('parlamentar', 6),
('legislatura', 3),
('data_expedicao_diploma', 3)
])
self.helper = SaplFormHelper()
self.helper.layout = Layout(
Fieldset(
'Vincular Parlamentar',
row1,
form_actions(label='Vincular')
)
)
def clean(self):
super().clean()
if not self.is_valid():
return self.cleaned_data
cleaned_data = self.cleaned_data
parlamentar = cleaned_data['parlamentar']
legislatura = cleaned_data['legislatura']
data_expedicao_diploma = cleaned_data['data_expedicao_diploma']
if parlamentar.mandato_set.filter(legislatura=legislatura):
self.logger.error('Parlamentar já está vinculado a legislatura informada.')
raise ValidationError(_('Parlamentar já está vinculado a legislatura informada.'))
elif data_expedicao_diploma and legislatura.data_inicio <= data_expedicao_diploma:
self.logger.error('Data da Expedição do Diploma deve ser anterior a data de início da Legislatura.')
raise ValidationError(_('Data da Expedição do Diploma deve ser anterior a data de início da Legislatura.'))
return cleaned_data

5
sapl/parlamentares/urls.py

@ -20,7 +20,7 @@ from sapl.parlamentares.views import (CargoMesaCrud, ColigacaoCrud,
remove_parlamentar_composicao,
lista_parlamentares,
parlamentares_filiados,
PesquisarParlamentarView)
PesquisarParlamentarView, VincularParlamentarView)
from .apps import AppConfig
@ -44,6 +44,9 @@ urlpatterns = [
url(r'^parlamentar/(?P<pk>\d+)/materias$',
ParlamentarMateriasView.as_view(), name='parlamentar_materias'),
url(r'^parlamentar/vincular-parlamentar/$',
VincularParlamentarView.as_view(), name='vincular_parlamentar'),
url(r'^sistema/coligacao/',
include(ColigacaoCrud.get_urls() +
ComposicaoColigacaoCrud.get_urls())),

30
sapl/parlamentares/views.py

@ -3,6 +3,7 @@ import json
import logging
from django.contrib import messages
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
from django.core.urlresolvers import reverse, reverse_lazy
@ -33,7 +34,7 @@ from sapl.parlamentares.apps import AppConfig
from sapl.utils import (parlamentares_ativos, show_results_filter_set)
from .forms import (FiliacaoForm, FrenteForm, LegislaturaForm, MandatoForm,
ParlamentarCreateForm, ParlamentarForm, VotanteForm, ParlamentarFilterSet)
ParlamentarCreateForm, ParlamentarForm, VotanteForm, ParlamentarFilterSet, VincularParlamentarForm)
from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa,
Dependente, Filiacao, Frente, Legislatura, Mandato,
NivelInstrucao, Parlamentar, Partido, SessaoLegislativa,
@ -1138,3 +1139,30 @@ def altera_field_mesa_public_view(request):
'lista_fotos': lista_fotos,
'sessao_selecionada': sessao_selecionada,
'msg': ('', 1)})
class VincularParlamentarView(PermissionRequiredMixin, FormView):
logger = logging.getLogger(__name__)
form_class = VincularParlamentarForm
template_name = 'parlamentares/vincular_parlamentar.html'
permission_required = ('parlamentares.add_parlamentar', )
def get_success_url(self):
return reverse('sapl.parlamentares:parlamentar_list')
def form_valid(self, form):
kwargs = {
'parlamentar': form.cleaned_data['parlamentar'],
'legislatura': form.cleaned_data['legislatura'],
'data_inicio_mandato': form.cleaned_data['legislatura'].data_inicio,
'data_fim_mandato': form.cleaned_data['legislatura'].data_fim
}
data_expedicao_diploma = form.cleaned_data.get('data_expedicao_diploma')
if data_expedicao_diploma:
kwargs.update({'data_expedicao_diploma': data_expedicao_diploma})
mandato = Mandato.objects.create(**kwargs)
mandato.save()
return HttpResponseRedirect(self.get_success_url())

6
sapl/templates/parlamentares/layouts.yaml

@ -30,7 +30,7 @@ SessaoLegislativa:
- data_inicio_intervalo data_fim_intervalo
Parlamentar:
{% trans 'Cadastro do Parlamentar' %}:
{% trans 'Dados do Parlamentar' %}:
- nome_parlamentar:8 ativo
- nome_completo
- nivel_instrucao sexo data_nascimento
@ -47,7 +47,7 @@ Parlamentar:
- biografia
ParlamentarUpdate:
{% trans 'Cadastro do Parlamentar' %}:
{% trans 'Dados do Parlamentar' %}:
- nome_parlamentar:8 ativo
- nome_completo
- nivel_instrucao sexo data_nascimento
@ -64,7 +64,7 @@ ParlamentarUpdate:
- biografia
ParlamentarCreate:
{% trans 'Cadastro do Parlamentar' %}:
{% trans 'Dados do Parlamentar' %}:
- nome_parlamentar:8 ativo
- nome_completo
- nivel_instrucao sexo data_nascimento

44
sapl/templates/parlamentares/parlamentar_filter.html

@ -5,44 +5,44 @@
{% block base_content %}
{% if not show_results %}
{% crispy filter.form %}
{% endif %}
{% if show_results %}
<div class="actions btn-group float-right" role="group">
{% else %}
<div class="actions btn-group float-right btn-group-sm" role="group">
<a href="{% url 'sapl.parlamentares:pesquisar_parlamentar' %}" class="btn btn-outline-primary">{% trans 'Fazer nova pesquisa' %}</a>
</div>
<br /><br />
{% if not request.user.is_anonymous %}
<a href="{% url 'sapl.parlamentares:parlamentar_create' %}"class="btn btn-outline-primary">Cadastrar Parlamentar</a>
{% endif %}
</div>
<br>
{% if numero_res > 0 %}
{% if numero_res == 1 %}
<p>Foi encontrado {{ numero_res }} resultado</p>
{% else %}
<p>Foram encontrados {{ numero_res }} resultados</p>
{% endif %}
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Nome do Parlamentar</th>
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Nome do Parlamentar</th>
<th>Nome Completo</th>
<th>Ativo</th>
</tr>
</thead>
<tbody>
{% for usuario in page_obj %}
<tr>
<td>
</tr>
</thead>
<tbody>
{% for usuario in page_obj %}
<tr>
<td>
<a href="{% url 'sapl.parlamentares:parlamentar_detail' usuario.pk %}">{{usuario.nome_parlamentar}}</a>
</td>
<td>{{ usuario.nome_completo }}</td>
<td>{% if usuario.ativo %} Sim {% else %} Não {% endif %}</td>
</tr>
{% endfor %}
</tbody>
</table>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<font size="4"><p align="center">{{ NO_ENTRIES_MSG }}</p></font>
{% endif %}
{% endif %}
{% endif %}
<br/>
{% include 'paginacao.html'%}
<br /><br /><br />

20
sapl/templates/parlamentares/parlamentares_list.html

@ -1,21 +1,15 @@
{% extends "crud/list.html" %}
{% load i18n %}
{% load crispy_forms_tags cropping%}
{% block actions %}
<div class="actions btn-group float-right btn-group-lg" role="group">
{% if view.create_url %}
<a href="{% url 'sapl.parlamentares:lista_parlamentares' %}" class="btn btn-outline-primary">
{% blocktrans with verbose_name=view.verbose_name %} Adicionar {{ verbose_name }} {% endblocktrans %}
</a>
{% endif %}
{% block more_buttons %}{% endblock more_buttons %}
</div>
<div class="actions btn-group float-right btn-group-lg" role="group">
<a href="{% url 'sapl.parlamentares:pesquisar_parlamentar' %}" class="btn btn-outline-primary">Pesquisar Parlamentares</a>
</div>
<div class="actions btn-group float-right btn-group-sm" role="group">
<a href="{% url 'sapl.parlamentares:pesquisar_parlamentar' %}" class="btn btn-outline-primary">Pesquisar Parlamentar</a>
{% if not request.user.is_anonymous %}
<a href="{% url 'sapl.parlamentares:vincular_parlamentar' %}" class="btn btn-outline-primary">Vincular Parlamentar</a>
{% endif %}
{% block more_buttons %}{% endblock more_buttons %}
</div>
{% endblock actions %}
{% block extra_content %}
<fieldset class="form-group">
<legend>Selecione o Período</legend>

8
sapl/templates/parlamentares/vincular_parlamentar.html

@ -0,0 +1,8 @@
{% extends "crud/form.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% load common_tags %}
{% block detail_content %}
{% crispy form %}
{% endblock detail_content %}
Loading…
Cancel
Save