Browse Source

Fix #2161

Co-authored-by: Vinícius Cantuária <cantuariavc@gmail.com>

adicionado botao de alterar nome

readonly em edicao do nome e sigla do partido atraves do editar

adicionado form_valid

tela de alteracao de nome

ajusta permissoes

Adiciona histórico na model de partido

Co-authored-by: Cesar Carvalho <cesaraugc@gmail.com>

Atualiza salvamento de mudança de nome do partido em histórico

Adiciona campo de histórico na página do partido

altera test_renames

Revert "Adiciona histórico na model de partido"

This reverts commit e6bba816f248118dd875fb4e13da97eccb3d4951.
pull/2460/head^2
Cesar Carvalho 7 years ago
committed by Vinícius Cantuária
parent
commit
1b4ba9123c
  1. 15
      sapl/base/forms.py
  2. 44
      sapl/parlamentares/forms.py
  3. 5
      sapl/parlamentares/urls.py
  4. 47
      sapl/parlamentares/views.py
  5. 3
      sapl/sessao/forms.py
  6. 7
      sapl/templates/parlamentares/altera_nome_partido_form.html
  7. 13
      sapl/templates/parlamentares/partido_detail.html

15
sapl/base/forms.py

@ -28,7 +28,7 @@ from sapl.crispy_layout_mixin import (SaplFormLayout, form_actions, to_column,
from sapl.materia.models import (
MateriaLegislativa, UnidadeTramitacao, StatusTramitacao)
from sapl.norma.models import (NormaJuridica, NormaEstatisticas)
from sapl.parlamentares.models import SessaoLegislativa
from sapl.parlamentares.models import SessaoLegislativa, Partido
from sapl.sessao.models import SessaoPlenaria
from sapl.settings import MAX_IMAGE_UPLOAD_SIZE
from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES,
@ -1322,3 +1322,16 @@ class AlterarSenhaForm(Form):
"Nova senha não pode ser igual à senha anterior")
return self.cleaned_data
class PartidoForm(ModelForm):
class Meta:
model = Partido
exclude = []
def __init__(self, *args, **kwargs):
super(PartidoForm, self).__init__(*args, **kwargs)
self.fields['nome'].widget.attrs['readonly'] = True
self.fields['sigla'].widget.attrs['readonly'] = True

44
sapl/parlamentares/forms.py

@ -18,11 +18,11 @@ from floppyforms.widgets import ClearableFileInput
from image_cropping.widgets import CropWidget, ImageCropWidget
from sapl.base.models import Autor, TipoAutor
from sapl.crispy_layout_mixin import form_actions, to_row
from sapl.crispy_layout_mixin import form_actions, to_row, SaplFormLayout
from sapl.rules import SAPL_GROUP_VOTANTE
from .models import (ComposicaoColigacao, Filiacao, Frente, Legislatura,
Mandato, Parlamentar, Votante)
Mandato, Parlamentar, Votante, Partido)
class ImageThumbnailFileInput(ClearableFileInput):
@ -496,3 +496,43 @@ class VotanteForm(ModelForm):
votante.user = u
votante.save()
return votante
class EditarNomePartidoForm(forms.Form):
sigla = forms.CharField(label="Sigla")
nome = forms.CharField(label="Novo Nome")
data_alteracao = forms.DateField(label="Data de alteração")
partido_pk = forms.CharField(
widget=forms.HiddenInput(), required=False)
def __init__(self, *args, **kwargs):
super(EditarNomePartidoForm, self).__init__(*args, **kwargs)
row1 = to_row([('sigla', 2)])
row2 = to_row([('nome', 8)])
row3 = to_row([('data_alteracao', 2)])
row4 = to_row([('partido_pk', 2)])
self.helper = FormHelper()
self.helper.layout = SaplFormLayout(
Fieldset(_('Alteração do nome do partido'),
row1, row2, row3, row4))
def clean(self):
super(EditarNomePartidoForm, self).clean()
if not self.is_valid():
return self.cleaned_data
obj = Partido.objects.get(id=self.cleaned_data['partido_pk'])
if obj.sigla == self.cleaned_data['sigla']:
raise ValidationError("Sigla do partido igual à silga atual. Formulário inválido.")
if obj.nome == self.cleaned_data['nome']:
raise ValidationError("Nome do partido igual ao nome atual. Formulário inválido.")
if not self.cleaned_data['data_alteracao'] <= timezone.now().date():
raise ValidationError("Data de alteração maior que data atual. Formulário inválido.")
return self.cleaned_data

5
sapl/parlamentares/urls.py

@ -17,7 +17,8 @@ from sapl.parlamentares.views import (CargoMesaCrud, ColigacaoCrud,
frente_atualiza_lista_parlamentares,
insere_parlamentar_composicao,
parlamentares_frente_selected,
remove_parlamentar_composicao)
remove_parlamentar_composicao,
EditaNomePartidoView)
from .apps import AppConfig
@ -60,6 +61,8 @@ urlpatterns = [
url(r'^sistema/parlamentar/tipo-militar/',
include(TipoMilitarCrud.get_urls())),
url(r'^sistema/parlamentar/partido/', include(PartidoCrud.get_urls())),
url(r'^sistema/parlamentar/partido/(?P<pk>\d+)/altera-nome',
EditaNomePartidoView.as_view(), name='altera_nome_partido'),
url(r'^sistema/mesa-diretora/sessao-legislativa/',
include(SessaoLegislativaCrud.get_urls())),

47
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
@ -18,7 +19,7 @@ from django.views.decorators.clickjacking import xframe_options_exempt
from django.views.generic import FormView
from django.views.generic.edit import UpdateView
from sapl.base.forms import SessaoLegislativaForm
from sapl.base.forms import SessaoLegislativaForm, PartidoForm
from sapl.base.models import Autor
from sapl.comissoes.models import Participacao
from sapl.crud.base import (RP_CHANGE, RP_DETAIL, RP_LIST, Crud, CrudAux,
@ -29,7 +30,8 @@ from sapl.parlamentares.apps import AppConfig
from sapl.utils import parlamentares_ativos
from .forms import (FiliacaoForm, FrenteForm, LegislaturaForm, MandatoForm,
ParlamentarCreateForm, ParlamentarForm, VotanteForm)
ParlamentarCreateForm, ParlamentarForm, VotanteForm,
EditarNomePartidoForm)
from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa,
Dependente, Filiacao, Frente, Legislatura, Mandato,
NivelInstrucao, Parlamentar, Partido, SessaoLegislativa,
@ -37,7 +39,7 @@ from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa,
CargoMesaCrud = CrudAux.build(CargoMesa, 'cargo_mesa')
PartidoCrud = CrudAux.build(Partido, 'partidos')
# PartidoCrud = CrudAux.build(Partido, 'partidos')
TipoDependenteCrud = CrudAux.build(TipoDependente, 'tipo_dependente')
NivelInstrucaoCrud = CrudAux.build(NivelInstrucao, 'nivel_instrucao')
TipoAfastamentoCrud = CrudAux.build(TipoAfastamento, 'tipo_afastamento')
@ -46,7 +48,6 @@ TipoMilitarCrud = CrudAux.build(SituacaoMilitar, 'tipo_situa_militar')
DependenteCrud = MasterDetailCrud.build(
Dependente, 'parlamentar', 'dependente')
class SessaoLegislativaCrud(CrudAux):
model = SessaoLegislativa
@ -57,6 +58,13 @@ class SessaoLegislativaCrud(CrudAux):
form_class = SessaoLegislativaForm
class PartidoCrud(CrudAux):
model = Partido
class UpdateView(CrudAux.UpdateView):
form_class = PartidoForm
class VotanteView(MasterDetailCrud):
model = Votante
parent_field = 'parlamentar'
@ -754,6 +762,37 @@ class MesaDiretoraView(FormView):
})
class EditaNomePartidoView(PermissionRequiredMixin, FormView):
form_class = EditarNomePartidoForm
template_name = 'parlamentares/altera_nome_partido_form.html'
permission_required = ('parlamentares.change_partido',)
def get_initial(self):
initial = super(EditaNomePartidoView, self).get_initial()
initial['partido_pk'] = self.kwargs['pk']
return initial
def form_valid(self, form):
data = form.cleaned_data
obj = Partido.objects.get(id=self.kwargs['pk'])
observacao = "Este partido teve o nome alterado de " + obj.nome + \
" (" + obj.sigla + ") para " + data['nome'] + " (" + data['sigla'] \
+ ") em " + data['data_alteracao'].strftime("%d/%m/%Y") + "."
obj.nome = data['nome']
obj.sigla = data['sigla']
obj.observacao += '\n\n' + observacao
obj.save()
return HttpResponseRedirect(self.get_success_url())
def get_success_url(self):
url_reverse = reverse('sapl.parlamentares:partido_detail',
kwargs={'pk': self.kwargs['pk']})
return url_reverse
def altera_field_mesa(request):
"""
Essa função lida com qualquer alteração nos campos

3
sapl/sessao/forms.py

@ -991,3 +991,6 @@ class VotacaoEmBlocoFilterSet(MateriaLegislativaFilterSet):
row4, row5, row6, row7, row8, row9,
form_actions(label='Pesquisar'))
)
class PartidoForm(forms.ModelForm):
pass

7
sapl/templates/parlamentares/altera_nome_partido_form.html

@ -0,0 +1,7 @@
{% extends 'crud/detail.html' %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block detail_content %}
{% crispy form %}
{% endblock detail_content %}

13
sapl/templates/parlamentares/partido_detail.html

@ -0,0 +1,13 @@
{% extends 'crud/detail.html' %}
{% load i18n %}
{% block actions %}
{{ block.super }}
<div class="actions btn-group pull-right grid-gutter-width-left " role="group">
<a href="{% url 'sapl.parlamentares:altera_nome_partido' object.id %}" class="btn btn-default">{% trans 'Alterar o Nome do Partido' %}</a>
</div>
{% endblock actions %}
Loading…
Cancel
Save