Browse Source

cria ocorrencia sessao

pull/2231/head
DTILegBG 7 years ago
parent
commit
b069b07490
  1. 6
      sapl/sessao/forms.py
  2. 4
      sapl/sessao/legacy.yaml
  3. 28
      sapl/sessao/migrations/0024_ocorrenciasessao.py
  4. 14
      sapl/sessao/models.py
  5. 4
      sapl/sessao/urls.py
  6. 83
      sapl/sessao/views.py
  7. 2
      sapl/templates/sessao/subnav.yaml

6
sapl/sessao/forms.py

@ -54,7 +54,8 @@ ORDENACAO_RESUMO = [('cont_mult', 'Conteúdo Multimídia'),
('mat_o_d', 'Matérias da Ordem do Dia'), ('mat_o_d', 'Matérias da Ordem do Dia'),
('mesa_d', 'Mesa Diretora'), ('mesa_d', 'Mesa Diretora'),
('oradores_exped', 'Oradores do Expediente'), ('oradores_exped', 'Oradores do Expediente'),
('oradores_expli', 'Oradores das Explicações Pessoais')] ('oradores_expli', 'Oradores das Explicações Pessoais'),
('ocorrencia_sessao', 'Ocorrências da Sessão')]
class SessaoPlenariaForm(ModelForm): class SessaoPlenariaForm(ModelForm):
@ -411,6 +412,9 @@ class MesaForm(forms.Form):
class ExpedienteForm(forms.Form): class ExpedienteForm(forms.Form):
conteudo = forms.CharField(required=False, widget=forms.Textarea) conteudo = forms.CharField(required=False, widget=forms.Textarea)
class OcorrenciaSessaoForm(forms.Form):
conteudo = forms.CharField(required=False, widget=forms.Textarea)
class VotacaoForm(forms.Form): class VotacaoForm(forms.Form):
votos_sim = forms.CharField(label='Sim') votos_sim = forms.CharField(label='Sim')

4
sapl/sessao/legacy.yaml

@ -34,6 +34,10 @@ ExpedienteSessao (ExpedienteSessaoPlenaria):
sessao_plenaria: cod_sessao_plen sessao_plenaria: cod_sessao_plen
tipo: cod_expediente tipo: cod_expediente
OcorrenciaSessao (OcorrenciaSessaoPlenaria):
conteudo: txt_ocorrencia
sessao_plenaria: cod_sessao_plen
IntegranteMesa (MesaSessaoPlenaria): IntegranteMesa (MesaSessaoPlenaria):
cargo: cod_cargo cargo: cod_cargo
parlamentar: cod_parlamentar parlamentar: cod_parlamentar

28
sapl/sessao/migrations/0024_ocorrenciasessao.py

@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2018-09-18 13:44
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('sessao', '0023_auto_20180914_1315'),
]
operations = [
migrations.CreateModel(
name='OcorrenciaSessao',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('conteudo', models.TextField(blank=True, verbose_name='Ocorrências da Sessão Plenária')),
('sessao_plenaria', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='sessao.SessaoPlenaria')),
],
options={
'verbose_name_plural': 'Ocorrências da Sessão Plenaria',
'verbose_name': 'Ocorrência da Sessão Plenaria',
},
),
]

14
sapl/sessao/models.py

@ -300,6 +300,20 @@ class ExpedienteSessao(models.Model): # ExpedienteSessaoPlenaria
def __str__(self): def __str__(self):
return '%s - %s' % (self.tipo, self.sessao_plenaria) return '%s - %s' % (self.tipo, self.sessao_plenaria)
@reversion.register()
class OcorrenciaSessao(models.Model): # OcorrenciaSessaoPlenaria
sessao_plenaria = models.ForeignKey(SessaoPlenaria,
on_delete=models.PROTECT)
conteudo = models.TextField(
blank=True, verbose_name=_('Ocorrências da Sessão Plenária'))
class Meta:
verbose_name = _('Ocorrência da Sessão Plenaria')
verbose_name_plural = _('Ocorrências da Sessão Plenaria')
def __str__(self):
return '%s - %s' % (self.sessao_plenaria)
@reversion.register() @reversion.register()
class IntegranteMesa(models.Model): # MesaSessaoPlenaria class IntegranteMesa(models.Model): # MesaSessaoPlenaria

4
sapl/sessao/urls.py

@ -3,7 +3,7 @@ from django.conf.urls import include, url
from sapl.sessao.views import (AdicionarVariasMateriasExpediente, from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
AdicionarVariasMateriasOrdemDia, BancadaCrud, AdicionarVariasMateriasOrdemDia, BancadaCrud,
BlocoCrud, CargoBancadaCrud, BlocoCrud, CargoBancadaCrud,
ExpedienteMateriaCrud, ExpedienteView, ExpedienteMateriaCrud, ExpedienteView, ocorrencia_sessaoView,
MateriaOrdemDiaCrud, MesaView, OradorCrud, MateriaOrdemDiaCrud, MesaView, OradorCrud,
OradorExpedienteCrud, PainelView, OradorExpedienteCrud, PainelView,
PautaSessaoDetailView, PautaSessaoView, PautaSessaoDetailView, PautaSessaoView,
@ -100,6 +100,8 @@ urlpatterns = [
# Subnav sessão # Subnav sessão
url(r'^sessao/(?P<pk>\d+)/expediente$', url(r'^sessao/(?P<pk>\d+)/expediente$',
ExpedienteView.as_view(), name='expediente'), ExpedienteView.as_view(), name='expediente'),
url(r'^sessao/(?P<pk>\d+)/ocorrencia_sessao$',
ocorrencia_sessaoView.as_view(), name='ocorrencia_sessao'),
url(r'^sessao/(?P<pk>\d+)/presenca$', url(r'^sessao/(?P<pk>\d+)/presenca$',
PresencaView.as_view(), name='presenca'), PresencaView.as_view(), name='presenca'),
url(r'^sessao/(?P<pk>\d+)/painel$', url(r'^sessao/(?P<pk>\d+)/painel$',

83
sapl/sessao/views.py

@ -37,13 +37,13 @@ from sapl.sessao.forms import ExpedienteMateriaForm, OrdemDiaForm
from sapl.utils import show_results_filter_set, remover_acentos from sapl.utils import show_results_filter_set, remover_acentos
from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm, BlocoForm, from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm, BlocoForm,
ExpedienteForm, ListMateriaForm, MesaForm, ExpedienteForm, OcorrenciaSessaoForm, ListMateriaForm, MesaForm,
OradorExpedienteForm, OradorForm, PautaSessaoFilterSet, OradorExpedienteForm, OradorForm, PautaSessaoFilterSet,
PresencaForm, ResumoOrdenacaoForm, SessaoPlenariaFilterSet, PresencaForm, ResumoOrdenacaoForm, SessaoPlenariaFilterSet,
SessaoPlenariaForm, VotacaoEditForm, VotacaoForm, SessaoPlenariaForm, VotacaoEditForm, VotacaoForm,
VotacaoNominalForm) VotacaoNominalForm)
from .models import (Bancada, Bloco, CargoBancada, CargoMesa, from .models import (Bancada, Bloco, CargoBancada, CargoMesa,
ExpedienteMateria, ExpedienteSessao, IntegranteMesa, ExpedienteMateria, ExpedienteSessao, OcorrenciaSessao, IntegranteMesa,
MateriaLegislativa, Orador, OradorExpediente, OrdemDia, MateriaLegislativa, Orador, OradorExpediente, OrdemDia,
PresencaOrdemDia, RegistroVotacao, ResumoOrdenacao, PresencaOrdemDia, RegistroVotacao, ResumoOrdenacao,
SessaoPlenaria, SessaoPlenariaPresenca, TipoExpediente, SessaoPlenaria, SessaoPlenariaPresenca, TipoExpediente,
@ -1536,6 +1536,83 @@ class ExpedienteView(FormMixin, DetailView):
pk = self.kwargs['pk'] pk = self.kwargs['pk']
return reverse('sapl.sessao:expediente', kwargs={'pk': pk}) return reverse('sapl.sessao:expediente', kwargs={'pk': pk})
class ocorrencia_sessaoView(FormMixin, DetailView):
template_name = 'sessao/ocorrencia_sessao.html'
form_class = OcorrenciaSessaoForm
model = SessaoPlenaria
def get_context_data(self, **kwargs):
context = FormMixin.get_context_data(self, **kwargs)
context['title'] = '%s <small>(%s)</small>' % (
_('Ocorrências da Sessão'), self.object)
return context
@method_decorator(permission_required('sessao.add_ocorrenciasessao'))
def post(self, request, *args, **kwargs):
self.object = self.get_object()
form = OcorrenciaSessaoForm(request.POST)
if 'apagar-ocorrencia_sessao' in request.POST:
OcorrenciaSessao.objects.filter(
sessao_plenaria_id=self.object.id).delete()
return self.form_valid(form)
if form.is_valid():
list_conteudo = request.POST.getlist('conteudo')
for tipo, conteudo in zip(list_tipo, list_conteudo):
ExpedienteSessao.objects.filter(
sessao_plenaria_id=self.object.id,
tipo_id=tipo).delete()
expediente = ExpedienteSessao()
expediente.sessao_plenaria_id = self.object.id
expediente.tipo_id = tipo
expediente.conteudo = conteudo
expediente.save()
msg = _('Registro salvo com sucesso')
messages.add_message(self.request, messages.SUCCESS, msg)
return self.form_valid(form)
else:
msg = _('Erro ao salvar registro')
messages.add_message(self.request, messages.SUCCESS, msg)
return self.form_invalid(form)
def get(self, request, *args, **kwargs):
self.object = self.get_object()
context = self.get_context_data(object=self.object)
tipos = TipoExpediente.objects.all().order_by('nome')
expedientes_sessao = ExpedienteSessao.objects.filter(
sessao_plenaria_id=self.object.id).order_by('tipo__nome')
expedientes_salvos = []
for e in expedientes_sessao:
expedientes_salvos.append(e.tipo)
tipos_null = list(set(tipos) - set(expedientes_salvos))
tipos_null.sort(key=lambda x: x.nome)
expedientes = []
for e, t in zip(expedientes_sessao, tipos):
expedientes.append({'tipo': e.tipo,
'conteudo': e.conteudo
})
context.update({'expedientes': expedientes})
for e in tipos_null:
expedientes.append({'tipo': e,
'conteudo': ''
})
context.update({'expedientes': expedientes})
return self.render_to_response(context)
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('sapl.sessao:ocorrencia_sessao', kwargs={'pk': pk})
class VotacaoEditView(SessaoPermissionMixin): class VotacaoEditView(SessaoPermissionMixin):
@ -1645,7 +1722,7 @@ class VotacaoView(SessaoPermissionMixin):
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
self.object = self.get_object() self.object = self.get_object()
form = VotacaoForm(request.POST) form = VotacaoForm(request.POST)
context = self.get_context_data(object=self.object) context = self.get_context_d(object=self.object)
url = request.get_full_path() url = request.get_full_path()
# ==================================================== # ====================================================

2
sapl/templates/sessao/subnav.yaml

@ -10,6 +10,8 @@
url: presenca url: presenca
- title: {% trans 'Explicações Pessoais' %} - title: {% trans 'Explicações Pessoais' %}
url: orador_list url: orador_list
- title: {% trans 'Ocorrências da Sessão' %}
url: ocorrencia_sessao
- title: {% trans 'Expedientes' %} - title: {% trans 'Expedientes' %}
children: children:

Loading…
Cancel
Save