Sistema de Apoio ao Processo Legislativo
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

480 lines
16 KiB

from datetime import datetime
import django_filters
from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Button, Fieldset, Layout
from django import forms
from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _
from sapl.crispy_layout_mixin import form_actions, to_row
from sapl.materia.forms import MateriaLegislativaFilterSet
from sapl.materia.models import (MateriaLegislativa, StatusTramitacao,
TipoMateriaLegislativa)
8 years ago
from sapl.parlamentares.models import Parlamentar
from sapl.utils import (RANGE_DIAS_MES, RANGE_MESES,
MateriaPesquisaOrderingFilter, autor_label,
autor_modal)
8 years ago
from .models import (Bancada, ExpedienteMateria, Orador, OradorExpediente,
8 years ago
OrdemDia, SessaoPlenaria, SessaoPlenariaPresenca)
def recupera_anos():
try:
anos_list = SessaoPlenaria.objects.all().dates('data_inicio', 'year')
8 years ago
# a listagem deve ser em ordem descrescente, mas por algum motivo
# a adicao de .order_by acima depois do all() nao surte efeito
# apos a adicao do .dates(), por isso o reversed() abaixo
anos = [(k.year, k.year) for k in reversed(anos_list)]
return anos
Fix #414 ordem resumo (#1109) * Divide o template de resumo em blocos * Cria a funcionalidade * Pequena correcao * add arq sql no instalador de reutil. da app sapl * Conserta erro teste * fix #1092 - Altera o destino dos documentos migrados (#1093) * Altera o destino dos documentos migrados Signed-off-by: Luciano Almeida <lucianoalmeida@interlegis.leg.br> * Usa a data de matéria em doc acessório Signed-off-by: Luciano Almeida <lucianoalmeida@interlegis.leg.br> * ajusta caminho public private * Faz a ordenação para o arquivo impresso * fix #1098 (#1107) * Padroniza tamanho foto para mesa (#1088) * Adiciona permissão a tela de ordenação * Bug Fix * Fix 1104 (#1110) * adiciona poppler-utils (#1113) * Adiciona poppler-utils, onde está pdftotext que é usado por indexador. * redesenha a exibição dos votos na tela de votação nominal #1100 (#1101) * resultado de votação nominal * Update nominal_detail.html * Update nominal_edit.html * Adiciona URL do Interlegis ao rodapé da página. * Somente mostra interessado se Doc Adm e mostra Autor em listagem de pesquisa * HOT-FIX: identificador de protocolo errado * Atualiza código devido a deprecated na drf * HOT-FIX: possível fix para erro de render no search index * Add pesquisa em Autor pelo campo ativo de parlamentar * Gera migração referente ao commit #285d32e Signed-off-by: Eliseu Egewarth <eliseuegewarth@gmail.com> * Add bsc param de Autor nos Models lig via GR a Autor * campo texto para autor documentos acessorios em lote (#1117) * Conserto paliativo para doc acessorio em lote * Conserta DocumentoAcessorioEmLote * fix conserta acessorio em lote (#1119) * Melhorias no detail de protocolo * Captura erro de indexação de arquivo. * Fix #1111 * Divide o template de resumo em blocos * Cria a funcionalidade * Pequena correcao * Conserta erro teste * Faz a ordenação para o arquivo impresso * Adiciona permissão a tela de ordenação * Faz o merge das migrations
8 years ago
except Exception:
return []
def ANO_CHOICES():
return [('', '---------')] + recupera_anos()
MES_CHOICES = [('', '---------')] + RANGE_MESES
DIA_CHOICES = [('', '---------')] + RANGE_DIAS_MES
Fix #414 ordem resumo (#1109) * Divide o template de resumo em blocos * Cria a funcionalidade * Pequena correcao * add arq sql no instalador de reutil. da app sapl * Conserta erro teste * fix #1092 - Altera o destino dos documentos migrados (#1093) * Altera o destino dos documentos migrados Signed-off-by: Luciano Almeida <lucianoalmeida@interlegis.leg.br> * Usa a data de matéria em doc acessório Signed-off-by: Luciano Almeida <lucianoalmeida@interlegis.leg.br> * ajusta caminho public private * Faz a ordenação para o arquivo impresso * fix #1098 (#1107) * Padroniza tamanho foto para mesa (#1088) * Adiciona permissão a tela de ordenação * Bug Fix * Fix 1104 (#1110) * adiciona poppler-utils (#1113) * Adiciona poppler-utils, onde está pdftotext que é usado por indexador. * redesenha a exibição dos votos na tela de votação nominal #1100 (#1101) * resultado de votação nominal * Update nominal_detail.html * Update nominal_edit.html * Adiciona URL do Interlegis ao rodapé da página. * Somente mostra interessado se Doc Adm e mostra Autor em listagem de pesquisa * HOT-FIX: identificador de protocolo errado * Atualiza código devido a deprecated na drf * HOT-FIX: possível fix para erro de render no search index * Add pesquisa em Autor pelo campo ativo de parlamentar * Gera migração referente ao commit #285d32e Signed-off-by: Eliseu Egewarth <eliseuegewarth@gmail.com> * Add bsc param de Autor nos Models lig via GR a Autor * campo texto para autor documentos acessorios em lote (#1117) * Conserto paliativo para doc acessorio em lote * Conserta DocumentoAcessorioEmLote * fix conserta acessorio em lote (#1119) * Melhorias no detail de protocolo * Captura erro de indexação de arquivo. * Fix #1111 * Divide o template de resumo em blocos * Cria a funcionalidade * Pequena correcao * Conserta erro teste * Faz a ordenação para o arquivo impresso * Adiciona permissão a tela de ordenação * Faz o merge das migrations
8 years ago
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')]
8 years ago
class SessaoPlenariaForm(ModelForm):
class Meta:
model = SessaoPlenaria
exclude = ['cod_andamento_sessao']
def clean(self):
super(SessaoPlenariaForm, self).clean()
if not self.is_valid():
return self.cleaned_data
8 years ago
instance = self.instance
num = self.cleaned_data['numero']
sl = self.cleaned_data['sessao_legislativa']
leg = self.cleaned_data['legislatura']
tipo = self.cleaned_data['tipo']
8 years ago
error = ValidationError(
"Número de Sessão Plenária já existente "
"para a Legislatura, Sessão Legislativa e Tipo informados. "
"Favor escolher um número distinto.")
8 years ago
sessoes = SessaoPlenaria.objects.filter(numero=num,
sessao_legislativa=sl,
legislatura=leg,
tipo=tipo).\
values_list('id', flat=True)
8 years ago
qtd_sessoes = len(sessoes)
8 years ago
if qtd_sessoes > 0:
if instance.pk: # update
if instance.pk not in sessoes or qtd_sessoes > 1:
8 years ago
raise error
else: # create
8 years ago
raise error
return self.cleaned_data
Fix #414 ordem resumo (#1109) * Divide o template de resumo em blocos * Cria a funcionalidade * Pequena correcao * add arq sql no instalador de reutil. da app sapl * Conserta erro teste * fix #1092 - Altera o destino dos documentos migrados (#1093) * Altera o destino dos documentos migrados Signed-off-by: Luciano Almeida <lucianoalmeida@interlegis.leg.br> * Usa a data de matéria em doc acessório Signed-off-by: Luciano Almeida <lucianoalmeida@interlegis.leg.br> * ajusta caminho public private * Faz a ordenação para o arquivo impresso * fix #1098 (#1107) * Padroniza tamanho foto para mesa (#1088) * Adiciona permissão a tela de ordenação * Bug Fix * Fix 1104 (#1110) * adiciona poppler-utils (#1113) * Adiciona poppler-utils, onde está pdftotext que é usado por indexador. * redesenha a exibição dos votos na tela de votação nominal #1100 (#1101) * resultado de votação nominal * Update nominal_detail.html * Update nominal_edit.html * Adiciona URL do Interlegis ao rodapé da página. * Somente mostra interessado se Doc Adm e mostra Autor em listagem de pesquisa * HOT-FIX: identificador de protocolo errado * Atualiza código devido a deprecated na drf * HOT-FIX: possível fix para erro de render no search index * Add pesquisa em Autor pelo campo ativo de parlamentar * Gera migração referente ao commit #285d32e Signed-off-by: Eliseu Egewarth <eliseuegewarth@gmail.com> * Add bsc param de Autor nos Models lig via GR a Autor * campo texto para autor documentos acessorios em lote (#1117) * Conserto paliativo para doc acessorio em lote * Conserta DocumentoAcessorioEmLote * fix conserta acessorio em lote (#1119) * Melhorias no detail de protocolo * Captura erro de indexação de arquivo. * Fix #1111 * Divide o template de resumo em blocos * Cria a funcionalidade * Pequena correcao * Conserta erro teste * Faz a ordenação para o arquivo impresso * Adiciona permissão a tela de ordenação * Faz o merge das migrations
8 years ago
class BancadaForm(ModelForm):
class Meta:
model = Bancada
fields = ['legislatura', 'nome', 'partido', 'data_criacao',
'data_extincao', 'descricao']
def clean(self):
super(BancadaForm, self).clean()
if self.cleaned_data['data_extincao']:
if (self.cleaned_data['data_extincao'] <
self.cleaned_data['data_criacao']):
msg = _('Data de extinção não pode ser menor que a de criação')
raise ValidationError(msg)
return self.cleaned_data
class ExpedienteMateriaForm(ModelForm):
_model = ExpedienteMateria
tipo_materia = forms.ModelChoiceField(
label=_('Tipo Matéria'),
required=True,
queryset=TipoMateriaLegislativa.objects.all(),
empty_label='Selecione',
)
numero_materia = forms.CharField(
label='Número Matéria', required=True)
ano_materia = forms.CharField(
label='Ano Matéria', required=True)
data_ordem = forms.CharField(
8 years ago
label='Data Sessão',
initial=datetime.now().strftime('%d/%m/%Y'),
widget=forms.TextInput(attrs={'readonly': 'readonly'}))
class Meta:
model = ExpedienteMateria
fields = ['data_ordem', 'numero_ordem', 'tipo_materia', 'observacao',
'numero_materia', 'ano_materia', 'tipo_votacao']
8 years ago
def clean_numero_ordem(self):
sessao = self.instance.sessao_plenaria
8 years ago
numero_ordem_exists = ExpedienteMateria.objects.filter(
8 years ago
sessao_plenaria=sessao,
8 years ago
numero_ordem=self.cleaned_data['numero_ordem']).exists()
8 years ago
if numero_ordem_exists and not self.instance.pk:
8 years ago
msg = _('Esse número de ordem já existe.')
raise ValidationError(msg)
return self.cleaned_data['numero_ordem']
def clean_data_ordem(self):
8 years ago
return self.instance.sessao_plenaria.data_inicio
def clean(self):
cleaned_data = super(ExpedienteMateriaForm, self).clean()
if not self.is_valid():
return cleaned_data
7 years ago
8 years ago
sessao = self.instance.sessao_plenaria
try:
materia = MateriaLegislativa.objects.get(
numero=self.cleaned_data['numero_materia'],
ano=self.cleaned_data['ano_materia'],
tipo=self.cleaned_data['tipo_materia'])
except ObjectDoesNotExist:
msg = _('A matéria a ser inclusa não existe no cadastro'
' de matérias legislativas.')
raise ValidationError(msg)
else:
cleaned_data['materia'] = materia
exists = self._model.objects.filter(
8 years ago
sessao_plenaria=sessao,
materia=materia).exists()
8 years ago
if exists and not self.instance.pk:
8 years ago
msg = _('Essa matéria já foi cadastrada.')
raise ValidationError(msg)
return cleaned_data
def save(self, commit=False):
expediente = super(ExpedienteMateriaForm, self).save(commit)
expediente.materia = self.cleaned_data['materia']
expediente.save()
return expediente
class OrdemDiaForm(ExpedienteMateriaForm):
_model = OrdemDia
class Meta:
model = OrdemDia
fields = ['data_ordem', 'numero_ordem', 'tipo_materia', 'observacao',
'numero_materia', 'ano_materia', 'tipo_votacao']
def clean_data_ordem(self):
8 years ago
return self.instance.sessao_plenaria.data_inicio
8 years ago
def clean_numero_ordem(self):
sessao = self.instance.sessao_plenaria
numero_ordem_exists = OrdemDia.objects.filter(
sessao_plenaria=sessao,
numero_ordem=self.cleaned_data['numero_ordem']).exists()
8 years ago
if numero_ordem_exists and not self.instance.pk:
8 years ago
msg = _('Esse número de ordem já existe.')
raise ValidationError(msg)
return self.cleaned_data['numero_ordem']
def clean(self):
cleaned_data = super(OrdemDiaForm, self).clean()
if not self.is_valid():
return cleaned_data
return self.cleaned_data
def save(self, commit=False):
ordem = super(OrdemDiaForm, self).save(commit)
ordem.materia = self.cleaned_data['materia']
ordem.save()
return ordem
class PresencaForm(forms.Form):
presenca = forms.CharField(required=False, initial=False)
parlamentar = forms.CharField(required=False, max_length=20)
class VotacaoNominalForm(forms.Form):
pass
class ListMateriaForm(forms.Form):
error_message = forms.CharField(required=False, label='votacao_aberta')
class MesaForm(forms.Form):
parlamentar = forms.IntegerField(required=True)
cargo = forms.IntegerField(required=True)
class ExpedienteForm(forms.Form):
conteudo = forms.CharField(required=False, widget=forms.Textarea)
class VotacaoForm(forms.Form):
votos_sim = forms.CharField(required=True, label='Sim')
votos_nao = forms.CharField(required=True, label='Não')
abstencoes = forms.CharField(required=True, label='Abstenções')
total_votos = forms.CharField(required=False, label='total')
class VotacaoEditForm(forms.Form):
pass
class SessaoPlenariaFilterSet(django_filters.FilterSet):
data_inicio__year = django_filters.ChoiceFilter(required=False,
label='Ano',
choices=ANO_CHOICES)
data_inicio__month = django_filters.ChoiceFilter(required=False,
label='Mês',
choices=MES_CHOICES)
data_inicio__day = django_filters.ChoiceFilter(required=False,
label='Dia',
choices=DIA_CHOICES)
titulo = _('Pesquisa de Sessão Plenária')
class Meta:
model = SessaoPlenaria
fields = ['tipo']
def __init__(self, *args, **kwargs):
super(SessaoPlenariaFilterSet, self).__init__(*args, **kwargs)
row1 = to_row(
[('data_inicio__year', 3),
('data_inicio__month', 3),
('data_inicio__day', 3),
('tipo', 3)])
self.form.helper = FormHelper()
self.form.helper.form_method = 'GET'
self.form.helper.layout = Layout(
Fieldset(self.titulo,
row1,
form_actions(save_label='Pesquisar'))
)
class AdicionarVariasMateriasFilterSet(MateriaLegislativaFilterSet):
8 years ago
o = MateriaPesquisaOrderingFilter()
8 years ago
tramitacao__status = django_filters.ModelChoiceFilter(
required=True,
queryset=StatusTramitacao.objects.all(),
label=_('Status da Matéria'))
class Meta:
model = MateriaLegislativa
8 years ago
fields = ['tramitacao__status',
'numero',
'numero_protocolo',
'ano',
'tipo',
'data_apresentacao',
'data_publicacao',
'autoria__autor__tipo',
# FIXME 'autoria__autor__partido',
'relatoria__parlamentar_id',
'local_origem_externa',
'em_tramitacao',
]
def __init__(self, *args, **kwargs):
super(MateriaLegislativaFilterSet, self).__init__(*args, **kwargs)
self.filters['tipo'].label = 'Tipo de Matéria'
self.filters['autoria__autor__tipo'].label = 'Tipo de Autor'
706 refatorar model autor tipoautor (#739) * Ref Autor, TipoAutor, cria app api DRF - Autor e TipoAutor migrados para app base. - Foram refatorados para GR - Generic Relations - Em TipoAutor: passou se a apontar também para um ContentType que é usado para contextualização de dados da GR em Autor. - A captura da combo de ContentTypes é feita através do apontamento reverso nos models que se queira disponibilizar conceitualmente como Autor - Em Autor: neste commit, o form de create está em desenvolvimento, com o buscador de possiveis autores baseados na seleção do usuário de TipoAutor que, se não possui ContentType, abre o campo nome para insersão, se possui ContentType, abre caixa de busca com atualização jquery de radiobox&#39;s para o usuário selecionar um possível autor. - api rest: para a busca funcionar e como objetivo de futuras implementações em DRF, a app api foi criada, anotada nas configurações gerais de sapl.urls com o prefixo /api. - na api foi criada a uma ListAPIView para pesquisa de possiveis autores baseados no tipo autor enviado, url /api/autor/possiveis/?P&lt;pk&gt;[0-9]*)$ que sem pk devolve a lista de TipoAutor e, com pk, devolve a lista dos registros ligados ao ContentType, filtrados pelo parametro q * Ajusta front para busca por possiveis autores Ajusta front e implementa SaplGenericRelation, uma customização que adiciona o atributo fields_search que possibilita passar para qualquer implementação de busca quais são os campos de busca padrão do do GenericRelation * Conc refatoração no Cada de Autor e Tipos de Autor * Alt backend de perm e pag de drf e ref layout topo * Add procedimento na alteração de username de Autor Na edição de Autores foi adicionado o tratamento por opção do usuário do que deve ser feito com o usuário que está sendo desvinculado no caso de uma alteração do username de um Autor. Foram dadas três opções: 1) Apenas retirar Perfil de Autor do Usuário que está sendo desvinculado 2) Retirar Perfil de Autor e desativar Usuário que está sendo desvinculado 3) Excluir Usuário * Add field cargo em AutorForm para tipos sem CT Cadastro de Autores de Tipos sem ContentType podem adicionar nome, cargo e usuário. * Add Bloco, Bancada, Frente possíveis Tip de Autores * Corrige frase de mensagem no cadastro de Autor * ref buscador modal de Autores c pesq param reversa * Add documentação e faz modificações na api/autor * Ref Crud para Listar GenericRelations * Ref List da aba Proposições para parlamentares * Altera imports de teste na app materia * Corrige comentários da classe AutorListView * Customiza layout do drf docs. * Altera criação do grp Autor para inc list e detail * Remove customização do bootstrap Após fork e ajustes feitos no tema drunken-parrot-ui-flat, alterações feitas nos arquivos deste commit não são mais necessárias, passando a ser renderizado os arquivos que são padrão da biblioteca django-crispy-forms. * Adequa inserção dinamica de radio ao crispy-forms
8 years ago
# self.filters['autoria__autor__partido'].label = 'Partido do Autor'
self.filters['relatoria__parlamentar_id'].label = 'Relatoria'
row1 = to_row(
8 years ago
[('tramitacao__status', 12)])
row2 = to_row(
8 years ago
[('tipo', 12)])
row3 = to_row(
[('numero', 4),
('ano', 4),
('numero_protocolo', 4)])
8 years ago
row4 = to_row(
[('data_apresentacao', 6),
('data_publicacao', 6)])
8 years ago
row5 = to_row(
[('autoria__autor', 0),
(Button('pesquisar',
'Pesquisar Autor',
css_class='btn btn-primary btn-sm'), 2),
(Button('limpar',
'limpar Autor',
css_class='btn btn-primary btn-sm'), 10)])
8 years ago
row6 = to_row(
[('autoria__autor__tipo', 6),
706 refatorar model autor tipoautor (#739) * Ref Autor, TipoAutor, cria app api DRF - Autor e TipoAutor migrados para app base. - Foram refatorados para GR - Generic Relations - Em TipoAutor: passou se a apontar também para um ContentType que é usado para contextualização de dados da GR em Autor. - A captura da combo de ContentTypes é feita através do apontamento reverso nos models que se queira disponibilizar conceitualmente como Autor - Em Autor: neste commit, o form de create está em desenvolvimento, com o buscador de possiveis autores baseados na seleção do usuário de TipoAutor que, se não possui ContentType, abre o campo nome para insersão, se possui ContentType, abre caixa de busca com atualização jquery de radiobox&#39;s para o usuário selecionar um possível autor. - api rest: para a busca funcionar e como objetivo de futuras implementações em DRF, a app api foi criada, anotada nas configurações gerais de sapl.urls com o prefixo /api. - na api foi criada a uma ListAPIView para pesquisa de possiveis autores baseados no tipo autor enviado, url /api/autor/possiveis/?P&lt;pk&gt;[0-9]*)$ que sem pk devolve a lista de TipoAutor e, com pk, devolve a lista dos registros ligados ao ContentType, filtrados pelo parametro q * Ajusta front para busca por possiveis autores Ajusta front e implementa SaplGenericRelation, uma customização que adiciona o atributo fields_search que possibilita passar para qualquer implementação de busca quais são os campos de busca padrão do do GenericRelation * Conc refatoração no Cada de Autor e Tipos de Autor * Alt backend de perm e pag de drf e ref layout topo * Add procedimento na alteração de username de Autor Na edição de Autores foi adicionado o tratamento por opção do usuário do que deve ser feito com o usuário que está sendo desvinculado no caso de uma alteração do username de um Autor. Foram dadas três opções: 1) Apenas retirar Perfil de Autor do Usuário que está sendo desvinculado 2) Retirar Perfil de Autor e desativar Usuário que está sendo desvinculado 3) Excluir Usuário * Add field cargo em AutorForm para tipos sem CT Cadastro de Autores de Tipos sem ContentType podem adicionar nome, cargo e usuário. * Add Bloco, Bancada, Frente possíveis Tip de Autores * Corrige frase de mensagem no cadastro de Autor * ref buscador modal de Autores c pesq param reversa * Add documentação e faz modificações na api/autor * Ref Crud para Listar GenericRelations * Ref List da aba Proposições para parlamentares * Altera imports de teste na app materia * Corrige comentários da classe AutorListView * Customiza layout do drf docs. * Altera criação do grp Autor para inc list e detail * Remove customização do bootstrap Após fork e ajustes feitos no tema drunken-parrot-ui-flat, alterações feitas nos arquivos deste commit não são mais necessárias, passando a ser renderizado os arquivos que são padrão da biblioteca django-crispy-forms. * Adequa inserção dinamica de radio ao crispy-forms
8 years ago
# ('autoria__autor__partido', 6)
])
8 years ago
row7 = to_row(
[('relatoria__parlamentar_id', 6),
('local_origem_externa', 6)])
8 years ago
row8 = to_row(
[('em_tramitacao', 6),
('o', 6)])
8 years ago
row9 = to_row(
[('ementa', 12)])
self.form.helper = FormHelper()
self.form.helper.form_method = 'GET'
self.form.helper.layout = Layout(
Fieldset(_('Pesquisa de Matéria'),
row1, row2, row3,
HTML(autor_label),
HTML(autor_modal),
8 years ago
row4, row5, row6, row7, row8, row9,
form_actions(save_label='Pesquisar'))
)
8 years ago
class OradorForm(ModelForm):
def __init__(self, *args, **kwargs):
8 years ago
super(OradorForm, self).__init__(*args, **kwargs)
8 years ago
id_sessao = int(self.initial['id_sessao'])
8 years ago
ids = [s.parlamentar.id for
s in SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=id_sessao)]
8 years ago
self.fields['parlamentar'].queryset = Parlamentar.objects.filter(
id__in=ids).order_by('nome_completo')
8 years ago
class Meta:
model = Orador
exclude = ['sessao_plenaria']
class OradorExpedienteForm(ModelForm):
def __init__(self, *args, **kwargs):
8 years ago
super(OradorExpedienteForm, self).__init__(*args, **kwargs)
8 years ago
self.fields['parlamentar'].queryset = Parlamentar.objects.filter(
ativo=True).order_by('nome_completo')
8 years ago
class Meta:
model = OradorExpediente
exclude = ['sessao_plenaria']
class PautaSessaoFilterSet(SessaoPlenariaFilterSet):
titulo = _('Pesquisa de Pauta de Sessão')
Fix #414 ordem resumo (#1109) * Divide o template de resumo em blocos * Cria a funcionalidade * Pequena correcao * add arq sql no instalador de reutil. da app sapl * Conserta erro teste * fix #1092 - Altera o destino dos documentos migrados (#1093) * Altera o destino dos documentos migrados Signed-off-by: Luciano Almeida &lt;lucianoalmeida@interlegis.leg.br&gt; * Usa a data de matéria em doc acessório Signed-off-by: Luciano Almeida &lt;lucianoalmeida@interlegis.leg.br&gt; * ajusta caminho public private * Faz a ordenação para o arquivo impresso * fix #1098 (#1107) * Padroniza tamanho foto para mesa (#1088) * Adiciona permissão a tela de ordenação * Bug Fix * Fix 1104 (#1110) * adiciona poppler-utils (#1113) * Adiciona poppler-utils, onde está pdftotext que é usado por indexador. * redesenha a exibição dos votos na tela de votação nominal #1100 (#1101) * resultado de votação nominal * Update nominal_detail.html * Update nominal_edit.html * Adiciona URL do Interlegis ao rodapé da página. * Somente mostra interessado se Doc Adm e mostra Autor em listagem de pesquisa * HOT-FIX: identificador de protocolo errado * Atualiza código devido a deprecated na drf * HOT-FIX: possível fix para erro de render no search index * Add pesquisa em Autor pelo campo ativo de parlamentar * Gera migração referente ao commit #285d32e Signed-off-by: Eliseu Egewarth &lt;eliseuegewarth@gmail.com&gt; * Add bsc param de Autor nos Models lig via GR a Autor * campo texto para autor documentos acessorios em lote (#1117) * Conserto paliativo para doc acessorio em lote * Conserta DocumentoAcessorioEmLote * fix conserta acessorio em lote (#1119) * Melhorias no detail de protocolo * Captura erro de indexação de arquivo. * Fix #1111 * Divide o template de resumo em blocos * Cria a funcionalidade * Pequena correcao * Conserta erro teste * Faz a ordenação para o arquivo impresso * Adiciona permissão a tela de ordenação * Faz o merge das migrations
8 years ago
class ResumoOrdenacaoForm(forms.Form):
primeiro = forms.ChoiceField(label=_(''),
choices=ORDENACAO_RESUMO)
segundo = forms.ChoiceField(label=_(''),
choices=ORDENACAO_RESUMO)
terceiro = forms.ChoiceField(label='',
Fix #414 ordem resumo (#1109) * Divide o template de resumo em blocos * Cria a funcionalidade * Pequena correcao * add arq sql no instalador de reutil. da app sapl * Conserta erro teste * fix #1092 - Altera o destino dos documentos migrados (#1093) * Altera o destino dos documentos migrados Signed-off-by: Luciano Almeida &lt;lucianoalmeida@interlegis.leg.br&gt; * Usa a data de matéria em doc acessório Signed-off-by: Luciano Almeida &lt;lucianoalmeida@interlegis.leg.br&gt; * ajusta caminho public private * Faz a ordenação para o arquivo impresso * fix #1098 (#1107) * Padroniza tamanho foto para mesa (#1088) * Adiciona permissão a tela de ordenação * Bug Fix * Fix 1104 (#1110) * adiciona poppler-utils (#1113) * Adiciona poppler-utils, onde está pdftotext que é usado por indexador. * redesenha a exibição dos votos na tela de votação nominal #1100 (#1101) * resultado de votação nominal * Update nominal_detail.html * Update nominal_edit.html * Adiciona URL do Interlegis ao rodapé da página. * Somente mostra interessado se Doc Adm e mostra Autor em listagem de pesquisa * HOT-FIX: identificador de protocolo errado * Atualiza código devido a deprecated na drf * HOT-FIX: possível fix para erro de render no search index * Add pesquisa em Autor pelo campo ativo de parlamentar * Gera migração referente ao commit #285d32e Signed-off-by: Eliseu Egewarth &lt;eliseuegewarth@gmail.com&gt; * Add bsc param de Autor nos Models lig via GR a Autor * campo texto para autor documentos acessorios em lote (#1117) * Conserto paliativo para doc acessorio em lote * Conserta DocumentoAcessorioEmLote * fix conserta acessorio em lote (#1119) * Melhorias no detail de protocolo * Captura erro de indexação de arquivo. * Fix #1111 * Divide o template de resumo em blocos * Cria a funcionalidade * Pequena correcao * Conserta erro teste * Faz a ordenação para o arquivo impresso * Adiciona permissão a tela de ordenação * Faz o merge das migrations
8 years ago
choices=ORDENACAO_RESUMO)
quarto = forms.ChoiceField(label=_(''),
choices=ORDENACAO_RESUMO)
quinto = forms.ChoiceField(label=_(''),
choices=ORDENACAO_RESUMO)
sexto = forms.ChoiceField(label=_(''),
choices=ORDENACAO_RESUMO)
setimo = forms.ChoiceField(label=_(''),
choices=ORDENACAO_RESUMO)
oitavo = forms.ChoiceField(label=_(''),
choices=ORDENACAO_RESUMO)
nono = forms.ChoiceField(label=_(''),
choices=ORDENACAO_RESUMO)
decimo = forms.ChoiceField(label='10°',
Fix #414 ordem resumo (#1109) * Divide o template de resumo em blocos * Cria a funcionalidade * Pequena correcao * add arq sql no instalador de reutil. da app sapl * Conserta erro teste * fix #1092 - Altera o destino dos documentos migrados (#1093) * Altera o destino dos documentos migrados Signed-off-by: Luciano Almeida &lt;lucianoalmeida@interlegis.leg.br&gt; * Usa a data de matéria em doc acessório Signed-off-by: Luciano Almeida &lt;lucianoalmeida@interlegis.leg.br&gt; * ajusta caminho public private * Faz a ordenação para o arquivo impresso * fix #1098 (#1107) * Padroniza tamanho foto para mesa (#1088) * Adiciona permissão a tela de ordenação * Bug Fix * Fix 1104 (#1110) * adiciona poppler-utils (#1113) * Adiciona poppler-utils, onde está pdftotext que é usado por indexador. * redesenha a exibição dos votos na tela de votação nominal #1100 (#1101) * resultado de votação nominal * Update nominal_detail.html * Update nominal_edit.html * Adiciona URL do Interlegis ao rodapé da página. * Somente mostra interessado se Doc Adm e mostra Autor em listagem de pesquisa * HOT-FIX: identificador de protocolo errado * Atualiza código devido a deprecated na drf * HOT-FIX: possível fix para erro de render no search index * Add pesquisa em Autor pelo campo ativo de parlamentar * Gera migração referente ao commit #285d32e Signed-off-by: Eliseu Egewarth &lt;eliseuegewarth@gmail.com&gt; * Add bsc param de Autor nos Models lig via GR a Autor * campo texto para autor documentos acessorios em lote (#1117) * Conserto paliativo para doc acessorio em lote * Conserta DocumentoAcessorioEmLote * fix conserta acessorio em lote (#1119) * Melhorias no detail de protocolo * Captura erro de indexação de arquivo. * Fix #1111 * Divide o template de resumo em blocos * Cria a funcionalidade * Pequena correcao * Conserta erro teste * Faz a ordenação para o arquivo impresso * Adiciona permissão a tela de ordenação * Faz o merge das migrations
8 years ago
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(_(''),
row1, row2, row3, row4, row5,
row6, row7, row8, row9, row10,
form_actions(save_label='Atualizar'))
)
def clean(self):
super(ResumoOrdenacaoForm, self).clean()
Fix #414 ordem resumo (#1109) * Divide o template de resumo em blocos * Cria a funcionalidade * Pequena correcao * add arq sql no instalador de reutil. da app sapl * Conserta erro teste * fix #1092 - Altera o destino dos documentos migrados (#1093) * Altera o destino dos documentos migrados Signed-off-by: Luciano Almeida &lt;lucianoalmeida@interlegis.leg.br&gt; * Usa a data de matéria em doc acessório Signed-off-by: Luciano Almeida &lt;lucianoalmeida@interlegis.leg.br&gt; * ajusta caminho public private * Faz a ordenação para o arquivo impresso * fix #1098 (#1107) * Padroniza tamanho foto para mesa (#1088) * Adiciona permissão a tela de ordenação * Bug Fix * Fix 1104 (#1110) * adiciona poppler-utils (#1113) * Adiciona poppler-utils, onde está pdftotext que é usado por indexador. * redesenha a exibição dos votos na tela de votação nominal #1100 (#1101) * resultado de votação nominal * Update nominal_detail.html * Update nominal_edit.html * Adiciona URL do Interlegis ao rodapé da página. * Somente mostra interessado se Doc Adm e mostra Autor em listagem de pesquisa * HOT-FIX: identificador de protocolo errado * Atualiza código devido a deprecated na drf * HOT-FIX: possível fix para erro de render no search index * Add pesquisa em Autor pelo campo ativo de parlamentar * Gera migração referente ao commit #285d32e Signed-off-by: Eliseu Egewarth &lt;eliseuegewarth@gmail.com&gt; * Add bsc param de Autor nos Models lig via GR a Autor * campo texto para autor documentos acessorios em lote (#1117) * Conserto paliativo para doc acessorio em lote * Conserta DocumentoAcessorioEmLote * fix conserta acessorio em lote (#1119) * Melhorias no detail de protocolo * Captura erro de indexação de arquivo. * Fix #1111 * Divide o template de resumo em blocos * Cria a funcionalidade * Pequena correcao * Conserta erro teste * Faz a ordenação para o arquivo impresso * Adiciona permissão a tela de ordenação * Faz o merge das migrations
8 years ago
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'))