|
|
|
@ -26,7 +26,7 @@ import django_filters |
|
|
|
|
|
|
|
import sapl |
|
|
|
from sapl.base.models import AppConfig, Autor, TipoAutor |
|
|
|
from sapl.comissoes.models import Comissao, Participacao |
|
|
|
from sapl.comissoes.models import Comissao, Participacao, Composicao |
|
|
|
from sapl.compilacao.models import (STATUS_TA_IMMUTABLE_PUBLIC, |
|
|
|
STATUS_TA_PRIVATE) |
|
|
|
from sapl.crispy_layout_mixin import (SaplFormLayout, form_actions, to_column, |
|
|
|
@ -37,7 +37,7 @@ from sapl.materia.models import (AssuntoMateria, Autoria, MateriaAssunto, |
|
|
|
UnidadeTramitacao) |
|
|
|
from sapl.norma.models import (LegislacaoCitada, NormaJuridica, |
|
|
|
TipoNormaJuridica) |
|
|
|
from sapl.parlamentares.models import Legislatura, Partido |
|
|
|
from sapl.parlamentares.models import Legislatura, Partido, Parlamentar |
|
|
|
from sapl.protocoloadm.models import Protocolo, DocumentoAdministrativo |
|
|
|
from sapl.settings import MAX_DOC_UPLOAD_SIZE |
|
|
|
from sapl.utils import (YES_NO_CHOICES, SEPARADOR_HASH_PROPOSICAO, |
|
|
|
@ -362,34 +362,63 @@ class DocumentoAcessorioForm(FileFieldCheckMixin, ModelForm): |
|
|
|
|
|
|
|
|
|
|
|
class RelatoriaForm(ModelForm): |
|
|
|
|
|
|
|
logger = logging.getLogger(__name__) |
|
|
|
|
|
|
|
composicao = forms.ModelChoiceField( |
|
|
|
required=True, |
|
|
|
empty_label='---------', |
|
|
|
queryset=Composicao.objects.all(), |
|
|
|
label=_('Composição') |
|
|
|
) |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = Relatoria |
|
|
|
fields = ['data_designacao_relator', 'comissao', 'parlamentar', |
|
|
|
'data_destituicao_relator', 'tipo_fim_relatoria'] |
|
|
|
fields = [ |
|
|
|
'comissao', |
|
|
|
'data_designacao_relator', |
|
|
|
'data_destituicao_relator', |
|
|
|
'tipo_fim_relatoria', |
|
|
|
'composicao', |
|
|
|
'parlamentar' |
|
|
|
] |
|
|
|
|
|
|
|
widgets = {'comissao': forms.Select(attrs={'disabled': 'disabled'})} |
|
|
|
|
|
|
|
def __init__(self, *args, **kwargs): |
|
|
|
row1 = to_row([('comissao', 12)]) |
|
|
|
row2 = to_row([('data_designacao_relator', 4), |
|
|
|
('data_destituicao_relator', 4), |
|
|
|
('tipo_fim_relatoria', 4)]) |
|
|
|
row3 = to_row([('composicao', 4), |
|
|
|
('parlamentar', 8)]) |
|
|
|
|
|
|
|
self.helper = SaplFormHelper() |
|
|
|
self.helper.layout = SaplFormLayout( |
|
|
|
Fieldset(_('Relatoria'), row1, row2, row3)) |
|
|
|
|
|
|
|
super().__init__(*args, **kwargs) |
|
|
|
comissao_pk = kwargs['initial']['comissao'] |
|
|
|
composicoes = Composicao.objects.filter(comissao_id=comissao_pk) |
|
|
|
self.fields['composicao'].choices = [('', '---------')] + \ |
|
|
|
[(c.pk, c) for c in composicoes] |
|
|
|
|
|
|
|
def clean(self): |
|
|
|
super(RelatoriaForm, self).clean() |
|
|
|
self.fields['parlamentar'].choices = [('', '---------')] |
|
|
|
|
|
|
|
if not self.is_valid(): |
|
|
|
return self.cleaned_data |
|
|
|
def clean(self): |
|
|
|
super().clean() |
|
|
|
|
|
|
|
cleaned_data = self.cleaned_data |
|
|
|
|
|
|
|
if not self.is_valid(): |
|
|
|
return cleaned_data |
|
|
|
|
|
|
|
try: |
|
|
|
self.logger.debug("Tentando obter objeto Comissao.") |
|
|
|
comissao = Comissao.objects.get(id=self.initial['comissao']) |
|
|
|
except ObjectDoesNotExist as e: |
|
|
|
self.logger.error("Objeto Comissao não encontrado com id={} " |
|
|
|
".A localização atual deve ser uma comissão. " |
|
|
|
.format(self.initial['comissao']) + str(e)) |
|
|
|
self.logger.error( |
|
|
|
"Objeto Comissao não encontrado com id={}. A localização atual deve ser uma comissão. ".format( |
|
|
|
self.initial['comissao']) + str(e)) |
|
|
|
msg = _('A localização atual deve ser uma comissão.') |
|
|
|
raise ValidationError(msg) |
|
|
|
else: |
|
|
|
|