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 _
class OradorForm():
pass
class PresencaForm(forms.Form):
presenca = forms.CharField(required=False, initial=False)
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'))
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):
parlamentar = forms.IntegerField(required=True)
cargo = forms.IntegerField(required=True)

6
sessao/layouts.yaml

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

14
sessao/urls.py

@ -6,8 +6,7 @@ from sessao.views import (EditExpedienteOrdemDiaView, EditMateriaOrdemDiaView,
ExpedienteOrdemDiaView, ExpedienteView,
ListExpedienteOrdemDiaView, ListMateriaOrdemDiaView,
MateriaOrdemDiaView, MesaView,
OradorExpedienteDelete, OradorExpedienteEdit,
OradorExpedienteView, PainelView,
PainelView,
PautaExpedienteDetail, PautaOrdemDetail,
PautaSessaoDetailView, PautaSessaoListView,
PresencaOrdemDiaView, PresencaView, ResumoView,
@ -17,7 +16,7 @@ from sessao.views import (EditExpedienteOrdemDiaView, EditMateriaOrdemDiaView,
VotacaoExpedienteView, VotacaoNominalEditView,
VotacaoNominalExpedienteEditView,
VotacaoNominalExpedienteView, VotacaoNominalView,
VotacaoView, OradorCrud)
VotacaoView, OradorCrud, OradorExpedienteCrud)
from .apps import AppConfig
@ -28,7 +27,8 @@ sessao_rest = [
]
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,
{'document_root': settings.MEDIA_ROOT}),
@ -60,12 +60,6 @@ urlpatterns = [
url(r'^(?P<pk>\d+)/presencaordemdia$',
PresencaOrdemDiaView.as_view(),
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+)/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 sessao.serializers import SessaoPlenariaSerializer
from .forms import (ExpedienteForm, ListMateriaForm, MateriaOrdemDiaForm,
MesaForm, OradorDeleteForm, OradorForm, PresencaForm,
MesaForm, PresencaForm,
VotacaoEditForm, VotacaoForm, VotacaoNominalForm)
from .models import (CargoMesa, ExpedienteMateria, ExpedienteSessao,
IntegranteMesa, MateriaLegislativa, Orador,
@ -39,6 +39,15 @@ TipoExpedienteCrud = Crud.build(TipoExpediente, 'tipo_expediente')
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):
model = Orador
parent_field = 'sessao_plenaria'
@ -698,161 +707,6 @@ class EditExpedienteOrdemDiaView(FormMixin, SessaoCrud.CrudDetailView):
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):
template_name = 'sessao/mesa.html'
form_class = MesaForm

2
templates/sessao/subnav.yaml

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

Loading…
Cancel
Save