diff --git a/sapl/base/urls.py b/sapl/base/urls.py
index d5e4ae98a..ea7d54a04 100644
--- a/sapl/base/urls.py
+++ b/sapl/base/urls.py
@@ -92,7 +92,8 @@ urlpatterns = [
# todos os sublinks de sistema devem vir acima deste
url(r'^sistema/$', permission_required('base.view_tabelas_auxiliares')
- (TemplateView.as_view(template_name='sistema.html'))),
+ (TemplateView.as_view(template_name='sistema.html')),
+ name='sistema'),
url(r'^login/$', views.login, {
'template_name': 'base/login.html', 'authentication_form': LoginForm},
diff --git a/sapl/materia/migrations/0005_auto_20170522_1051.py b/sapl/materia/migrations/0005_auto_20170522_1051.py
new file mode 100644
index 000000000..5904fa7d1
--- /dev/null
+++ b/sapl/materia/migrations/0005_auto_20170522_1051.py
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2017-05-22 10:51
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import sapl.materia.models
+import sapl.utils
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('materia', '0004_auto_20170504_1751'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='documentoacessorio',
+ name='arquivo',
+ field=models.FileField(blank=True, null=True, upload_to=sapl.materia.models.anexo_upload_path, validators=[sapl.utils.restringe_tipos_de_arquivo_txt], verbose_name='Texto Integral'),
+ ),
+ migrations.AlterField(
+ model_name='materialegislativa',
+ name='texto_original',
+ field=models.FileField(blank=True, null=True, upload_to=sapl.materia.models.materia_upload_path, validators=[sapl.utils.restringe_tipos_de_arquivo_txt], verbose_name='Texto Original'),
+ ),
+ migrations.AlterField(
+ model_name='proposicao',
+ name='texto_original',
+ field=models.FileField(blank=True, null=True, upload_to=sapl.materia.models.materia_upload_path, validators=[sapl.utils.restringe_tipos_de_arquivo_txt], verbose_name='Texto Original'),
+ ),
+ ]
diff --git a/sapl/norma/migrations/0004_auto_20170522_1051.py b/sapl/norma/migrations/0004_auto_20170522_1051.py
new file mode 100644
index 000000000..d2a3b4a8c
--- /dev/null
+++ b/sapl/norma/migrations/0004_auto_20170522_1051.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2017-05-22 10:51
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import sapl.norma.models
+import sapl.utils
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('norma', '0003_auto_20170510_1549'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='normajuridica',
+ name='texto_integral',
+ field=models.FileField(blank=True, null=True, upload_to=sapl.norma.models.norma_upload_path, validators=[sapl.utils.restringe_tipos_de_arquivo_txt], verbose_name='Texto Integral'),
+ ),
+ ]
diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py
index 4303dabcc..cd3dc5e6a 100644
--- a/sapl/sessao/forms.py
+++ b/sapl/sessao/forms.py
@@ -28,7 +28,7 @@ def recupera_anos():
# apos a adicao do .dates(), por isso o reversed() abaixo
anos = [(k.year, k.year) for k in reversed(anos_list)]
return anos
- except:
+ except Exception:
return []
@@ -39,6 +39,18 @@ MES_CHOICES = [('', '---------')] + RANGE_MESES
DIA_CHOICES = [('', '---------')] + RANGE_DIAS_MES
+ORDENACAO_RESUMO = [('cont_mult', 'Conteúdo Multimídia'),
+ ('exp', 'Expedientes'),
+ ('id_basica', 'Identificação Básica'),
+ ('lista_p', 'Lista de Presença'),
+ ('lista_p_o_d', 'Lista de Presença Ordem do Dia'),
+ ('mat_exp', 'Matérias do Expediente'),
+ ('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')]
+
+
class BancadaForm(ModelForm):
class Meta:
@@ -359,3 +371,70 @@ class OradorExpedienteForm(ModelForm):
class PautaSessaoFilterSet(SessaoPlenariaFilterSet):
titulo = _('Pesquisa de Pauta de Sessão')
+
+
+class ResumoOrdenacaoForm(forms.Form):
+ primeiro = forms.ChoiceField(label=_('1°'),
+ choices=ORDENACAO_RESUMO)
+ segundo = forms.ChoiceField(label=_('2°'),
+ choices=ORDENACAO_RESUMO)
+ terceiro = forms.ChoiceField(label=u'3°',
+ choices=ORDENACAO_RESUMO)
+ quarto = forms.ChoiceField(label=_('4°'),
+ choices=ORDENACAO_RESUMO)
+ quinto = forms.ChoiceField(label=_('5°'),
+ choices=ORDENACAO_RESUMO)
+ sexto = forms.ChoiceField(label=_('6°'),
+ choices=ORDENACAO_RESUMO)
+ setimo = forms.ChoiceField(label=_('7°'),
+ choices=ORDENACAO_RESUMO)
+ oitavo = forms.ChoiceField(label=_('8°'),
+ choices=ORDENACAO_RESUMO)
+ decimo = forms.ChoiceField(label=_('9°'),
+ choices=ORDENACAO_RESUMO)
+ nono = forms.ChoiceField(label=u'10°',
+ choices=ORDENACAO_RESUMO)
+
+ def __init__(self, *args, **kwargs):
+ super(ResumoOrdenacaoForm, self).__init__(*args, **kwargs)
+
+ row1 = to_row(
+ [('primeiro', 12)])
+ row2 = to_row(
+ [('segundo', 12)])
+ row3 = to_row(
+ [('terceiro', 12)])
+ row4 = to_row(
+ [('quarto', 12)])
+ row5 = to_row(
+ [('quinto', 12)])
+ row6 = to_row(
+ [('sexto', 12)])
+ row7 = to_row(
+ [('setimo', 12)])
+ row8 = to_row(
+ [('oitavo', 12)])
+ row9 = to_row(
+ [('nono', 12)])
+ row10 = to_row(
+ [('decimo', 12)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset(_('Pesquisa de Matéria'),
+ row1, row2, row3, row4, row5,
+ row6, row7, row8, row9, row10,
+ form_actions(save_label='Atualizar'))
+ )
+
+ def clean(self):
+ cleaned_data = self.cleaned_data
+
+ for c1 in cleaned_data:
+ i = 0
+ for c2 in cleaned_data:
+ if cleaned_data[str(c1)] == cleaned_data[str(c2)]:
+ i = i + 1
+ if i > 1:
+ raise ValidationError(_(
+ 'Não é possível ter campos repetidos'))
diff --git a/sapl/sessao/migrations/0003_resumoordenacao.py b/sapl/sessao/migrations/0003_resumoordenacao.py
new file mode 100644
index 000000000..ef6e990c5
--- /dev/null
+++ b/sapl/sessao/migrations/0003_resumoordenacao.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2017-05-22 10:51
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('sessao', '0002_sessaoplenaria_interativa'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='ResumoOrdenacao',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('primeiro', models.CharField(max_length=30)),
+ ('segundo', models.CharField(max_length=30)),
+ ('terceiro', models.CharField(max_length=30)),
+ ('quarto', models.CharField(max_length=30)),
+ ('quinto', models.CharField(max_length=30)),
+ ('sexto', models.CharField(max_length=30)),
+ ('setimo', models.CharField(max_length=30)),
+ ('oitavo', models.CharField(max_length=30)),
+ ('nono', models.CharField(max_length=30)),
+ ('decimo', models.CharField(max_length=30)),
+ ],
+ options={
+ 'verbose_name': 'Ordenação do Resumo de uma Sessão',
+ 'verbose_name_plural': 'Ordenação do Resumo de uma Sessão',
+ },
+ ),
+ ]
diff --git a/sapl/sessao/models.py b/sapl/sessao/models.py
index b76fac9f3..4d7c22ca1 100644
--- a/sapl/sessao/models.py
+++ b/sapl/sessao/models.py
@@ -493,3 +493,28 @@ class Bloco(models.Model):
def __str__(self):
return self.nome
+
+
+@reversion.register()
+class ResumoOrdenacao(models.Model):
+ '''
+ Tabela para registrar em qual ordem serão renderizados os componentes
+ da tela de resumo de uma sessão
+ '''
+ primeiro = models.CharField(max_length=30)
+ segundo = models.CharField(max_length=30)
+ terceiro = models.CharField(max_length=30)
+ quarto = models.CharField(max_length=30)
+ quinto = models.CharField(max_length=30)
+ sexto = models.CharField(max_length=30)
+ setimo = models.CharField(max_length=30)
+ oitavo = models.CharField(max_length=30)
+ nono = models.CharField(max_length=30)
+ decimo = models.CharField(max_length=30)
+
+ class Meta:
+ verbose_name = _('Ordenação do Resumo de uma Sessão')
+ verbose_name_plural = _('Ordenação do Resumo de uma Sessão')
+
+ def __str__(self):
+ return 'Ordenação do Resumo de uma Sessão'
diff --git a/sapl/sessao/urls.py b/sapl/sessao/urls.py
index f237bf721..93fd953bb 100644
--- a/sapl/sessao/urls.py
+++ b/sapl/sessao/urls.py
@@ -10,7 +10,8 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
PautaSessaoDetailView, PautaSessaoListView,
PesquisarPautaSessaoView,
PesquisarSessaoPlenariaView,
- PresencaOrdemDiaView, PresencaView, ResumoView,
+ PresencaOrdemDiaView, PresencaView,
+ ResumoOrdenacaoView, ResumoView,
SessaoCrud, TipoExpedienteCrud,
TipoResultadoVotacaoCrud, TipoSessaoCrud,
VotacaoEditView, VotacaoExpedienteEditView,
@@ -68,6 +69,9 @@ urlpatterns = [
include(BlocoCrud.get_urls())),
url(r'^sistema/cargo-bancada/',
include(CargoBancadaCrud.get_urls())),
+ url(r'^sistema/resumo-ordenacao/',
+ ResumoOrdenacaoView.as_view(),
+ name='resumo_ordenacao'),
url(r'^sessao/(?P