Browse Source

ajustes de pep8 feito IDE em arquivos que serão alterados no próximo commit

pull/2443/head
Leandro Roberto 6 years ago
parent
commit
f8c38d6ac2
  1. 189
      sapl/materia/forms.py
  2. 57
      sapl/norma/forms.py
  3. 86
      sapl/protocoloadm/forms.py
  4. 52
      sapl/sessao/forms.py

189
sapl/materia/forms.py

@ -1,11 +1,11 @@
import os
import logging import logging
import django_filters import os
from crispy_forms.bootstrap import Alert, FormActions, InlineRadios
from crispy_forms.bootstrap import Alert, InlineRadios
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import (HTML, Button, Column, Div, Field, Fieldset, from crispy_forms.layout import (HTML, Button, Column, Div, Field, Fieldset,
Layout, Submit) Layout)
from django import forms from django import forms
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.core.exceptions import ObjectDoesNotExist, ValidationError
@ -22,6 +22,7 @@ from django.utils.encoding import force_text
from django.utils.html import format_html from django.utils.html import format_html
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
import django_filters
import sapl import sapl
from sapl.base.models import AppConfig, Autor, TipoAutor from sapl.base.models import AppConfig, Autor, TipoAutor
@ -135,7 +136,8 @@ class MateriaSimplificadaForm(ModelForm):
row1 = to_row([('tipo', 6), ('numero', 3), ('ano', 3)]) row1 = to_row([('tipo', 6), ('numero', 3), ('ano', 3)])
row2 = to_row([('data_apresentacao', 6), ('numero_protocolo', 6)]) row2 = to_row([('data_apresentacao', 6), ('numero_protocolo', 6)])
row3 = to_row([('regime_tramitacao', 6), ('em_tramitacao', 3), ('tipo_apresentacao', 3)]) row3 = to_row([('regime_tramitacao', 6),
('em_tramitacao', 3), ('tipo_apresentacao', 3)])
row4 = to_row([('ementa', 12)]) row4 = to_row([('ementa', 12)])
row5 = to_row([('texto_original', 12)]) row5 = to_row([('texto_original', 12)])
@ -162,7 +164,7 @@ class MateriaSimplificadaForm(ModelForm):
if data_apresentacao.year != ano: if data_apresentacao.year != ano:
self.logger.error("O ano da matéria ({}) é diferente" self.logger.error("O ano da matéria ({}) é diferente"
" do ano na data de apresentação ({}).".format(ano, data_apresentacao.year)) " do ano na data de apresentação ({}).".format(ano, data_apresentacao.year))
raise ValidationError("O ano da matéria não pode ser " raise ValidationError("O ano da matéria não pode ser "
"diferente do ano na data de apresentação") "diferente do ano na data de apresentação")
@ -212,41 +214,42 @@ class MateriaLegislativaForm(ModelForm):
protocolo_antigo = self.instance.numero_protocolo protocolo_antigo = self.instance.numero_protocolo
if protocolo: if protocolo:
if not Protocolo.objects.filter(numero=protocolo,ano=ano).exists(): if not Protocolo.objects.filter(numero=protocolo, ano=ano).exists():
self.logger.error("Protocolo %s/%s não" self.logger.error("Protocolo %s/%s não"
" existe" % (protocolo, ano)) " existe" % (protocolo, ano))
raise ValidationError(_('Protocolo %s/%s não' raise ValidationError(_('Protocolo %s/%s não'
' existe' % (protocolo, ano))) ' existe' % (protocolo, ano)))
if protocolo_antigo != protocolo: if protocolo_antigo != protocolo:
exist_materia = MateriaLegislativa.objects.filter( exist_materia = MateriaLegislativa.objects.filter(
numero_protocolo=protocolo, numero_protocolo=protocolo,
ano=ano).exists() ano=ano).exists()
exist_doc = DocumentoAdministrativo.objects.filter( exist_doc = DocumentoAdministrativo.objects.filter(
protocolo_id=protocolo, protocolo_id=protocolo,
ano=ano).exists() ano=ano).exists()
if exist_materia or exist_doc: if exist_materia or exist_doc:
self.logger.error("Protocolo %s/%s ja possui" self.logger.error("Protocolo %s/%s ja possui"
" documento vinculado" " documento vinculado"
% (protocolo, ano)) % (protocolo, ano))
raise ValidationError(_('Protocolo %s/%s ja possui' raise ValidationError(_('Protocolo %s/%s ja possui'
' documento vinculado' ' documento vinculado'
% (protocolo, ano))) % (protocolo, ano)))
p = Protocolo.objects.get(numero=protocolo,ano=ano) p = Protocolo.objects.get(numero=protocolo, ano=ano)
if p.tipo_materia != cleaned_data['tipo']: if p.tipo_materia != cleaned_data['tipo']:
self.logger.error("Tipo do Protocolo ({}) deve ser o mesmo do Tipo Matéria ({})." self.logger.error("Tipo do Protocolo ({}) deve ser o mesmo do Tipo Matéria ({})."
.format(cleaned_data['tipo'], p.tipo_materia)) .format(cleaned_data['tipo'], p.tipo_materia))
raise ValidationError(_('Tipo do Protocolo deve ser o mesmo do Tipo Matéria')) raise ValidationError(
_('Tipo do Protocolo deve ser o mesmo do Tipo Matéria'))
if data_apresentacao.year != ano: if data_apresentacao.year != ano:
self.logger.error("O ano da matéria ({}) é diferente " self.logger.error("O ano da matéria ({}) é diferente "
"do ano na data de apresentação ({})." "do ano na data de apresentação ({})."
.format(ano, data_apresentacao.year)) .format(ano, data_apresentacao.year))
raise ValidationError(_("O ano da matéria não pode ser " raise ValidationError(_("O ano da matéria não pode ser "
"diferente do ano na data de apresentação")) "diferente do ano na data de apresentação"))
ano_origem_externa = cleaned_data['ano_origem_externa'] ano_origem_externa = cleaned_data['ano_origem_externa']
data_origem_externa = cleaned_data['data_origem_externa'] data_origem_externa = cleaned_data['data_origem_externa']
@ -254,11 +257,11 @@ class MateriaLegislativaForm(ModelForm):
if ano_origem_externa and data_origem_externa and \ if ano_origem_externa and data_origem_externa and \
ano_origem_externa != data_origem_externa.year: ano_origem_externa != data_origem_externa.year:
self.logger.error("O ano de origem externa da matéria ({}) é " self.logger.error("O ano de origem externa da matéria ({}) é "
" diferente do ano na data de origem externa ({})." " diferente do ano na data de origem externa ({})."
.format(ano_origem_externa, data_origem_externa)) .format(ano_origem_externa, data_origem_externa))
raise ValidationError(_("O ano de origem externa da matéria não " raise ValidationError(_("O ano de origem externa da matéria não "
"pode ser diferente do ano na data de " "pode ser diferente do ano na data de "
"origem externa")) "origem externa"))
return cleaned_data return cleaned_data
@ -280,6 +283,7 @@ class MateriaLegislativaForm(ModelForm):
return materia return materia
class UnidadeTramitacaoForm(ModelForm): class UnidadeTramitacaoForm(ModelForm):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -379,8 +383,8 @@ class RelatoriaForm(ModelForm):
comissao = Comissao.objects.get(id=self.initial['comissao']) comissao = Comissao.objects.get(id=self.initial['comissao'])
except ObjectDoesNotExist as e: except ObjectDoesNotExist as e:
self.logger.error("Objeto Comissao não encontrado com id={} " self.logger.error("Objeto Comissao não encontrado com id={} "
".A localização atual deve ser uma comissão. " ".A localização atual deve ser uma comissão. "
.format(self.initial['comissao']) + str(e)) .format(self.initial['comissao']) + str(e))
msg = _('A localização atual deve ser uma comissão.') msg = _('A localização atual deve ser uma comissão.')
raise ValidationError(msg) raise ValidationError(msg)
else: else:
@ -441,15 +445,15 @@ class TramitacaoForm(ModelForm):
destino = ultima_tramitacao.unidade_tramitacao_destino destino = ultima_tramitacao.unidade_tramitacao_destino
if (destino != self.cleaned_data['unidade_tramitacao_local']): if (destino != self.cleaned_data['unidade_tramitacao_local']):
self.logger.error("A origem da nova tramitação ({}) não é igual ao " self.logger.error("A origem da nova tramitação ({}) não é igual ao "
"destino da última adicionada ({})!" "destino da última adicionada ({})!"
.format(self.cleaned_data['unidade_tramitacao_local'], destino)) .format(self.cleaned_data['unidade_tramitacao_local'], destino))
msg = _('A origem da nova tramitação deve ser igual ao ' msg = _('A origem da nova tramitação deve ser igual ao '
'destino da última adicionada!') 'destino da última adicionada!')
raise ValidationError(msg) raise ValidationError(msg)
if cleaned_data['data_tramitacao'] > timezone.now().date(): if cleaned_data['data_tramitacao'] > timezone.now().date():
self.logger.error('A data de tramitação informada ({}) não é ' + self.logger.error('A data de tramitação informada ({}) não é ' +
'menor ou igual a data de hoje!'.format(cleaned_data['data_tramitacao'])) 'menor ou igual a data de hoje!'.format(cleaned_data['data_tramitacao']))
msg = _( msg = _(
'A data de tramitação deve ser ' + 'A data de tramitação deve ser ' +
'menor ou igual a data de hoje!') 'menor ou igual a data de hoje!')
@ -460,8 +464,8 @@ class TramitacaoForm(ModelForm):
msg = _('A data da nova tramitação deve ser ' + msg = _('A data da nova tramitação deve ser ' +
'maior que a data da última tramitação!') 'maior que a data da última tramitação!')
self.logger.error("A data da nova tramitação ({}) deve ser " self.logger.error("A data da nova tramitação ({}) deve ser "
"maior que a data da última tramitação ({})!" "maior que a data da última tramitação ({})!"
.format(data_tram_form, ultima_tramitacao.data_tramitacao)) .format(data_tram_form, ultima_tramitacao.data_tramitacao))
raise ValidationError(msg) raise ValidationError(msg)
if data_enc_form: if data_enc_form:
@ -469,8 +473,8 @@ class TramitacaoForm(ModelForm):
msg = _('A data de encaminhamento deve ser ' + msg = _('A data de encaminhamento deve ser ' +
'maior que a data de tramitação!') 'maior que a data de tramitação!')
self.logger.error("A data de encaminhamento ({}) deve ser " self.logger.error("A data de encaminhamento ({}) deve ser "
"maior que a data de tramitação! ({})" "maior que a data de tramitação! ({})"
.format(data_enc_form, data_tram_form)) .format(data_enc_form, data_tram_form))
raise ValidationError(msg) raise ValidationError(msg)
if data_prazo_form: if data_prazo_form:
@ -478,8 +482,8 @@ class TramitacaoForm(ModelForm):
msg = _('A data fim de prazo deve ser ' + msg = _('A data fim de prazo deve ser ' +
'maior que a data de tramitação!') 'maior que a data de tramitação!')
self.logger.error("A data fim de prazo ({}) deve ser " + self.logger.error("A data fim de prazo ({}) deve ser " +
"maior que a data de tramitação ({})!" "maior que a data de tramitação ({})!"
.format(data_prazo_form, data_tram_form)) .format(data_prazo_form, data_tram_form))
raise ValidationError(msg) raise ValidationError(msg)
return cleaned_data return cleaned_data
@ -529,10 +533,10 @@ class TramitacaoUpdateForm(TramitacaoForm):
if self.cleaned_data['unidade_tramitacao_destino'] != \ if self.cleaned_data['unidade_tramitacao_destino'] != \
self.instance.unidade_tramitacao_destino: self.instance.unidade_tramitacao_destino:
self.logger.error("Você não pode mudar a Unidade de Destino desta " self.logger.error("Você não pode mudar a Unidade de Destino desta "
"tramitação para {}, pois irá conflitar com a Unidade " "tramitação para {}, pois irá conflitar com a Unidade "
"Local da tramitação seguinte ({})." "Local da tramitação seguinte ({})."
.format(self.cleaned_data['unidade_tramitacao_destino'], .format(self.cleaned_data['unidade_tramitacao_destino'],
self.instance.unidade_tramitacao_destino)) self.instance.unidade_tramitacao_destino))
raise ValidationError( raise ValidationError(
'Você não pode mudar a Unidade de Destino desta ' 'Você não pode mudar a Unidade de Destino desta '
'tramitação, pois irá conflitar com a Unidade ' 'tramitação, pois irá conflitar com a Unidade '
@ -589,15 +593,15 @@ class LegislacaoCitadaForm(ModelForm):
try: try:
self.logger.debug("Tentando obter objeto NormalJuridica (numero={}, ano={}, tipo={})." self.logger.debug("Tentando obter objeto NormalJuridica (numero={}, ano={}, tipo={})."
.format(cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'])) .format(cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo']))
norma = NormaJuridica.objects.get( norma = NormaJuridica.objects.get(
numero=cleaned_data['numero'], numero=cleaned_data['numero'],
ano=cleaned_data['ano'], ano=cleaned_data['ano'],
tipo=cleaned_data['tipo']) tipo=cleaned_data['tipo'])
except ObjectDoesNotExist: except ObjectDoesNotExist:
self.logger.error("A norma a ser inclusa (numero={}, ano={}, tipo={}) " self.logger.error("A norma a ser inclusa (numero={}, ano={}, tipo={}) "
"não existe no cadastro de Normas." "não existe no cadastro de Normas."
.format(cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'])) .format(cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo']))
msg = _('A norma a ser inclusa não existe no cadastro' msg = _('A norma a ser inclusa não existe no cadastro'
' de Normas.') ' de Normas.')
raise ValidationError(msg) raise ValidationError(msg)
@ -643,6 +647,7 @@ class LegislacaoCitadaForm(ModelForm):
class NumeracaoForm(ModelForm): class NumeracaoForm(ModelForm):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class Meta: class Meta:
model = Numeracao model = Numeracao
fields = ['tipo_materia', fields = ['tipo_materia',
@ -658,8 +663,8 @@ class NumeracaoForm(ModelForm):
try: try:
self.logger.info("Tentando obter objeto MateriaLegislativa (numero={}, ano={}. tipo={})." self.logger.info("Tentando obter objeto MateriaLegislativa (numero={}, ano={}. tipo={})."
.format(self.cleaned_data['numero_materia'], .format(self.cleaned_data['numero_materia'],
self.cleaned_data['ano_materia'], self.cleaned_data['tipo_materia'])) self.cleaned_data['ano_materia'], self.cleaned_data['tipo_materia']))
MateriaLegislativa.objects.get( MateriaLegislativa.objects.get(
numero=self.cleaned_data['numero_materia'], numero=self.cleaned_data['numero_materia'],
ano=self.cleaned_data['ano_materia'], ano=self.cleaned_data['ano_materia'],
@ -668,8 +673,8 @@ class NumeracaoForm(ModelForm):
msg = _('A matéria a ser inclusa não existe no cadastro' msg = _('A matéria a ser inclusa não existe no cadastro'
' de matérias legislativas.') ' de matérias legislativas.')
self.logger.error("A MateriaLegislativa a ser inclusa (numero={}, ano={}. tipo={}) não existe no cadastro de matérias legislativas." self.logger.error("A MateriaLegislativa a ser inclusa (numero={}, ano={}. tipo={}) não existe no cadastro de matérias legislativas."
.format(self.cleaned_data['numero_materia'], .format(self.cleaned_data['numero_materia'],
self.cleaned_data['ano_materia'], self.cleaned_data['tipo_materia'])) self.cleaned_data['ano_materia'], self.cleaned_data['tipo_materia']))
raise ValidationError(msg) raise ValidationError(msg)
if Numeracao.objects.filter( if Numeracao.objects.filter(
@ -680,8 +685,8 @@ class NumeracaoForm(ModelForm):
).exists(): ).exists():
msg = _('Essa numeração já foi cadastrada.') msg = _('Essa numeração já foi cadastrada.')
self.logger.error("Essa numeração (materia={}, tipo_materia={}, ano_materia={}, numero_materia={}) " self.logger.error("Essa numeração (materia={}, tipo_materia={}, ano_materia={}, numero_materia={}) "
"já foi cadastrada.".format(self.instance.materia, self.cleaned_data['tipo_materia'], "já foi cadastrada.".format(self.instance.materia, self.cleaned_data['tipo_materia'],
self.cleaned_data['ano_materia'], self.cleaned_data['numero_materia'])) self.cleaned_data['ano_materia'], self.cleaned_data['numero_materia']))
raise ValidationError(msg) raise ValidationError(msg)
return self.cleaned_data return self.cleaned_data
@ -716,7 +721,7 @@ class AnexadaForm(ModelForm):
try: try:
self.logger.info("Tentando obter objeto MateriaLegislativa (numero={}, ano={}, tipo={})." self.logger.info("Tentando obter objeto MateriaLegislativa (numero={}, ano={}, tipo={})."
.format(cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'])) .format(cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo']))
materia_anexada = MateriaLegislativa.objects.get( materia_anexada = MateriaLegislativa.objects.get(
numero=cleaned_data['numero'], numero=cleaned_data['numero'],
ano=cleaned_data['ano'], ano=cleaned_data['ano'],
@ -725,7 +730,7 @@ class AnexadaForm(ModelForm):
msg = _('A MateriaLegislativa a ser anexada (numero={}, ano={}, tipo={}) não existe no cadastro' msg = _('A MateriaLegislativa a ser anexada (numero={}, ano={}, tipo={}) não existe no cadastro'
' de matérias legislativas.'.format(cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'])) ' de matérias legislativas.'.format(cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo']))
self.logger.error("A matéria a ser anexada não existe no cadastro" self.logger.error("A matéria a ser anexada não existe no cadastro"
" de matérias legislativas.") " de matérias legislativas.")
raise ValidationError(msg) raise ValidationError(msg)
materia_principal = self.instance.materia_principal materia_principal = self.instance.materia_principal
@ -971,7 +976,8 @@ class AutoriaForm(ModelForm):
if ((not pk and autorias.exists()) or if ((not pk and autorias.exists()) or
(pk and autorias.exclude(pk=pk).exists())): (pk and autorias.exclude(pk=pk).exists())):
self.logger.error("Esse Autor (pk={}) já foi cadastrado.".format(pk)) self.logger.error(
"Esse Autor (pk={}) já foi cadastrado.".format(pk))
raise ValidationError(_('Esse Autor já foi cadastrado.')) raise ValidationError(_('Esse Autor já foi cadastrado.'))
return cd return cd
@ -1022,7 +1028,8 @@ class AutoriaMultiCreateForm(Form):
del self.errors['autores'] del self.errors['autores']
if 'autor' not in cd or not cd['autor'].exists(): if 'autor' not in cd or not cd['autor'].exists():
self.logger.error("Ao menos um autor deve ser selecionado para inclusão") self.logger.error(
"Ao menos um autor deve ser selecionado para inclusão")
raise ValidationError( raise ValidationError(
_('Ao menos um autor deve ser selecionado para inclusão')) _('Ao menos um autor deve ser selecionado para inclusão'))
@ -1204,7 +1211,7 @@ class TipoProposicaoForm(ModelForm):
if not content_type.model_class().objects.filter( if not content_type.model_class().objects.filter(
pk=cd['tipo_conteudo_related']).exists(): pk=cd['tipo_conteudo_related']).exists():
self.logger.error("O Registro definido (%s) não está na base de %s." self.logger.error("O Registro definido (%s) não está na base de %s."
% (cd['tipo_conteudo_related'], content_type)) % (cd['tipo_conteudo_related'], content_type))
raise ValidationError( raise ValidationError(
_('O Registro definido (%s) não está na base de %s.' _('O Registro definido (%s) não está na base de %s.'
) % (cd['tipo_conteudo_related'], content_type)) ) % (cd['tipo_conteudo_related'], content_type))
@ -1377,11 +1384,11 @@ class ProposicaoForm(forms.ModelForm):
'texto_original', 7 if self.texto_articulado_proposicao else 12))) 'texto_original', 7 if self.texto_articulado_proposicao else 12)))
fields.append(to_column((Fieldset(_('Outras informações - Vincular a Matéria Legislativa Existente'), fields.append(to_column((Fieldset(_('Outras informações - Vincular a Matéria Legislativa Existente'),
to_column(('tipo_materia', 12)), to_column(('tipo_materia', 12)),
to_column(('numero_materia', 6)), to_column(('numero_materia', 6)),
to_column(('ano_materia', 6)) to_column(('ano_materia', 6))
), 12)), ), 12)),
) )
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = SaplFormLayout(*fields) self.helper.layout = SaplFormLayout(*fields)
@ -1410,9 +1417,10 @@ class ProposicaoForm(forms.ModelForm):
texto_original = self.cleaned_data.get('texto_original', False) texto_original = self.cleaned_data.get('texto_original', False)
if texto_original and texto_original.size > MAX_DOC_UPLOAD_SIZE: if texto_original and texto_original.size > MAX_DOC_UPLOAD_SIZE:
max_size = str(MAX_DOC_UPLOAD_SIZE / (1024 * 1024)) max_size = str(MAX_DOC_UPLOAD_SIZE / (1024 * 1024))
self.logger.error("- Arquivo muito grande. ( > {0}MB )".format(max_size)) self.logger.error(
"- Arquivo muito grande. ( > {0}MB )".format(max_size))
raise ValidationError( raise ValidationError(
"Arquivo muito grande. ( > {0}MB )".format(max_size)) "Arquivo muito grande. ( > {0}MB )".format(max_size))
return texto_original return texto_original
def gerar_hash(self, inst, receber_recibo): def gerar_hash(self, inst, receber_recibo):
@ -1443,7 +1451,7 @@ class ProposicaoForm(forms.ModelForm):
if tm and am and nm: if tm and am and nm:
try: try:
self.logger.debug("Tentando obter objeto MateriaLegislativa (tipo_id={}, ano={}, numero={})." self.logger.debug("Tentando obter objeto MateriaLegislativa (tipo_id={}, ano={}, numero={})."
.format(tm, am, nm)) .format(tm, am, nm))
materia_de_vinculo = MateriaLegislativa.objects.get( materia_de_vinculo = MateriaLegislativa.objects.get(
tipo_id=tm, tipo_id=tm,
ano=am, ano=am,
@ -1451,11 +1459,11 @@ class ProposicaoForm(forms.ModelForm):
) )
except ObjectDoesNotExist: except ObjectDoesNotExist:
self.logger.error("Objeto MateriaLegislativa vinculada (tipo_id={}, ano={}, numero={}) não existe!" self.logger.error("Objeto MateriaLegislativa vinculada (tipo_id={}, ano={}, numero={}) não existe!"
.format(tm, am, nm)) .format(tm, am, nm))
raise ValidationError(_('Matéria Vinculada não existe!')) raise ValidationError(_('Matéria Vinculada não existe!'))
else: else:
self.logger.info("MateriaLegislativa vinculada (tipo_id={}, ano={}, numero={}) com sucesso." self.logger.info("MateriaLegislativa vinculada (tipo_id={}, ano={}, numero={}) com sucesso."
.format(tm, am, nm)) .format(tm, am, nm))
cd['materia_de_vinculo'] = materia_de_vinculo cd['materia_de_vinculo'] = materia_de_vinculo
return cd return cd
@ -1479,7 +1487,6 @@ class ProposicaoForm(forms.ModelForm):
inst.texto_original.delete() inst.texto_original.delete()
self.gerar_hash(inst, receber_recibo) self.gerar_hash(inst, receber_recibo)
return super().save(commit) return super().save(commit)
inst.ano = timezone.now().year inst.ano = timezone.now().year
@ -1732,8 +1739,8 @@ class ConfirmarProposicaoForm(ProposicaoForm):
if not numeracao: if not numeracao:
self.logger.error("A sequência de numeração (por ano ou geral)" self.logger.error("A sequência de numeração (por ano ou geral)"
" não foi configurada para a aplicação em " " não foi configurada para a aplicação em "
"tabelas auxiliares") "tabelas auxiliares")
raise ValidationError("A sequência de numeração (por ano ou geral)" raise ValidationError("A sequência de numeração (por ano ou geral)"
" não foi configurada para a aplicação em " " não foi configurada para a aplicação em "
"tabelas auxiliares") "tabelas auxiliares")
@ -1751,7 +1758,7 @@ class ConfirmarProposicaoForm(ProposicaoForm):
elif self.instance.tipo.content_type.model_class( elif self.instance.tipo.content_type.model_class(
) == TipoDocumento and not cd['materia_de_vinculo']: ) == TipoDocumento and not cd['materia_de_vinculo']:
self.logger.error("Documentos não podem ser incorporados sem definir " self.logger.error("Documentos não podem ser incorporados sem definir "
"para qual Matéria Legislativa ele se destina.") "para qual Matéria Legislativa ele se destina.")
raise ValidationError( raise ValidationError(
_('Documentos não podem ser incorporados sem definir ' _('Documentos não podem ser incorporados sem definir '
'para qual Matéria Legislativa ele se destina.')) 'para qual Matéria Legislativa ele se destina.'))
@ -1803,7 +1810,8 @@ class ConfirmarProposicaoForm(ProposicaoForm):
numeracao = None numeracao = None
try: try:
self.logger.debug("Tentando obter modelo de sequência de numeração.") self.logger.debug(
"Tentando obter modelo de sequência de numeração.")
numeracao = sapl.base.models.AppConfig.objects.last( numeracao = sapl.base.models.AppConfig.objects.last(
).sequencia_numeracao ).sequencia_numeracao
except AttributeError as e: except AttributeError as e:
@ -1829,12 +1837,14 @@ class ConfirmarProposicaoForm(ProposicaoForm):
tipo=tipo).aggregate( tipo=tipo).aggregate(
Max('numero')) Max('numero'))
elif numeracao == 'U': elif numeracao == 'U':
numero = MateriaLegislativa.objects.filter(tipo=tipo).aggregate(Max('numero')) numero = MateriaLegislativa.objects.filter(
tipo=tipo).aggregate(Max('numero'))
if numeracao is None: if numeracao is None:
numero['numero__max'] = 0 numero['numero__max'] = 0
max_numero = numero['numero__max'] + 1 if numero['numero__max'] else 1 max_numero = numero['numero__max'] + \
1 if numero['numero__max'] else 1
# dados básicos # dados básicos
materia = MateriaLegislativa() materia = MateriaLegislativa()
@ -1974,7 +1984,8 @@ class ConfirmarProposicaoForm(ProposicaoForm):
protocolo.tipo_protocolo = '1' protocolo.tipo_protocolo = '1'
protocolo.interessado = str(proposicao.autor)[:200] # tamanho máximo 200 protocolo.interessado = str(proposicao.autor)[
:200] # tamanho máximo 200
protocolo.autor = proposicao.autor protocolo.autor = proposicao.autor
protocolo.assunto_ementa = proposicao.descricao protocolo.assunto_ementa = proposicao.descricao
protocolo.numero_paginas = cd['numero_de_paginas'] protocolo.numero_paginas = cd['numero_de_paginas']
@ -2083,7 +2094,7 @@ class EtiquetaPesquisaForm(forms.Form):
if (not cleaned_data['data_inicial'] or if (not cleaned_data['data_inicial'] or
not cleaned_data['data_final']): not cleaned_data['data_final']):
self.logger.error("Caso pesquise por data, os campos de Data Incial e " self.logger.error("Caso pesquise por data, os campos de Data Incial e "
"Data Final devem ser preenchidos obrigatoriamente") "Data Final devem ser preenchidos obrigatoriamente")
raise ValidationError(_( raise ValidationError(_(
'Caso pesquise por data, os campos de Data Incial e ' + 'Caso pesquise por data, os campos de Data Incial e ' +
'Data Final devem ser preenchidos obrigatoriamente')) 'Data Final devem ser preenchidos obrigatoriamente'))
@ -2091,7 +2102,7 @@ class EtiquetaPesquisaForm(forms.Form):
# a inicial # a inicial
elif cleaned_data['data_final'] < cleaned_data['data_inicial']: elif cleaned_data['data_final'] < cleaned_data['data_inicial']:
self.logger.error("A Data Final ({}) não pode ser menor que a Data Inicial({})." self.logger.error("A Data Final ({}) não pode ser menor que a Data Inicial({})."
.format(cleaned_data['data_final'], cleaned_data['data_inicial'])) .format(cleaned_data['data_final'], cleaned_data['data_inicial']))
raise ValidationError(_( raise ValidationError(_(
'A Data Final não pode ser menor que a Data Inicial')) 'A Data Final não pode ser menor que a Data Inicial'))
@ -2200,22 +2211,22 @@ class ExcluirTramitacaoEmLote(forms.Form):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
data_tramitacao = forms.DateField(required=True, data_tramitacao = forms.DateField(required=True,
label=_('Data da Tramitação')) label=_('Data da Tramitação'))
unidade_tramitacao_local = forms.ModelChoiceField(label=_('Unidade Local'), unidade_tramitacao_local = forms.ModelChoiceField(label=_('Unidade Local'),
required=True, required=True,
queryset=UnidadeTramitacao.objects.all(), queryset=UnidadeTramitacao.objects.all(),
empty_label='------') empty_label='------')
unidade_tramitacao_destino = forms.ModelChoiceField(label=_('Unidade Destino'), unidade_tramitacao_destino = forms.ModelChoiceField(label=_('Unidade Destino'),
required=True, required=True,
queryset=UnidadeTramitacao.objects.all(), queryset=UnidadeTramitacao.objects.all(),
empty_label='------') empty_label='------')
status = forms.ModelChoiceField(label=_('Status'), status = forms.ModelChoiceField(label=_('Status'),
required=True, required=True,
queryset=StatusTramitacao.objects.all(), queryset=StatusTramitacao.objects.all(),
empty_label='------') empty_label='------')
def clean(self): def clean(self):
super(ExcluirTramitacaoEmLote, self).clean() super(ExcluirTramitacaoEmLote, self).clean()
@ -2231,15 +2242,15 @@ class ExcluirTramitacaoEmLote(forms.Form):
status = cleaned_data['status'] status = cleaned_data['status']
tramitacao_set = Tramitacao.objects.filter(data_tramitacao=data_tramitacao, tramitacao_set = Tramitacao.objects.filter(data_tramitacao=data_tramitacao,
unidade_tramitacao_local=unidade_tramitacao_local, unidade_tramitacao_local=unidade_tramitacao_local,
unidade_tramitacao_destino=unidade_tramitacao_destino, unidade_tramitacao_destino=unidade_tramitacao_destino,
status=status) status=status)
if not tramitacao_set.exists(): if not tramitacao_set.exists():
self.logger.error("Não existem tramitações com os dados informados " self.logger.error("Não existem tramitações com os dados informados "
" (data_tramitacao={}, unidade_tramitacao_local={})." " (data_tramitacao={}, unidade_tramitacao_local={})."
"unidade_tramitacao_destino={}, status={})." "unidade_tramitacao_destino={}, status={})."
.format(data_tramitacao, unidade_tramitacao_local, .format(data_tramitacao, unidade_tramitacao_local,
unidade_tramitacao_destino, status)) unidade_tramitacao_destino, status))
raise forms.ValidationError( raise forms.ValidationError(
_("Não existem tramitações com os dados informados.")) _("Não existem tramitações com os dados informados."))
@ -2250,7 +2261,7 @@ class ExcluirTramitacaoEmLote(forms.Form):
row1 = to_row( row1 = to_row(
[('data_tramitacao', 6), [('data_tramitacao', 6),
('status', 6),]) ('status', 6), ])
row2 = to_row( row2 = to_row(
[('unidade_tramitacao_local', 6), [('unidade_tramitacao_local', 6),
('unidade_tramitacao_destino', 6)]) ('unidade_tramitacao_destino', 6)])

57
sapl/norma/forms.py

@ -1,6 +1,6 @@
import django_filters
import logging import logging
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import Fieldset, Layout from crispy_forms.layout import Fieldset, Layout
from django import forms from django import forms
@ -9,6 +9,7 @@ from django.db import models
from django.forms import ModelForm, widgets, ModelChoiceField from django.forms import ModelForm, widgets, ModelChoiceField
from django.utils import timezone from django.utils import timezone
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
import django_filters
from sapl.base.models import Autor, TipoAutor from sapl.base.models import Autor, TipoAutor
from sapl.crispy_layout_mixin import form_actions, to_row from sapl.crispy_layout_mixin import form_actions, to_row
@ -73,7 +74,7 @@ class NormaFilterSet(django_filters.FilterSet):
row2 = to_row([('data', 6), ('data_publicacao', 6)]) row2 = to_row([('data', 6), ('data_publicacao', 6)])
row3 = to_row([('ementa', 6), ('assuntos', 6)]) row3 = to_row([('ementa', 6), ('assuntos', 6)])
row4 = to_row([('data_vigencia', 12)]) row4 = to_row([('data_vigencia', 12)])
row5 = to_row([('o',6), ('indexacao', 6)]) row5 = to_row([('o', 6), ('indexacao', 6)])
self.form.helper = FormHelper() self.form.helper = FormHelper()
self.form.helper.form_method = 'GET' self.form.helper.form_method = 'GET'
@ -131,7 +132,6 @@ class NormaJuridicaForm(ModelForm):
'assuntos'] 'assuntos']
widgets = {'assuntos': widgets.CheckboxSelectMultiple} widgets = {'assuntos': widgets.CheckboxSelectMultiple}
def clean(self): def clean(self):
cleaned_data = super(NormaJuridicaForm, self).clean() cleaned_data = super(NormaJuridicaForm, self).clean()
@ -142,8 +142,10 @@ class NormaJuridicaForm(ModelForm):
import re import re
has_digits = re.sub('[^0-9]', '', cleaned_data['numero']) has_digits = re.sub('[^0-9]', '', cleaned_data['numero'])
if not has_digits: if not has_digits:
self.logger.error("Número de norma ({}) não pode conter somente letras.".format(cleaned_data['numero'])) self.logger.error("Número de norma ({}) não pode conter somente letras.".format(
raise ValidationError('Número de norma não pode conter somente letras') cleaned_data['numero']))
raise ValidationError(
'Número de norma não pode conter somente letras')
if self.instance.numero != cleaned_data['numero']: if self.instance.numero != cleaned_data['numero']:
norma = NormaJuridica.objects.filter(ano=cleaned_data['ano'], norma = NormaJuridica.objects.filter(ano=cleaned_data['ano'],
@ -157,7 +159,7 @@ class NormaJuridicaForm(ModelForm):
"e Número no sistema") "e Número no sistema")
if (cleaned_data['tipo_materia'] and if (cleaned_data['tipo_materia'] and
cleaned_data['numero_materia'] and cleaned_data['numero_materia'] and
cleaned_data['ano_materia']): cleaned_data['ano_materia']):
try: try:
self.logger.debug("Tentando obter objeto MateriaLegislativa com tipo={}, numero={}, ano={}." self.logger.debug("Tentando obter objeto MateriaLegislativa com tipo={}, numero={}, ano={}."
.format(cleaned_data['tipo_materia'], cleaned_data['numero_materia'], cleaned_data['ano_materia'])) .format(cleaned_data['tipo_materia'], cleaned_data['numero_materia'], cleaned_data['ano_materia']))
@ -168,9 +170,9 @@ class NormaJuridicaForm(ModelForm):
except ObjectDoesNotExist: except ObjectDoesNotExist:
self.logger.error("Matéria Legislativa %s/%s (%s) é inexistente." % ( self.logger.error("Matéria Legislativa %s/%s (%s) é inexistente." % (
self.cleaned_data['numero_materia'], self.cleaned_data['numero_materia'],
self.cleaned_data['ano_materia'], self.cleaned_data['ano_materia'],
cleaned_data['tipo_materia'].descricao)) cleaned_data['tipo_materia'].descricao))
raise forms.ValidationError( raise forms.ValidationError(
_("Matéria Legislativa %s/%s (%s) é inexistente." % ( _("Matéria Legislativa %s/%s (%s) é inexistente." % (
self.cleaned_data['numero_materia'], self.cleaned_data['numero_materia'],
@ -178,7 +180,7 @@ class NormaJuridicaForm(ModelForm):
cleaned_data['tipo_materia'].descricao))) cleaned_data['tipo_materia'].descricao)))
else: else:
self.logger.info("MateriaLegislativa com tipo={}, numero={}, ano={} obtida com sucesso." self.logger.info("MateriaLegislativa com tipo={}, numero={}, ano={} obtida com sucesso."
.format(cleaned_data['tipo_materia'], cleaned_data['numero_materia'], cleaned_data['ano_materia'])) .format(cleaned_data['tipo_materia'], cleaned_data['numero_materia'], cleaned_data['ano_materia']))
cleaned_data['materia'] = materia cleaned_data['materia'] = materia
else: else:
@ -198,10 +200,11 @@ class NormaJuridicaForm(ModelForm):
texto_integral = self.cleaned_data.get('texto_integral', False) texto_integral = self.cleaned_data.get('texto_integral', False)
if texto_integral and texto_integral.size > MAX_DOC_UPLOAD_SIZE: if texto_integral and texto_integral.size > MAX_DOC_UPLOAD_SIZE:
max_size = str(MAX_DOC_UPLOAD_SIZE / (1024 * 1024)) max_size = str(MAX_DOC_UPLOAD_SIZE / (1024 * 1024))
tam_fornecido = str( texto_integral.size / (1024*1024) ) tam_fornecido = str(texto_integral.size / (1024 * 1024))
self.logger.error("Arquivo muito grande ({}MB). ( Tamanho máximo permitido: {}MB )".format(tam_fornecido, max_size)) self.logger.error("Arquivo muito grande ({}MB). ( Tamanho máximo permitido: {}MB )".format(
tam_fornecido, max_size))
raise ValidationError( raise ValidationError(
"Arquivo muito grande. ( > {0}MB )".format(max_size)) "Arquivo muito grande. ( > {0}MB )".format(max_size))
return texto_integral return texto_integral
def save(self, commit=False): def save(self, commit=False):
@ -256,11 +259,13 @@ class AutoriaNormaForm(ModelForm):
if ((not pk and autorias.exists()) or if ((not pk and autorias.exists()) or
(pk and autorias.exclude(pk=pk).exists())): (pk and autorias.exclude(pk=pk).exists())):
self.logger.error("Autor ({}) já foi cadastrado.".format(cd['autor'])) self.logger.error(
"Autor ({}) já foi cadastrado.".format(cd['autor']))
raise ValidationError(_('Esse Autor já foi cadastrado.')) raise ValidationError(_('Esse Autor já foi cadastrado.'))
return cd return cd
class AnexoNormaJuridicaForm(ModelForm): class AnexoNormaJuridicaForm(ModelForm):
class Meta: class Meta:
model = AnexoNormaJuridica model = AnexoNormaJuridica
@ -270,6 +275,7 @@ class AnexoNormaJuridicaForm(ModelForm):
} }
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def clean(self): def clean(self):
cleaned_data = super(AnexoNormaJuridicaForm, self).clean() cleaned_data = super(AnexoNormaJuridicaForm, self).clean()
if not self.is_valid(): if not self.is_valid():
@ -277,10 +283,11 @@ class AnexoNormaJuridicaForm(ModelForm):
anexo_arquivo = self.cleaned_data.get('anexo_arquivo', False) anexo_arquivo = self.cleaned_data.get('anexo_arquivo', False)
if anexo_arquivo and anexo_arquivo.size > MAX_DOC_UPLOAD_SIZE: if anexo_arquivo and anexo_arquivo.size > MAX_DOC_UPLOAD_SIZE:
max_size = str(MAX_DOC_UPLOAD_SIZE / (1024 * 1024)) max_size = str(MAX_DOC_UPLOAD_SIZE / (1024 * 1024))
tam_fornecido = str( anexo_arquivo.size / (1024*1024) ) tam_fornecido = str(anexo_arquivo.size / (1024 * 1024))
self.logger.error("Arquivo muito grande ({}MB). ( Tamanho máximo permitido: {}MB )".format(tam_fornecido, max_size)) self.logger.error("Arquivo muito grande ({}MB). ( Tamanho máximo permitido: {}MB )".format(
tam_fornecido, max_size))
raise ValidationError( raise ValidationError(
"Arquivo muito grande. ( > {0}MB )".format(max_size)) "Arquivo muito grande. ( > {0}MB )".format(max_size))
return cleaned_data return cleaned_data
def save(self, commit=False): def save(self, commit=False):
@ -294,7 +301,6 @@ class AnexoNormaJuridicaForm(ModelForm):
return anexo return anexo
class NormaRelacionadaForm(ModelForm): class NormaRelacionadaForm(ModelForm):
tipo = forms.ModelChoiceField( tipo = forms.ModelChoiceField(
@ -310,6 +316,7 @@ class NormaRelacionadaForm(ModelForm):
widget=forms.Textarea(attrs={'disabled': 'disabled'})) widget=forms.Textarea(attrs={'disabled': 'disabled'}))
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class Meta: class Meta:
model = NormaRelacionada model = NormaRelacionada
fields = ['tipo', 'numero', 'ano', 'ementa', 'tipo_vinculo'] fields = ['tipo', 'numero', 'ano', 'ementa', 'tipo_vinculo']
@ -325,17 +332,20 @@ class NormaRelacionadaForm(ModelForm):
cleaned_data = self.cleaned_data cleaned_data = self.cleaned_data
try: try:
self.logger.debug("Tentando obter objeto NormaJuridica com numero={}, ano={}, tipo={}.".format(cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'])) self.logger.debug("Tentando obter objeto NormaJuridica com numero={}, ano={}, tipo={}.".format(
cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo']))
norma_relacionada = NormaJuridica.objects.get( norma_relacionada = NormaJuridica.objects.get(
numero=cleaned_data['numero'], numero=cleaned_data['numero'],
ano=cleaned_data['ano'], ano=cleaned_data['ano'],
tipo=cleaned_data['tipo']) tipo=cleaned_data['tipo'])
except ObjectDoesNotExist: except ObjectDoesNotExist:
self.logger.info("NormaJuridica com numero={}, ano={}, tipo={} não existe.".format(cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'])) self.logger.info("NormaJuridica com numero={}, ano={}, tipo={} não existe.".format(
cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo']))
msg = _('A norma a ser relacionada não existe.') msg = _('A norma a ser relacionada não existe.')
raise ValidationError(msg) raise ValidationError(msg)
else: else:
self.logger.info("NormaJuridica com numero={}, ano={}, tipo={} obtida com sucesso.".format(cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo'])) self.logger.info("NormaJuridica com numero={}, ano={}, tipo={} obtida com sucesso.".format(
cleaned_data['numero'], cleaned_data['ano'], cleaned_data['tipo']))
cleaned_data['norma_relacionada'] = norma_relacionada cleaned_data['norma_relacionada'] = norma_relacionada
return cleaned_data return cleaned_data
@ -408,7 +418,8 @@ class NormaPesquisaSimplesForm(forms.Form):
if (data_inicial and data_final and if (data_inicial and data_final and
data_inicial > data_final): data_inicial > data_final):
self.logger.error("Data Final ({}) menor que a Data Inicial ({}).".format(data_final, data_inicial)) self.logger.error("Data Final ({}) menor que a Data Inicial ({}).".format(
data_final, data_inicial))
raise ValidationError(_( raise ValidationError(_(
'A Data Final não pode ser menor que a Data Inicial')) 'A Data Final não pode ser menor que a Data Inicial'))
else: else:
@ -416,7 +427,7 @@ class NormaPesquisaSimplesForm(forms.Form):
condicao2 = not data_inicial and data_final condicao2 = not data_inicial and data_final
if condicao1 or condicao2: if condicao1 or condicao2:
self.logger.error("Caso pesquise por data, os campos de Data Inicial e " self.logger.error("Caso pesquise por data, os campos de Data Inicial e "
"Data Final devem ser preenchidos obrigatoriamente") "Data Final devem ser preenchidos obrigatoriamente")
raise ValidationError(_('Caso pesquise por data, os campos de Data Inicial e ' + raise ValidationError(_('Caso pesquise por data, os campos de Data Inicial e ' +
'Data Final devem ser preenchidos obrigatoriamente')) 'Data Final devem ser preenchidos obrigatoriamente'))

86
sapl/protocoloadm/forms.py

@ -1,6 +1,6 @@
import django_filters
import logging import logging
from crispy_forms.bootstrap import InlineRadios from crispy_forms.bootstrap import InlineRadios
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Button, Column, Fieldset, Layout from crispy_forms.layout import HTML, Button, Column, Fieldset, Layout
@ -12,6 +12,7 @@ from django.db.models import Max
from django.forms import ModelForm from django.forms import ModelForm
from django.utils import timezone from django.utils import timezone
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
import django_filters
from sapl.base.models import Autor, TipoAutor from sapl.base.models import Autor, TipoAutor
from sapl.crispy_layout_mixin import SaplFormLayout, form_actions, to_row from sapl.crispy_layout_mixin import SaplFormLayout, form_actions, to_row
@ -25,8 +26,11 @@ from .models import (AcompanhamentoDocumento, DocumentoAcessorioAdministrativo,
Protocolo, TipoDocumentoAdministrativo, Protocolo, TipoDocumentoAdministrativo,
TramitacaoAdministrativo) TramitacaoAdministrativo)
TIPOS_PROTOCOLO = [('0', 'Recebido'), ('1', 'Enviado'), ('2', 'Interno'), ('', '---------')]
TIPOS_PROTOCOLO_CREATE = [('0', 'Recebido'), ('1', 'Enviado'), ('2', 'Interno')] TIPOS_PROTOCOLO = [('0', 'Recebido'), ('1', 'Enviado'),
('2', 'Interno'), ('', '---------')]
TIPOS_PROTOCOLO_CREATE = [
('0', 'Recebido'), ('1', 'Enviado'), ('2', 'Interno')]
NATUREZA_PROCESSO = [('', '---------'), NATUREZA_PROCESSO = [('', '---------'),
('0', 'Administrativo'), ('0', 'Administrativo'),
@ -41,6 +45,7 @@ EM_TRAMITACAO = [('', '---------'),
(0, 'Sim'), (0, 'Sim'),
(1, 'Não')] (1, 'Não')]
class AcompanhamentoDocumentoForm(ModelForm): class AcompanhamentoDocumentoForm(ModelForm):
class Meta: class Meta:
@ -253,10 +258,12 @@ class AnularProcoloAdmForm(ModelForm):
ano = cleaned_data['ano'] ano = cleaned_data['ano']
try: try:
self.logger.debug("Tentando obter Protocolo com numero={} e ano={}.".format(numero, ano)) self.logger.debug(
"Tentando obter Protocolo com numero={} e ano={}.".format(numero, ano))
protocolo = Protocolo.objects.get(numero=numero, ano=ano) protocolo = Protocolo.objects.get(numero=numero, ano=ano)
if protocolo.anulado: if protocolo.anulado:
self.logger.error("Protocolo %s/%s já encontra-se anulado" % (numero, ano)) self.logger.error(
"Protocolo %s/%s já encontra-se anulado" % (numero, ano))
raise forms.ValidationError( raise forms.ValidationError(
_("Protocolo %s/%s já encontra-se anulado") _("Protocolo %s/%s já encontra-se anulado")
% (numero, ano)) % (numero, ano))
@ -341,7 +348,8 @@ class ProtocoloDocumentForm(ModelForm):
observacao = forms.CharField(required=False, observacao = forms.CharField(required=False,
widget=forms.Textarea, label=_('Observação')) widget=forms.Textarea, label=_('Observação'))
numero = forms.IntegerField(required=False, label=_('Número de Protocolo (opcional)')) numero = forms.IntegerField(
required=False, label=_('Número de Protocolo (opcional)'))
class Meta: class Meta:
model = Protocolo model = Protocolo
@ -431,7 +439,8 @@ class ProtocoloMateriaForm(ModelForm):
assunto_ementa = forms.CharField(required=True, assunto_ementa = forms.CharField(required=True,
widget=forms.Textarea, label=_('Ementa')) widget=forms.Textarea, label=_('Ementa'))
numero = forms.IntegerField(required=False, label=_('Número de Protocolo (opcional)')) numero = forms.IntegerField(
required=False, label=_('Número de Protocolo (opcional)'))
class Meta: class Meta:
model = Protocolo model = Protocolo
@ -450,13 +459,16 @@ class ProtocoloMateriaForm(ModelForm):
def clean_autor(self): def clean_autor(self):
autor_field = self.cleaned_data['autor'] autor_field = self.cleaned_data['autor']
try: try:
self.logger.debug("Tentando obter Autor com id={}.".format(autor_field.id)) self.logger.debug(
"Tentando obter Autor com id={}.".format(autor_field.id))
autor = Autor.objects.get(id=autor_field.id) autor = Autor.objects.get(id=autor_field.id)
except ObjectDoesNotExist: except ObjectDoesNotExist:
self.logger.error("Autor com id={} não encontrado. Definido como None.".format(autor_field.id)) self.logger.error(
"Autor com id={} não encontrado. Definido como None.".format(autor_field.id))
autor_field = None autor_field = None
else: else:
self.logger.info("Autor com id={} encontrado com sucesso.".format(autor_field.id)) self.logger.info(
"Autor com id={} encontrado com sucesso.".format(autor_field.id))
autor_field = autor autor_field = autor
return autor_field return autor_field
@ -471,7 +483,8 @@ class ProtocoloMateriaForm(ModelForm):
if data['vincular_materia'] == 'True': if data['vincular_materia'] == 'True':
try: try:
if not data['ano_materia'] or not data['numero_materia']: if not data['ano_materia'] or not data['numero_materia']:
self.logger.error("Não foram informados o número ou ano da matéria a ser vinculada") self.logger.error(
"Não foram informados o número ou ano da matéria a ser vinculada")
raise ValidationError( raise ValidationError(
'Favor informar o número e ano da matéria a ser vinculada') 'Favor informar o número e ano da matéria a ser vinculada')
self.logger.debug("Tentando obter MateriaLegislativa com ano={}, numero={} e data={}." self.logger.debug("Tentando obter MateriaLegislativa com ano={}, numero={} e data={}."
@ -481,13 +494,14 @@ class ProtocoloMateriaForm(ModelForm):
tipo=data['tipo_materia']) tipo=data['tipo_materia'])
if self.materia.numero_protocolo: if self.materia.numero_protocolo:
self.logger.error("MateriaLegislativa informada já possui o protocolo {}/{} vinculado." self.logger.error("MateriaLegislativa informada já possui o protocolo {}/{} vinculado."
.format(self.materia.numero_protocolo, self.materia.ano)) .format(self.materia.numero_protocolo, self.materia.ano))
raise ValidationError(_('Matéria Legislativa informada já possui o protocolo {}/{} vinculado.' raise ValidationError(_('Matéria Legislativa informada já possui o protocolo {}/{} vinculado.'
.format(self.materia.numero_protocolo, self.materia.ano))) .format(self.materia.numero_protocolo, self.materia.ano)))
except ObjectDoesNotExist: except ObjectDoesNotExist:
self.logger.error("MateriaLegislativa informada (ano={}, numero={} e data={}) não existente." self.logger.error("MateriaLegislativa informada (ano={}, numero={} e data={}) não existente."
.format(data['ano_materia'], data['numero_materia'], data['tipo_materia'])) .format(data['ano_materia'], data['numero_materia'], data['tipo_materia']))
raise ValidationError(_('Matéria Legislativa informada não existente.')) raise ValidationError(
_('Matéria Legislativa informada não existente.'))
return data return data
@ -520,9 +534,9 @@ class ProtocoloMateriaForm(ModelForm):
), ),
Fieldset(_('Número do Protocolo (Apenas se quiser que a numeração comece' Fieldset(_('Número do Protocolo (Apenas se quiser que a numeração comece'
' a partir do número a ser informado)'), ' a partir do número a ser informado)'),
row5, row5,
HTML("&nbsp;"), HTML("&nbsp;"),
form_actions(label=_('Protocolar Matéria'))) form_actions(label=_('Protocolar Matéria')))
) )
super(ProtocoloMateriaForm, self).__init__( super(ProtocoloMateriaForm, self).__init__(
@ -703,9 +717,9 @@ class DocumentoAdministrativoForm(ModelForm):
get_field('numero').verbose_name) get_field('numero').verbose_name)
restrito = forms.ChoiceField(label=_('Acesso Restrito'), restrito = forms.ChoiceField(label=_('Acesso Restrito'),
widget=forms.RadioSelect(), widget=forms.RadioSelect(),
choices=YES_NO_CHOICES, choices=YES_NO_CHOICES,
initial=False) initial=False)
class Meta: class Meta:
model = DocumentoAdministrativo model = DocumentoAdministrativo
@ -746,8 +760,8 @@ class DocumentoAdministrativoForm(ModelForm):
# não permite atualizar para numero/ano/tipo existente # não permite atualizar para numero/ano/tipo existente
if self.instance.pk: if self.instance.pk:
mudanca_doc = numero_documento != self.instance.numero \ mudanca_doc = numero_documento != self.instance.numero \
or ano_documento != self.instance.ano \ or ano_documento != self.instance.ano \
or tipo_documento != self.instance.tipo.pk or tipo_documento != self.instance.tipo.pk
if not self.instance.pk or mudanca_doc: if not self.instance.pk or mudanca_doc:
doc_exists = DocumentoAdministrativo.objects.filter(numero=numero_documento, doc_exists = DocumentoAdministrativo.objects.filter(numero=numero_documento,
@ -773,7 +787,8 @@ class DocumentoAdministrativoForm(ModelForm):
numero_protocolo, ano_protocolo)) numero_protocolo, ano_protocolo))
raise ValidationError(msg) raise ValidationError(msg)
except MultipleObjectsReturned: except MultipleObjectsReturned:
self.logger.error("Existe mais de um Protocolo com este ano ({}) e número ({}).".format(ano_protocolo,numero_protocolo)) self.logger.error("Existe mais de um Protocolo com este ano ({}) e número ({}).".format(
ano_protocolo, numero_protocolo))
msg = _( msg = _(
'Existe mais de um Protocolo com este ano e número.' % ( 'Existe mais de um Protocolo com este ano e número.' % (
numero_protocolo, ano_protocolo)) numero_protocolo, ano_protocolo))
@ -784,12 +799,12 @@ class DocumentoAdministrativoForm(ModelForm):
if str(protocolo_antigo) != numero_protocolo: if str(protocolo_antigo) != numero_protocolo:
exist_materia = MateriaLegislativa.objects.filter( exist_materia = MateriaLegislativa.objects.filter(
numero_protocolo=numero_protocolo, numero_protocolo=numero_protocolo,
ano=ano_protocolo).exists() ano=ano_protocolo).exists()
exist_doc = DocumentoAdministrativo.objects.filter( exist_doc = DocumentoAdministrativo.objects.filter(
protocolo__numero=numero_protocolo, protocolo__numero=numero_protocolo,
protocolo__ano=ano_protocolo).exists() protocolo__ano=ano_protocolo).exists()
if exist_materia or exist_doc: if exist_materia or exist_doc:
self.logger.error('Protocolo com numero=%s e ano=%s já possui' self.logger.error('Protocolo com numero=%s e ano=%s já possui'
' documento vinculado' % (numero_protocolo, ano_protocolo)) ' documento vinculado' % (numero_protocolo, ano_protocolo))
@ -871,13 +886,16 @@ class DesvincularDocumentoForm(ModelForm):
try: try:
self.logger.debug("Tentando obter DocumentoAdministrativo com numero={}, ano={} e tipo={}." self.logger.debug("Tentando obter DocumentoAdministrativo com numero={}, ano={} e tipo={}."
.format(numero, ano, tipo)) .format(numero, ano, tipo))
documento = DocumentoAdministrativo.objects.get(numero=numero, ano=ano, tipo=tipo) documento = DocumentoAdministrativo.objects.get(
numero=numero, ano=ano, tipo=tipo)
if not documento.protocolo: if not documento.protocolo:
self.logger.error("DocumentoAdministrativo %s %s/%s não se encontra vinculado a nenhum protocolo." % (tipo, numero, ano)) self.logger.error(
"DocumentoAdministrativo %s %s/%s não se encontra vinculado a nenhum protocolo." % (tipo, numero, ano))
raise forms.ValidationError( raise forms.ValidationError(
_("%s %s/%s não se encontra vinculado a nenhum protocolo" % (tipo, numero, ano))) _("%s %s/%s não se encontra vinculado a nenhum protocolo" % (tipo, numero, ano)))
except ObjectDoesNotExist: except ObjectDoesNotExist:
self.logger.error("DocumentoAdministrativo %s %s/%s não existe" % (tipo, numero, ano)) self.logger.error(
"DocumentoAdministrativo %s %s/%s não existe" % (tipo, numero, ano))
raise forms.ValidationError( raise forms.ValidationError(
_("%s %s/%s não existe" % (tipo, numero, ano))) _("%s %s/%s não existe" % (tipo, numero, ano)))
@ -939,13 +957,16 @@ class DesvincularMateriaForm(forms.Form):
try: try:
self.logger.info("Tentando obter MateriaLegislativa com numero={}, ano={} e tipo={}." self.logger.info("Tentando obter MateriaLegislativa com numero={}, ano={} e tipo={}."
.format(numero, ano, tipo)) .format(numero, ano, tipo))
materia = MateriaLegislativa.objects.get(numero=numero, ano=ano, tipo=tipo) materia = MateriaLegislativa.objects.get(
numero=numero, ano=ano, tipo=tipo)
if not materia.numero_protocolo: if not materia.numero_protocolo:
self.logger.error("MateriaLegislativa %s %s/%s não se encontra vinculada a nenhum protocolo" % (tipo, numero, ano)) self.logger.error(
"MateriaLegislativa %s %s/%s não se encontra vinculada a nenhum protocolo" % (tipo, numero, ano))
raise forms.ValidationError( raise forms.ValidationError(
_("%s %s/%s não se encontra vinculada a nenhum protocolo" % (tipo, numero, ano))) _("%s %s/%s não se encontra vinculada a nenhum protocolo" % (tipo, numero, ano)))
except ObjectDoesNotExist: except ObjectDoesNotExist:
self.logger.error("MateriaLegislativa %s %s/%s não existe" % (tipo, numero, ano)) self.logger.error(
"MateriaLegislativa %s %s/%s não existe" % (tipo, numero, ano))
raise forms.ValidationError( raise forms.ValidationError(
_("%s %s/%s não existe" % (tipo, numero, ano))) _("%s %s/%s não existe" % (tipo, numero, ano)))
@ -999,6 +1020,7 @@ def filtra_tramitacao_adm_destino_and_status(status, destino):
unidade_tramitacao_destino=destino).distinct().values_list( unidade_tramitacao_destino=destino).distinct().values_list(
'documento_id', flat=True) 'documento_id', flat=True)
class FichaPesquisaAdmForm(forms.Form): class FichaPesquisaAdmForm(forms.Form):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

52
sapl/sessao/forms.py

@ -1,9 +1,9 @@
from django.contrib import messages
from datetime import datetime from datetime import datetime
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Button, Fieldset, Layout from crispy_forms.layout import HTML, Button, Fieldset, Layout
from django import forms from django import forms
from django.contrib import messages
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.db import transaction from django.db import transaction
@ -23,6 +23,7 @@ from sapl.parlamentares.models import Parlamentar, Legislatura, Mandato
from sapl.utils import (RANGE_DIAS_MES, RANGE_MESES, from sapl.utils import (RANGE_DIAS_MES, RANGE_MESES,
MateriaPesquisaOrderingFilter, autor_label, MateriaPesquisaOrderingFilter, autor_label,
autor_modal, timezone) autor_modal, timezone)
from .models import (Bancada, Bloco, ExpedienteMateria, JustificativaAusencia, from .models import (Bancada, Bloco, ExpedienteMateria, JustificativaAusencia,
Orador, OradorExpediente, OrdemDia, PresencaOrdemDia, SessaoPlenaria, Orador, OradorExpediente, OrdemDia, PresencaOrdemDia, SessaoPlenaria,
SessaoPlenariaPresenca, TipoJustificativa, TipoResultadoVotacao, SessaoPlenariaPresenca, TipoJustificativa, TipoResultadoVotacao,
@ -218,11 +219,11 @@ class RetiradaPautaForm(ModelForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
row1 = to_row([('tipo_de_retirada', 5), row1 = to_row([('tipo_de_retirada', 5),
('parlamentar', 4), ('parlamentar', 4),
('data', 3)]) ('data', 3)])
row2 = to_row([('ordem', 6), row2 = to_row([('ordem', 6),
('expediente', 6)]) ('expediente', 6)])
row3 = to_row([('observacao',12)]) row3 = to_row([('observacao', 12)])
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = SaplFormLayout( self.helper.layout = SaplFormLayout(
@ -232,8 +233,10 @@ class RetiradaPautaForm(ModelForm):
q = Q(sessao_plenaria=kwargs['initial']['sessao_plenaria']) q = Q(sessao_plenaria=kwargs['initial']['sessao_plenaria'])
ordens = OrdemDia.objects.filter(q) ordens = OrdemDia.objects.filter(q)
expedientes = ExpedienteMateria.objects.filter(q) expedientes = ExpedienteMateria.objects.filter(q)
retiradas_ordem = [r.ordem for r in RetiradaPauta.objects.filter(q, ordem__in=ordens)] retiradas_ordem = [
retiradas_expediente = [r.expediente for r in RetiradaPauta.objects.filter(q, expediente__in=expedientes)] r.ordem for r in RetiradaPauta.objects.filter(q, ordem__in=ordens)]
retiradas_expediente = [r.expediente for r in RetiradaPauta.objects.filter(
q, expediente__in=expedientes)]
setOrdem = set(ordens) - set(retiradas_ordem) setOrdem = set(ordens) - set(retiradas_ordem)
setExpediente = set(expedientes) - set(retiradas_expediente) setExpediente = set(expedientes) - set(retiradas_expediente)
@ -264,19 +267,23 @@ class RetiradaPautaForm(ModelForm):
sessao_plenaria = self.instance.sessao_plenaria sessao_plenaria = self.instance.sessao_plenaria
if self.cleaned_data['data'] < sessao_plenaria.data_inicio: if self.cleaned_data['data'] < sessao_plenaria.data_inicio:
raise ValidationError(_("Data de retirada de pauta anterior à abertura da Sessão.")) raise ValidationError(
_("Data de retirada de pauta anterior à abertura da Sessão."))
if sessao_plenaria.data_fim and self.cleaned_data['data'] > sessao_plenaria.data_fim: if sessao_plenaria.data_fim and self.cleaned_data['data'] > sessao_plenaria.data_fim:
raise ValidationError(_("Data de retirada de pauta posterior ao encerramento da Sessão.")) raise ValidationError(
_("Data de retirada de pauta posterior ao encerramento da Sessão."))
if self.cleaned_data['ordem'] and self.cleaned_data['ordem'].registrovotacao_set.exists(): if self.cleaned_data['ordem'] and self.cleaned_data['ordem'].registrovotacao_set.exists():
raise ValidationError(_("Essa matéria já foi votada, portanto não pode ser retirada de pauta.")) raise ValidationError(
_("Essa matéria já foi votada, portanto não pode ser retirada de pauta."))
elif self.cleaned_data['expediente'] and self.cleaned_data['expediente'].registrovotacao_set.exists(): elif self.cleaned_data['expediente'] and self.cleaned_data['expediente'].registrovotacao_set.exists():
raise ValidationError(_("Essa matéria já foi votada, portanto não pode ser retirada de pauta.")) raise ValidationError(
_("Essa matéria já foi votada, portanto não pode ser retirada de pauta."))
return self.cleaned_data return self.cleaned_data
def save(self, commit=False): def save(self, commit=False):
retirada = super(RetiradaPautaForm, self).save(commit=False) retirada = super(RetiradaPautaForm, self).save(commit=commit)
if retirada.ordem: if retirada.ordem:
retirada.materia = retirada.ordem.materia retirada.materia = retirada.ordem.materia
elif retirada.expediente: elif retirada.expediente:
@ -284,6 +291,7 @@ class RetiradaPautaForm(ModelForm):
retirada.save() retirada.save()
return retirada return retirada
class BancadaForm(ModelForm): class BancadaForm(ModelForm):
class Meta: class Meta:
@ -522,10 +530,12 @@ class VotacaoForm(forms.Form):
votos_sim = forms.IntegerField(label='Sim') votos_sim = forms.IntegerField(label='Sim')
votos_nao = forms.IntegerField(label='Não') votos_nao = forms.IntegerField(label='Não')
abstencoes = forms.IntegerField(label='Abstenções') abstencoes = forms.IntegerField(label='Abstenções')
total_presentes = forms.IntegerField(required=False, widget=forms.HiddenInput()) total_presentes = forms.IntegerField(
voto_presidente = forms.IntegerField(label='A totalização inclui o voto do Presidente?') required=False, widget=forms.HiddenInput())
voto_presidente = forms.IntegerField(
label='A totalização inclui o voto do Presidente?')
total_votos = forms.IntegerField(required=False, label='total') total_votos = forms.IntegerField(required=False, label='total')
observacao = forms.CharField(required=False , label='Observação') observacao = forms.CharField(required=False, label='Observação')
resultado_votacao = forms.CharField(label='Resultado da Votação') resultado_votacao = forms.CharField(label='Resultado da Votação')
def clean(self): def clean(self):
@ -544,7 +554,8 @@ class VotacaoForm(forms.Form):
qtde_presentes -= 1 qtde_presentes -= 1
if qtde_presentes and qtde_votos != qtde_presentes: if qtde_presentes and qtde_votos != qtde_presentes:
raise ValidationError('O total de votos não corresponde com a quantidade de presentes!') raise ValidationError(
'O total de votos não corresponde com a quantidade de presentes!')
return cleaned_data return cleaned_data
@ -764,7 +775,7 @@ class ResumoOrdenacaoForm(forms.Form):
decimo = forms.ChoiceField(label='10°', decimo = forms.ChoiceField(label='10°',
choices=ORDENACAO_RESUMO) choices=ORDENACAO_RESUMO)
decimo_primeiro = forms.ChoiceField(label='11°', decimo_primeiro = forms.ChoiceField(label='11°',
choices=ORDENACAO_RESUMO) choices=ORDENACAO_RESUMO)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(ResumoOrdenacaoForm, self).__init__(*args, **kwargs) super(ResumoOrdenacaoForm, self).__init__(*args, **kwargs)
@ -796,7 +807,7 @@ class ResumoOrdenacaoForm(forms.Form):
self.helper.layout = Layout( self.helper.layout = Layout(
Fieldset(_(''), Fieldset(_(''),
row1, row2, row3, row4, row5, row1, row2, row3, row4, row5,
row6, row7, row8, row9, row10,row11, row6, row7, row8, row9, row10, row11,
form_actions(label='Atualizar')) form_actions(label='Atualizar'))
) )
@ -875,7 +886,6 @@ class JustificativaAusenciaForm(ModelForm):
legislatura=legislatura).order_by('parlamentar__nome_parlamentar') legislatura=legislatura).order_by('parlamentar__nome_parlamentar')
parlamentares = [m.parlamentar for m in mandato] parlamentares = [m.parlamentar for m in mandato]
super(JustificativaAusenciaForm, self).__init__( super(JustificativaAusenciaForm, self).__init__(
*args, **kwargs) *args, **kwargs)
@ -900,7 +910,7 @@ class JustificativaAusenciaForm(ModelForm):
("0", "------------")] + [(p.id, p) for p in setFinal] ("0", "------------")] + [(p.id, p) for p in setFinal]
def clean(self): def clean(self):
cleaned_data = super(JustificativaAusenciaForm, self).clean() super(JustificativaAusenciaForm, self).clean()
if not self.is_valid(): if not self.is_valid():
return self.cleaned_data return self.cleaned_data
@ -913,7 +923,7 @@ class JustificativaAusenciaForm(ModelForm):
else: else:
return self.cleaned_data return self.cleaned_data
def save(self, commit=False): def save(self):
justificativa = super().save(True) justificativa = super().save(True)

Loading…
Cancel
Save