Browse Source

Add crud bancada, parlamentarbancada

pull/3043/head
João Rodrigues 6 years ago
parent
commit
c8f2ca52f8
  1. 174
      sapl/parlamentares/views.py

174
sapl/parlamentares/views.py

@ -1,11 +1,15 @@
from datetime import datetime
import json import json
import logging import logging
from datetime import datetime
from django_filters.views import FilterView
from image_cropping.utils import get_backend
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.mixins import PermissionRequiredMixin from django.contrib.auth.mixins import PermissionRequiredMixin
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist from django.core.exceptions import (ObjectDoesNotExist,
MultipleObjectsReturned)
from django.core.urlresolvers import reverse, reverse_lazy from django.core.urlresolvers import reverse, reverse_lazy
from django.db.models import F, Q from django.db.models import F, Q
from django.db.models.aggregates import Count from django.db.models.aggregates import Count
@ -19,33 +23,37 @@ from django.utils.translation import ugettext_lazy as _
from django.views.decorators.clickjacking import xframe_options_exempt from django.views.decorators.clickjacking import xframe_options_exempt
from django.views.generic import FormView from django.views.generic import FormView
from django.views.generic.edit import UpdateView from django.views.generic.edit import UpdateView
from django_filters.views import FilterView
from image_cropping.utils import get_backend
from sapl.base.forms import SessaoLegislativaForm, PartidoForm, PartidoUpdateForm from sapl.base.forms import (PartidoForm, PartidoUpdateForm,
SessaoLegislativaForm)
from sapl.base.models import Autor from sapl.base.models import Autor
from sapl.comissoes.models import Participacao from sapl.comissoes.models import Participacao
from sapl.crud.base import (RP_CHANGE, RP_DETAIL, RP_LIST, Crud, CrudAux, from sapl.crud.base import (Crud, CrudAux,
CrudBaseForListAndDetailExternalAppView, CrudBaseForListAndDetailExternalAppView,
MasterDetailCrud, make_pagination) make_pagination, MasterDetailCrud,
RP_CHANGE, RP_DETAIL, RP_LIST)
from sapl.materia.models import Autoria, Proposicao, Relatoria from sapl.materia.models import Autoria, Proposicao, Relatoria
from sapl.parlamentares.apps import AppConfig from sapl.parlamentares.apps import AppConfig
from sapl.utils import (parlamentares_ativos, show_results_filter_set) from sapl.utils import parlamentares_ativos, show_results_filter_set
from .forms import (FiliacaoForm, FrenteForm, LegislaturaForm, MandatoForm, from .forms import (AfastamentoParlamentarForm, BancadaForm, BlocoForm,
ParlamentarCreateForm, ParlamentarForm, VotanteForm, CargoBlocoForm, CargoBlocoPartidoForm, FiliacaoForm,
ParlamentarFilterSet, VincularParlamentarForm, FrenteForm, LegislaturaForm, MandatoForm,
BlocoForm, CargoBlocoForm, CargoBlocoPartidoForm, ParlamentarBancadaForm, ParlamentarCreateForm,
BancadaForm, AfastamentoParlamentarForm, ParlamentarFrenteForm) ParlamentarFilterSet, ParlamentarForm,
ParlamentarFrenteForm, VincularParlamentarForm,
VotanteForm)
from .models import (Bancada, CargoBancada, CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa, from .models import (AfastamentoParlamentar, Bancada, Bloco,
Dependente, Filiacao, Frente, Legislatura, Mandato, CargoBancada, CargoBloco, CargoBlocoPartido,
NivelInstrucao, Parlamentar, Partido, SessaoLegislativa, CargoFrente, CargoMesa, Coligacao,
SituacaoMilitar, TipoAfastamento, TipoDependente, Votante, ComposicaoColigacao, ComposicaoMesa, Dependente,
Bloco, CargoBlocoPartido, HistoricoPartido, CargoBloco, Filiacao, Frente, HistoricoPartido, Legislatura,
ParlamentarFrente, AfastamentoParlamentar, CargoFrente) Mandato, NivelInstrucao, Parlamentar,
ParlamentarBancada, ParlamentarFrente, Partido,
SessaoLegislativa, SituacaoMilitar,
TipoAfastamento, TipoDependente, Votante)
CargoBancadaCrud = CrudAux.build(CargoBancada, '') CargoBancadaCrud = CrudAux.build(CargoBancada, '')
@ -114,28 +122,79 @@ class VotanteView(MasterDetailCrud):
kwargs={'pk': obj.parlamentar.pk})) kwargs={'pk': obj.parlamentar.pk}))
class BancadaCrud(CrudAux): class BancadaCrud(Crud):
model = Bancada model = Bancada
public = [RP_DETAIL, RP_LIST]
list_field_names = ['legislatura','nome', 'partido', 'data_criacao', 'data_extincao']
class CreateView(CrudAux.CreateView): class BaseMixin(Crud.BaseMixin):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['subnav_template_name'] = ''
return context
class CreateView(Crud.CreateView):
form_class = BancadaForm form_class = BancadaForm
def get_success_url(self): def form_valid(self, form):
return reverse('sapl.parlamentares:bancada_list') return super(Crud.CreateView, self).form_valid(form)
class UpdateView(Crud.UpdateView):
form_class = BancadaForm
class FrenteList(MasterDetailCrud): class ParlamentarBancadaCrud(MasterDetailCrud):
model = Frente model = ParlamentarBancada
is_m2m = True parent_field = 'bancada'
parent_field = 'parlamentares' help_topic = 'parlamentar_bancada'
CreateView, UpdateView, DeleteView = None, None, None public = [RP_LIST, RP_DETAIL]
class BaseMixin(Crud.PublicMixin, MasterDetailCrud.BaseMixin): class CreateView(MasterDetailCrud.CreateView):
list_field_names = ['nome', 'data_criacao', 'data_extincao'] form_class = ParlamentarBancadaForm
@classmethod def get_context_data(self, **kwargs):
def url_name(cls, suffix): context = super().get_context_data(**kwargs)
return '%s_parlamentar_%s' % (cls.model._meta.model_name, suffix) context['subnav_template_name'] = ''
return context
def get_initial(self):
self.initial['bancada'] = Bancada.objects.get(pk=self.kwargs['pk'])
return self.initial
class UpdateView(MasterDetailCrud.UpdateView):
form_class = ParlamentarBancadaForm
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['subnav_template_name'] = ''
return context
class DetailView(MasterDetailCrud.DetailView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['subnav_template_name'] = ''
return context
class ListView(MasterDetailCrud.ListView):
layout_key = 'ParlamentarBancadaList'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['subnav_template_name'] = ''
new_rows = []
rows = context['rows']
for row in rows:
parlamentar = Parlamentar.objects.get(nome_parlamentar=row[1][0])
new_row = row
new_row[1] = (row[1][0], '/parlamentar/'+str(parlamentar.id))
new_rows.append(new_row)
context['rows'] = new_rows
return context
class RelatoriaParlamentarCrud(CrudBaseForListAndDetailExternalAppView): class RelatoriaParlamentarCrud(CrudBaseForListAndDetailExternalAppView):
@ -344,53 +403,6 @@ def json_date_convert(date):
return datetime.strptime(date, "%d/%m/%Y").date() return datetime.strptime(date, "%d/%m/%Y").date()
def frente_atualiza_lista_parlamentares(request):
"""
:param request: recebe os parâmetros do GET da chamada Ajax
:return: retorna a lista atualizada dos parlamentares
"""
ativos = json.loads(request.GET['ativos'])
parlamentares = Parlamentar.objects.all()
if ativos:
if 'data_criacao' in request.GET and request.GET['data_criacao']:
data_criacao = json_date_convert(request.GET['data_criacao'])
if 'data_extincao' in request.GET and request.GET['data_extincao']:
data_extincao = json_date_convert(request.GET['data_extincao'])
parlamentares = parlamentares_ativos(data_criacao,
data_extincao)
else:
parlamentares = parlamentares_ativos(data_criacao)
parlamentares_list = [(p.id, p.__str__()) for p in parlamentares]
return JsonResponse({'parlamentares_list': parlamentares_list})
def parlamentares_frente_selected(request):
"""
:return: Lista com o id dos parlamentares em uma frente
"""
logger = logging.getLogger(__name__)
username = request.user.username
try:
logger.info("user=" + username +
". Tentando objet objeto Frente com id={}.".format(request.GET['frente_id']))
frente = Frente.objects.get(id=int(request.GET['frente_id']))
except ObjectDoesNotExist:
logger.error("user=" + username +
". Frente buscada (id={}) não existe. Retornada lista vazia.".format(request.GET['frente_id']))
lista_parlamentar_id = []
else:
logger.info("user=" + username +
". Frente (id={}) encontrada com sucesso.".format(request.GET['frente_id']))
lista_parlamentar_id = frente.parlamentares.all().values_list(
'id', flat=True)
return JsonResponse({'id_list': list(lista_parlamentar_id)})
class FrenteCrud(Crud): class FrenteCrud(Crud):
model = Frente model = Frente
help_topic = 'tipo_situa_militar' help_topic = 'tipo_situa_militar'

Loading…
Cancel
Save