@ -1,4 +1,5 @@
import logging
import os
from crispy_forms . bootstrap import FieldWithButtons , InlineRadios , StrictButton
from sapl . crispy_layout_mixin import SaplFormHelper
@ -28,7 +29,7 @@ from sapl.crispy_layout_mixin import (SaplFormLayout, form_actions, to_column,
from sapl . materia . models import (
MateriaLegislativa , UnidadeTramitacao , StatusTramitacao )
from sapl . norma . models import ( NormaJuridica , NormaEstatisticas )
from sapl . parlamentares . models import SessaoLegislativa
from sapl . parlamentares . models import SessaoLegislativa , Partido
from sapl . sessao . models import SessaoPlenaria
from sapl . settings import MAX_IMAGE_UPLOAD_SIZE
from sapl . utils import ( RANGE_ANOS , YES_NO_CHOICES ,
@ -36,8 +37,7 @@ from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES,
RangeWidgetOverride , autor_label , autor_modal ,
models_with_gr_for_model , qs_override_django_filter ,
choice_anos_com_normas , choice_anos_com_materias ,
FilterOverridesMetaMixin )
FilterOverridesMetaMixin , FileFieldCheckMixin )
from . models import AppConfig , CasaLegislativa
@ -198,7 +198,7 @@ class UsuarioEditForm(ModelForm):
return data
class SessaoLegislativaForm ( ModelForm ) :
class SessaoLegislativaForm ( FileFieldCheckMixin , ModelForm ) :
logger = logging . getLogger ( __name__ )
class Meta :
@ -1108,7 +1108,7 @@ class RelatorioMateriasPorAutorFilterSet(django_filters.FilterSet):
)
class CasaLegislativaForm ( ModelForm ) :
class CasaLegislativaForm ( FileFieldCheckMixin , ModelForm ) :
class Meta :
@ -1138,7 +1138,11 @@ class CasaLegislativaForm(ModelForm):
}
def clean_logotipo ( self ) :
logotipo = self . cleaned_data . get ( ' logotipo ' , False )
# chama __clean de FileFieldCheckMixin
# por estar em clean de campo
super ( CasaLegislativaForm , self ) . _check ( )
logotipo = self . cleaned_data . get ( ' logotipo ' )
if logotipo :
if logotipo . size > MAX_IMAGE_UPLOAD_SIZE :
raise ValidationError ( " Imagem muito grande. ( > 2MB ) " )
@ -1204,7 +1208,7 @@ class ConfiguracoesAppForm(ModelForm):
self . logger . error ( ' Não há casa legislativa relacionada. ' )
raise ValidationError ( " Não há casa legislativa relacionada. " )
if ( not bool ( casa . logotipo ) and mostrar_brasao_painel ) :
if not casa . logotipo and mostrar_brasao_painel :
self . logger . error ( ' Não há logitipo configurado para esta '
' CasaLegislativa ( {} ). ' . format ( casa ) )
raise ValidationError ( " Não há logitipo configurado para esta "
@ -1346,3 +1350,46 @@ class AlterarSenhaForm(Form):
" Nova senha não pode ser igual à senha anterior " )
return self . cleaned_data
class PartidoForm ( FileFieldCheckMixin , ModelForm ) :
class Meta :
model = Partido
exclude = [ ]
def __init__ ( self , * args , * * kwargs ) :
super ( PartidoForm , self ) . __init__ ( * args , * * kwargs )
# TODO Utilizar esses campos na issue #2161 de alteração de nomes de partidos
# if self.instance:
# if self.instance.nome:
# self.fields['nome'].widget.attrs['readonly'] = True
# self.fields['sigla'].widget.attrs['readonly'] = True
row1 = to_row (
[ ( ' sigla ' , 2 ) ,
( ' nome ' , 6 ) ,
( ' data_criacao ' , 2 ) ,
( ' data_extincao ' , 2 ) , ] )
row2 = to_row ( [ ( ' observacao ' , 12 ) ] )
row3 = to_row ( [ ( ' logo_partido ' , 12 ) ] )
self . helper = SaplFormHelper ( )
self . helper . layout = Layout (
row1 , row2 , row3 ,
form_actions ( label = ' Salvar ' ) )
def clean ( self ) :
cleaned_data = super ( PartidoForm , self ) . clean ( )
if not self . is_valid ( ) :
return cleaned_data
if cleaned_data [ ' data_criacao ' ] and cleaned_data [ ' data_extincao ' ] :
if cleaned_data [ ' data_criacao ' ] > cleaned_data [ ' data_extincao ' ] :
raise ValidationError ( " Certifique-se de que a data de criação seja anterior à data de extinção. " )
return cleaned_data