Browse Source

Crud orador expediente

pull/444/head
Eduardo Edson Batista Cordeiro Alves 10 years ago
parent
commit
edb4b7e6df
  1. 16
      sessao/forms.py
  2. 6
      sessao/layouts.yaml
  3. 14
      sessao/urls.py
  4. 166
      sessao/views.py
  5. 2
      templates/sessao/subnav.yaml

16
sessao/forms.py

@ -2,10 +2,6 @@ from django import forms
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
class OradorForm():
pass
class PresencaForm(forms.Form): class PresencaForm(forms.Form):
presenca = forms.CharField(required=False, initial=False) presenca = forms.CharField(required=False, initial=False)
parlamentar = forms.CharField(required=False, max_length=20) parlamentar = forms.CharField(required=False, max_length=20)
@ -32,18 +28,6 @@ class MateriaOrdemDiaForm(forms.Form):
error_message = forms.CharField(required=False, label=_('Matéria')) error_message = forms.CharField(required=False, label=_('Matéria'))
class OradorForm(forms.Form):
numero_ordem = forms.IntegerField(
required=True,
label=_('Ordem de pronunciamento'))
parlamentar = forms.CharField(required=False, max_length=20)
url_discurso = forms.CharField(required=False, max_length=100)
class OradorDeleteForm(forms.Form):
pass
class MesaForm(forms.Form): class MesaForm(forms.Form):
parlamentar = forms.IntegerField(required=True) parlamentar = forms.IntegerField(required=True)
cargo = forms.IntegerField(required=True) cargo = forms.IntegerField(required=True)

6
sessao/layouts.yaml

@ -41,5 +41,9 @@ RegistroVotacao:
- observacao - observacao
Orador: Orador:
Orador: Orador das Explicações Pessoais:
- numero_ordem parlamentar url_discurso
OradorExpediente:
Orador do Expediente:
- numero_ordem parlamentar url_discurso - numero_ordem parlamentar url_discurso

14
sessao/urls.py

@ -6,8 +6,7 @@ from sessao.views import (EditExpedienteOrdemDiaView, EditMateriaOrdemDiaView,
ExpedienteOrdemDiaView, ExpedienteView, ExpedienteOrdemDiaView, ExpedienteView,
ListExpedienteOrdemDiaView, ListMateriaOrdemDiaView, ListExpedienteOrdemDiaView, ListMateriaOrdemDiaView,
MateriaOrdemDiaView, MesaView, MateriaOrdemDiaView, MesaView,
OradorExpedienteDelete, OradorExpedienteEdit, PainelView,
OradorExpedienteView, PainelView,
PautaExpedienteDetail, PautaOrdemDetail, PautaExpedienteDetail, PautaOrdemDetail,
PautaSessaoDetailView, PautaSessaoListView, PautaSessaoDetailView, PautaSessaoListView,
PresencaOrdemDiaView, PresencaView, ResumoView, PresencaOrdemDiaView, PresencaView, ResumoView,
@ -17,7 +16,7 @@ from sessao.views import (EditExpedienteOrdemDiaView, EditMateriaOrdemDiaView,
VotacaoExpedienteView, VotacaoNominalEditView, VotacaoExpedienteView, VotacaoNominalEditView,
VotacaoNominalExpedienteEditView, VotacaoNominalExpedienteEditView,
VotacaoNominalExpedienteView, VotacaoNominalView, VotacaoNominalExpedienteView, VotacaoNominalView,
VotacaoView, OradorCrud) VotacaoView, OradorCrud, OradorExpedienteCrud)
from .apps import AppConfig from .apps import AppConfig
@ -28,7 +27,8 @@ sessao_rest = [
] ]
urlpatterns = [ urlpatterns = [
url(r'^sessao/', include(SessaoCrud.get_urls() + OradorCrud.get_urls())), url(r'^sessao/', include(SessaoCrud.get_urls() + OradorCrud.get_urls() +
OradorExpedienteCrud.get_urls())),
url(r'^media/(?P<path>.*)$', serve, url(r'^media/(?P<path>.*)$', serve,
{'document_root': settings.MEDIA_ROOT}), {'document_root': settings.MEDIA_ROOT}),
@ -60,12 +60,6 @@ urlpatterns = [
url(r'^(?P<pk>\d+)/presencaordemdia$', url(r'^(?P<pk>\d+)/presencaordemdia$',
PresencaOrdemDiaView.as_view(), PresencaOrdemDiaView.as_view(),
name='presencaordemdia'), name='presencaordemdia'),
url(r'^(?P<pk>\d+)/oradorexpediente$',
OradorExpedienteView.as_view(), name='oradorexpediente'),
url(r'^(?P<pk>\d+)/oradorexpediente/excluir/(?P<oid>\d+)$',
OradorExpedienteDelete.as_view(), name='oradorexcluir'),
url(r'^(?P<pk>\d+)/oradorexpediente/editar/(?P<oid>\d+)$',
OradorExpedienteEdit.as_view(), name='oradoreditar'),
url(r'^(?P<pk>\d+)/mesa$', MesaView.as_view(), name='mesa'), url(r'^(?P<pk>\d+)/mesa$', MesaView.as_view(), name='mesa'),
url(r'^(?P<pk>\d+)/materiaordemdia/list$', url(r'^(?P<pk>\d+)/materiaordemdia/list$',
ListMateriaOrdemDiaView.as_view(), name='materiaordemdia_list'), ListMateriaOrdemDiaView.as_view(), name='materiaordemdia_list'),

166
sessao/views.py

@ -21,7 +21,7 @@ from norma.models import NormaJuridica
from parlamentares.models import Parlamentar from parlamentares.models import Parlamentar
from sessao.serializers import SessaoPlenariaSerializer from sessao.serializers import SessaoPlenariaSerializer
from .forms import (ExpedienteForm, ListMateriaForm, MateriaOrdemDiaForm, from .forms import (ExpedienteForm, ListMateriaForm, MateriaOrdemDiaForm,
MesaForm, OradorDeleteForm, OradorForm, PresencaForm, MesaForm, PresencaForm,
VotacaoEditForm, VotacaoForm, VotacaoNominalForm) VotacaoEditForm, VotacaoForm, VotacaoNominalForm)
from .models import (CargoMesa, ExpedienteMateria, ExpedienteSessao, from .models import (CargoMesa, ExpedienteMateria, ExpedienteSessao,
IntegranteMesa, MateriaLegislativa, Orador, IntegranteMesa, MateriaLegislativa, Orador,
@ -39,6 +39,15 @@ TipoExpedienteCrud = Crud.build(TipoExpediente, 'tipo_expediente')
RegistroVotacaoCrud = Crud.build(RegistroVotacao, '') RegistroVotacaoCrud = Crud.build(RegistroVotacao, '')
class OradorExpedienteCrud(MasterDetailCrud):
model = OradorExpediente
parent_field = 'sessao_plenaria'
help_path = ''
class ListView(MasterDetailCrud.ListView):
ordering = ['numero_ordem', 'parlamentar']
class OradorCrud(MasterDetailCrud): class OradorCrud(MasterDetailCrud):
model = Orador model = Orador
parent_field = 'sessao_plenaria' parent_field = 'sessao_plenaria'
@ -698,161 +707,6 @@ class EditExpedienteOrdemDiaView(FormMixin, SessaoCrud.CrudDetailView):
kwargs={'pk': pk}) kwargs={'pk': pk})
class OradorExpedienteDelete(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/delete_orador.html'
form_class = OradorDeleteForm
def post(self, request, *args, **kwargs):
self.object = self.get_object()
orador_id = kwargs['oid']
form = OradorDeleteForm(request.POST)
if form.is_valid():
orador = OradorExpediente.objects.get(
sessao_plenaria_id=self.object.id,
parlamentar_id=orador_id)
orador.delete()
return self.form_valid(form)
else:
return self.form_invalid(form)
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('sessao:oradorexpediente', kwargs={'pk': pk})
class OradorExpedienteEdit(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/edit_orador.html'
form_class = OradorForm
def post(self, request, *args, **kwargs):
self.object = self.get_object()
form = OradorForm(request.POST)
if form.is_valid():
orador_id = kwargs['oid']
orador = OradorExpediente.objects.get(
sessao_plenaria_id=self.object.id,
parlamentar_id=orador_id)
orador.delete()
orador = OradorExpediente()
orador.sessao_plenaria_id = self.object.id
orador.numero_ordem = request.POST['numero_ordem']
orador.parlamentar = Parlamentar.objects.get(
id=orador_id)
orador.url_discurso = request.POST['url_discurso']
orador.save()
return self.form_valid(form)
else:
context = self.get_context_data(object=self.object)
orador_id = kwargs['oid']
parlamentar = Parlamentar.objects.get(id=orador_id)
orador = OradorExpediente.objects.get(
sessao_plenaria=self.object, parlamentar=parlamentar)
orador = {'parlamentar': parlamentar,
'url_discurso': orador.url_discurso}
context.update({'orador': orador})
context.update({'form': form})
return self.render_to_response(context)
def get(self, request, *args, **kwargs):
self.object = self.get_object()
context = self.get_context_data(object=self.object)
orador_id = kwargs['oid']
parlamentar = Parlamentar.objects.get(id=orador_id)
orador = OradorExpediente.objects.get(
sessao_plenaria=self.object, parlamentar=parlamentar)
orador = {'parlamentar': parlamentar, 'numero_ordem':
orador.numero_ordem, 'url_discurso': orador.url_discurso}
context.update({'orador': orador})
return self.render_to_response(context)
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('sessao:oradorexpediente', kwargs={'pk': pk})
class OradorExpedienteView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/orador_expediente.html'
form_class = OradorForm
def get(self, request, *args, **kwargs):
self.object = self.get_object()
context = self.get_context_data(object=self.object)
return self.render_to_response(context)
def post(self, request, *args, **kwargs):
self.object = self.get_object()
form = OradorForm(request.POST)
if 'adicionar' in request.POST:
if form.is_valid():
orador = OradorExpediente()
orador.sessao_plenaria_id = self.object.id
orador.numero_ordem = request.POST['numero_ordem']
orador.parlamentar = Parlamentar.objects.get(
id=request.POST['parlamentar'])
orador.url_discurso = request.POST['url_discurso']
orador.save()
return self.form_valid(form)
else:
return self.form_invalid(form)
elif 'reordenar' in request.POST:
orador = OradorExpediente.objects.filter(
sessao_plenaria_id=self.object.id)
ordem_num = 1
for o in orador:
o.numero_ordem = ordem_num
o.save()
ordem_num += 1
return self.get(self, request, args, kwargs)
def get_candidatos_orador(self):
self.object = self.get_object()
lista_parlamentares = []
lista_oradores = []
for parlamentar in Parlamentar.objects.all():
if parlamentar.ativo:
lista_parlamentares.append(parlamentar)
for orador in OradorExpediente.objects.filter(
sessao_plenaria_id=self.object.id):
parlamentar = Parlamentar.objects.get(
id=orador.parlamentar_id)
lista_oradores.append(parlamentar)
lista = list(set(lista_parlamentares) - set(lista_oradores))
lista.sort(key=lambda x: x.nome_parlamentar)
return lista
def get_oradores(self):
self.object = self.get_object()
for orador in OradorExpediente.objects.filter(
sessao_plenaria_id=self.object.id):
numero_ordem = orador.numero_ordem
url_discurso = orador.url_discurso
parlamentar = Parlamentar.objects.get(
id=orador.parlamentar_id)
yield(numero_ordem, url_discurso, parlamentar)
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('sessao:oradorexpediente', kwargs={'pk': pk})
class MesaView(FormMixin, SessaoCrud.CrudDetailView): class MesaView(FormMixin, SessaoCrud.CrudDetailView):
template_name = 'sessao/mesa.html' template_name = 'sessao/mesa.html'
form_class = MesaForm form_class = MesaForm

2
templates/sessao/subnav.yaml

@ -16,7 +16,7 @@
- title: Matérias Expediente - title: Matérias Expediente
url: expedienteordemdia_list url: expedienteordemdia_list
- title: Oradores do Expediente - title: Oradores do Expediente
url: oradorexpediente url: oradorexpediente_list
- title: Ordem do Dia - title: Ordem do Dia
children: children:

Loading…
Cancel
Save