Browse Source

Merge d10a441eda into 8c38e061cd

pull/2231/merge
Rogério Frá 7 years ago
committed by GitHub
parent
commit
d56316cb8a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 41
      sapl/rules/map_rules.py
  2. 6
      sapl/sessao/forms.py
  3. 4
      sapl/sessao/legacy.yaml
  4. 28
      sapl/sessao/migrations/0024_ocorrenciasessao.py
  5. 21
      sapl/sessao/migrations/0025_auto_20180919_1116.py
  6. 15
      sapl/sessao/models.py
  7. 4
      sapl/sessao/urls.py
  8. 52
      sapl/sessao/views.py
  9. 30
      sapl/templates/sessao/ocorrencia_sessao.html
  10. 2
      sapl/templates/sessao/subnav.yaml

41
sapl/rules/map_rules.py

@ -1,23 +1,3 @@
from sapl.base import models as base
from sapl.comissoes import models as comissoes
from sapl.compilacao import models as compilacao
from sapl.lexml import models as lexml
from sapl.materia import models as materia
from sapl.norma import models as norma
from sapl.painel import models as painel
from sapl.parlamentares import models as parlamentares
from sapl.protocoloadm import models as protocoloadm
from sapl.audiencia import models as audiencia
from sapl.rules import (RP_ADD, RP_CHANGE, RP_DELETE, RP_DETAIL, RP_LIST,
SAPL_GROUP_ADMINISTRATIVO, SAPL_GROUP_ANONYMOUS,
SAPL_GROUP_AUTOR, SAPL_GROUP_COMISSOES,
SAPL_GROUP_GERAL, SAPL_GROUP_LOGIN_SOCIAL,
SAPL_GROUP_MATERIA, SAPL_GROUP_NORMA,
SAPL_GROUP_PAINEL, SAPL_GROUP_PARLAMENTAR,
SAPL_GROUP_PROTOCOLO, SAPL_GROUP_SESSAO,
SAPL_GROUP_VOTANTE)
from sapl.sessao import models as sessao
"""
Todas as permissões do django framework seguem o padrão
@ -46,6 +26,26 @@ negócio trabalham com os cinco radiais de permissão
e com qualquer outro tipo de permissão customizada, nesta ordem de precedência.
"""
from sapl.audiencia import models as audiencia
from sapl.base import models as base
from sapl.comissoes import models as comissoes
from sapl.compilacao import models as compilacao
from sapl.lexml import models as lexml
from sapl.materia import models as materia
from sapl.norma import models as norma
from sapl.painel import models as painel
from sapl.parlamentares import models as parlamentares
from sapl.protocoloadm import models as protocoloadm
from sapl.rules import (RP_ADD, RP_CHANGE, RP_DELETE, RP_DETAIL, RP_LIST,
SAPL_GROUP_ADMINISTRATIVO, SAPL_GROUP_ANONYMOUS,
SAPL_GROUP_AUTOR, SAPL_GROUP_COMISSOES,
SAPL_GROUP_GERAL, SAPL_GROUP_LOGIN_SOCIAL,
SAPL_GROUP_MATERIA, SAPL_GROUP_NORMA,
SAPL_GROUP_PAINEL, SAPL_GROUP_PARLAMENTAR,
SAPL_GROUP_PROTOCOLO, SAPL_GROUP_SESSAO,
SAPL_GROUP_VOTANTE)
from sapl.sessao import models as sessao
__base__ = [RP_LIST, RP_DETAIL, RP_ADD, RP_CHANGE, RP_DELETE]
__listdetailchange__ = [RP_LIST, RP_DETAIL, RP_CHANGE]
@ -161,6 +161,7 @@ rules_group_sessao = {
(sessao.ExpedienteMateria, __base__),
(sessao.IntegranteMesa, __base__),
(sessao.ExpedienteSessao, __base__),
(sessao.OcorrenciaSessao, __base__),
(sessao.Orador, __base__),
(sessao.OradorExpediente, __base__),
(sessao.OrdemDia, __base__),

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'),
('mesa_d', 'Mesa Diretora'),
('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):
@ -411,6 +412,9 @@ class MesaForm(forms.Form):
class ExpedienteForm(forms.Form):
conteudo = forms.CharField(required=False, widget=forms.Textarea)
class OcorrenciaSessaoForm(forms.Form):
conteudo = forms.CharField(required=True, widget=forms.Textarea)
class VotacaoForm(forms.Form):
votos_sim = forms.CharField(label='Sim')

4
sapl/sessao/legacy.yaml

@ -34,6 +34,10 @@ ExpedienteSessao (ExpedienteSessaoPlenaria):
sessao_plenaria: cod_sessao_plen
tipo: cod_expediente
OcorrenciaSessao (OcorrenciaSessaoPlenaria):
conteudo: txt_ocorrencia
sessao_plenaria: cod_sessao_plen
IntegranteMesa (MesaSessaoPlenaria):
cargo: cod_cargo
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',
},
),
]

21
sapl/sessao/migrations/0025_auto_20180919_1116.py

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.13 on 2018-09-19 14:16
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('sessao', '0024_ocorrenciasessao'),
]
operations = [
migrations.AlterField(
model_name='ocorrenciasessao',
name='sessao_plenaria',
field=models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='sessao.SessaoPlenaria'),
),
]

15
sapl/sessao/models.py

@ -301,6 +301,21 @@ class ExpedienteSessao(models.Model): # ExpedienteSessaoPlenaria
return '%s - %s' % (self.tipo, self.sessao_plenaria)
@reversion.register()
class OcorrenciaSessao(models.Model): # OcorrenciaSessaoPlenaria
sessao_plenaria = models.OneToOneField(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, self.conteudo)
@reversion.register()
class IntegranteMesa(models.Model): # MesaSessaoPlenaria
sessao_plenaria = models.ForeignKey(SessaoPlenaria,

4
sapl/sessao/urls.py

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

52
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 .forms import (AdicionarVariasMateriasFilterSet, BancadaForm, BlocoForm,
ExpedienteForm, ListMateriaForm, MesaForm,
ExpedienteForm, OcorrenciaSessaoForm, ListMateriaForm, MesaForm,
OradorExpedienteForm, OradorForm, PautaSessaoFilterSet,
PresencaForm, ResumoOrdenacaoForm, SessaoPlenariaFilterSet,
SessaoPlenariaForm, VotacaoEditForm, VotacaoForm,
VotacaoNominalForm)
from .models import (Bancada, Bloco, CargoBancada, CargoMesa,
ExpedienteMateria, ExpedienteSessao, IntegranteMesa,
ExpedienteMateria, ExpedienteSessao, OcorrenciaSessao, IntegranteMesa,
MateriaLegislativa, Orador, OradorExpediente, OrdemDia,
PresencaOrdemDia, RegistroVotacao, ResumoOrdenacao,
SessaoPlenaria, SessaoPlenariaPresenca, TipoExpediente,
@ -1455,9 +1455,12 @@ class ResumoView(DetailView):
'decimo_ordenacao': dict_ord_template['oradores_expli']})
return self.render_to_response(context)
class ResumoAtaView(ResumoView):
template_name = 'sessao/resumo_ata.html'
class ExpedienteView(FormMixin, DetailView):
template_name = 'sessao/expediente.html'
form_class = ExpedienteForm
@ -1537,6 +1540,51 @@ class ExpedienteView(FormMixin, DetailView):
return reverse('sapl.sessao:expediente', kwargs={'pk': pk})
class OcorrenciaSessaoView(FormMixin, DetailView):
template_name = 'sessao/ocorrencia_sessao.html'
form_class = OcorrenciaSessaoForm
model = SessaoPlenaria
def get_context_data(self, **kwargs):
context = super().get_context_data(**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():
conteudo = request.POST.get('conteudo')
OcorrenciaSessao.objects.filter(
sessao_plenaria_id=self.object.id).delete()
ocorrencia = OcorrenciaSessao()
ocorrencia.sessao_plenaria_id = self.object.id
ocorrencia.conteudo = conteudo
ocorrencia.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_success_url(self):
pk = self.kwargs['pk']
return reverse('sapl.sessao:ocorrencia_sessao', kwargs={'pk': pk})
class VotacaoEditView(SessaoPermissionMixin):
'''

30
sapl/templates/sessao/ocorrencia_sessao.html

@ -0,0 +1,30 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% load common_tags %}
{% block actions %}{% endblock %}
{% block detail_content %}
{% if perms|get_add_perm:view %}
<form method="post">
{% csrf_token %}
<fieldset class="form-group">
<textarea rows="5" cols="50" name="conteudo" id="conteudo" class="form-control">{{object.ocorrenciasessao.conteudo}}</textarea>
</fieldset>
<input type="submit" value="Salvar" class="btn btn-primary"/>
<input type="submit" id="apagar-ocorrencia_sessao" name="apagar-ocorrencia_sessao" value="Apagar" class="btn btn-danger" />
</form>
{% else %}
{{object.ocorrenciasessao.conteudo|safe}}
{% endif %}
{% endblock detail_content %}
<!-- Texto RICO -->
{% block extra_js %}
{% if perms|get_add_perm:view %}
<script language="JavaScript">
initTinymce(null);
</script>
{% endif %}
{% endblock %}

2
sapl/templates/sessao/subnav.yaml

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

Loading…
Cancel
Save