Browse Source

ajustas heranças de seleção baseada em content_types

- muda BancadaCrud(Crud) para BancadaCrud(CrudAux) e BlocoCrud(Crud)
para BlocoCrud(CrudAux) e adequa forma de buscar TipoAutor em metodos
save de formulários que criam Autores automaticamente.
pull/2490/head
Leandro Roberto 6 years ago
parent
commit
4cdc78788f
  1. 36
      sapl/comissoes/forms.py
  2. 2
      sapl/materia/forms.py
  3. 21
      sapl/parlamentares/forms.py
  4. 4
      sapl/sessao/forms.py
  5. 17
      sapl/sessao/views.py

36
sapl/comissoes/forms.py

@ -13,10 +13,13 @@ from sapl.comissoes.models import (Comissao, Composicao, DocumentoAcessorio,
Participacao, Reuniao, Periodo) Participacao, Reuniao, Periodo)
from sapl.parlamentares.models import Legislatura, Mandato, Parlamentar from sapl.parlamentares.models import Legislatura, Mandato, Parlamentar
class ComposicaoForm(forms.ModelForm): class ComposicaoForm(forms.ModelForm):
comissao = forms.CharField(required=False, label='Comissao', widget=forms.HiddenInput()) comissao = forms.CharField(
required=False, label='Comissao', widget=forms.HiddenInput())
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class Meta: class Meta:
model = Composicao model = Composicao
exclude = [] exclude = []
@ -55,6 +58,7 @@ class ComposicaoForm(forms.ModelForm):
class PeriodoForm(forms.ModelForm): class PeriodoForm(forms.ModelForm):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class Meta: class Meta:
model = Periodo model = Periodo
exclude = [] exclude = []
@ -90,11 +94,9 @@ class PeriodoForm(forms.ModelForm):
'deve estar contido em uma única ' 'deve estar contido em uma única '
'legislatura existente') 'legislatura existente')
return cleaned_data return cleaned_data
class ParticipacaoCreateForm(forms.ModelForm): class ParticipacaoCreateForm(forms.ModelForm):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -137,7 +139,6 @@ class ParticipacaoCreateForm(forms.ModelForm):
qs = Parlamentar.objects.filter(id__in=ids) qs = Parlamentar.objects.filter(id__in=ids)
self.fields['parlamentar'].queryset = qs self.fields['parlamentar'].queryset = qs
def clean(self): def clean(self):
cleaned_data = super(ParticipacaoCreateForm, self).clean() cleaned_data = super(ParticipacaoCreateForm, self).clean()
@ -155,15 +156,16 @@ class ParticipacaoCreateForm(forms.ModelForm):
'à data de desligamento')) 'à data de desligamento'))
composicao = Composicao.objects.get(id=self.initial['parent_pk']) composicao = Composicao.objects.get(id=self.initial['parent_pk'])
cargos_unicos = [c.cargo.nome for c in composicao.participacao_set.filter(cargo__unico=True)] cargos_unicos = [
c.cargo.nome for c in composicao.participacao_set.filter(cargo__unico=True)]
if cleaned_data['cargo'].nome in cargos_unicos: if cleaned_data['cargo'].nome in cargos_unicos:
msg = _('Este cargo é único para esta Comissão.') msg = _('Este cargo é único para esta Comissão.')
self.logger.error('Este cargo ({}) é único para esta Comissão.'.format(cleaned_data['cargo'].nome)) self.logger.error('Este cargo ({}) é único para esta Comissão.'.format(
cleaned_data['cargo'].nome))
raise ValidationError(msg) raise ValidationError(msg)
return cleaned_data return cleaned_data
def create_participacao(self): def create_participacao(self):
composicao = Composicao.objects.get(id=self.initial['parent_pk']) composicao = Composicao.objects.get(id=self.initial['parent_pk'])
data_inicio_comissao = composicao.periodo.data_inicio data_inicio_comissao = composicao.periodo.data_inicio
@ -259,6 +261,7 @@ class ParticipacaoEditForm(forms.ModelForm):
class ComissaoForm(forms.ModelForm): class ComissaoForm(forms.ModelForm):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class Meta: class Meta:
model = Comissao model = Comissao
fields = '__all__' fields = '__all__'
@ -274,8 +277,6 @@ class ComissaoForm(forms.ModelForm):
self.fields['data_prorrogada_temp'].widget.attrs['disabled'] = 'disabled' self.fields['data_prorrogada_temp'].widget.attrs['disabled'] = 'disabled'
self.fields['data_fim_comissao'].widget.attrs['disabled'] = 'disabled' self.fields['data_fim_comissao'].widget.attrs['disabled'] = 'disabled'
def clean(self): def clean(self):
super(ComissaoForm, self).clean() super(ComissaoForm, self).clean()
@ -283,8 +284,10 @@ class ComissaoForm(forms.ModelForm):
return self.cleaned_data return self.cleaned_data
if len(self.cleaned_data['nome']) > 100: if len(self.cleaned_data['nome']) > 100:
msg = _('Nome da Comissão informado ({}) tem mais de 50 caracteres.'.format(self.cleaned_data['nome'])) msg = _('Nome da Comissão informado ({}) tem mais de 50 caracteres.'.format(
self.logger.error('Nome da Comissão deve ter no máximo 50 caracteres.') self.cleaned_data['nome']))
self.logger.error(
'Nome da Comissão deve ter no máximo 50 caracteres.')
raise ValidationError(msg) raise ValidationError(msg)
if (self.cleaned_data['data_extincao'] and if (self.cleaned_data['data_extincao'] and
self.cleaned_data['data_extincao'] < self.cleaned_data['data_extincao'] <
@ -317,7 +320,8 @@ class ComissaoForm(forms.ModelForm):
if (self.cleaned_data['data_final_prevista_temp'] and self.cleaned_data['data_instalacao_temp'] and if (self.cleaned_data['data_final_prevista_temp'] and self.cleaned_data['data_instalacao_temp'] and
self.cleaned_data['data_final_prevista_temp'] < self.cleaned_data['data_final_prevista_temp'] <
self.cleaned_data['data_instalacao_temp']): self.cleaned_data['data_instalacao_temp']):
msg = _('Data Prevista para Término não pode ser menor que a de Instalação.') msg = _(
'Data Prevista para Término não pode ser menor que a de Instalação.')
self.logger.error('Data Prevista para Término ({}) não pode ser menor que a de Instalação ({}).' self.logger.error('Data Prevista para Término ({}) não pode ser menor que a de Instalação ({}).'
.format(self.cleaned_data['data_final_prevista_temp'], self.cleaned_data['data_instalacao_temp'])) .format(self.cleaned_data['data_final_prevista_temp'], self.cleaned_data['data_instalacao_temp']))
raise ValidationError(msg) raise ValidationError(msg)
@ -337,7 +341,7 @@ class ComissaoForm(forms.ModelForm):
comissao = super(ComissaoForm, self).save(commit) comissao = super(ComissaoForm, self).save(commit)
content_type = ContentType.objects.get_for_model(Comissao) content_type = ContentType.objects.get_for_model(Comissao)
object_id = comissao.pk object_id = comissao.pk
tipo = TipoAutor.objects.get(descricao__icontains='Comiss') tipo = TipoAutor.objects.get(content_type=content_type)
nome = comissao.sigla + ' - ' + comissao.nome nome = comissao.sigla + ' - ' + comissao.nome
Autor.objects.create( Autor.objects.create(
content_type=content_type, content_type=content_type,
@ -364,19 +368,20 @@ class ReuniaoForm(ModelForm):
def clean(self): def clean(self):
super(ReuniaoForm, self).clean() super(ReuniaoForm, self).clean()
if not self.is_valid(): if not self.is_valid():
return self.cleaned_data return self.cleaned_data
if self.cleaned_data['hora_fim']: if self.cleaned_data['hora_fim']:
if (self.cleaned_data['hora_fim'] < if (self.cleaned_data['hora_fim'] <
self.cleaned_data['hora_inicio']): self.cleaned_data['hora_inicio']):
msg = _('A hora de término da reunião não pode ser menor que a de início') msg = _(
'A hora de término da reunião não pode ser menor que a de início')
self.logger.error("A hora de término da reunião ({}) não pode ser menor que a de início ({})." self.logger.error("A hora de término da reunião ({}) não pode ser menor que a de início ({})."
.format(self.cleaned_data['hora_fim'], self.cleaned_data['hora_inicio'])) .format(self.cleaned_data['hora_fim'], self.cleaned_data['hora_inicio']))
raise ValidationError(msg) raise ValidationError(msg)
return self.cleaned_data return self.cleaned_data
class DocumentoAcessorioCreateForm(forms.ModelForm): class DocumentoAcessorioCreateForm(forms.ModelForm):
parent_pk = forms.CharField(required=False) # widget=forms.HiddenInput()) parent_pk = forms.CharField(required=False) # widget=forms.HiddenInput())
@ -395,7 +400,6 @@ class DocumentoAcessorioCreateForm(forms.ModelForm):
documentos = reuniao.documentoacessorio_set.all() documentos = reuniao.documentoacessorio_set.all()
return self.create_documentoacessorio() return self.create_documentoacessorio()
def create_documentoacessorio(self): def create_documentoacessorio(self):
reuniao = Reuniao.objects.get(id=self.initial['parent_pk']) reuniao = Reuniao.objects.get(id=self.initial['parent_pk'])

2
sapl/materia/forms.py

@ -96,7 +96,7 @@ class OrgaoForm(ModelForm):
orgao = super(OrgaoForm, self).save(commit) orgao = super(OrgaoForm, self).save(commit)
content_type = ContentType.objects.get_for_model(Orgao) content_type = ContentType.objects.get_for_model(Orgao)
object_id = orgao.pk object_id = orgao.pk
tipo = TipoAutor.objects.get(descricao='Órgão') tipo = TipoAutor.objects.get(content_type=content_type)
nome = orgao.nome + ' - ' + orgao.sigla nome = orgao.nome + ' - ' + orgao.sigla
Autor.objects.create( Autor.objects.create(
content_type=content_type, content_type=content_type,

21
sapl/parlamentares/forms.py

@ -1,6 +1,5 @@
import logging
from datetime import timedelta from datetime import timedelta
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
@ -66,7 +65,8 @@ def validar_datas_legislatura(eleicao, inicio, fim, pk=None):
# Verifica se há alguma outra data de eleição cadastrada # Verifica se há alguma outra data de eleição cadastrada
if Legislatura.objects.filter( if Legislatura.objects.filter(
data_eleicao=eleicao).exclude(pk=pk).exists(): data_eleicao=eleicao).exclude(pk=pk).exists():
logger.error("Esta data de eleição ({}) já foi cadastrada.".format(eleicao)) logger.error(
"Esta data de eleição ({}) já foi cadastrada.".format(eleicao))
msg_error = _('Esta data de eleição já foi cadastrada') msg_error = _('Esta data de eleição já foi cadastrada')
return (False, msg_error) return (False, msg_error)
@ -75,6 +75,7 @@ def validar_datas_legislatura(eleicao, inicio, fim, pk=None):
class MandatoForm(ModelForm): class MandatoForm(ModelForm):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class Meta: class Meta:
model = Mandato model = Mandato
fields = ['legislatura', 'coligacao', 'votos_recebidos', fields = ['legislatura', 'coligacao', 'votos_recebidos',
@ -158,7 +159,6 @@ class LegislaturaForm(ModelForm):
if not self.is_valid(): if not self.is_valid():
return self.cleaned_data return self.cleaned_data
numero = data['numero'] numero = data['numero']
data_inicio = data['data_inicio'] data_inicio = data['data_inicio']
data_fim = data['data_fim'] data_fim = data['data_fim']
@ -166,7 +166,6 @@ class LegislaturaForm(ModelForm):
pk = self.instance.pk pk = self.instance.pk
ultima_legislatura = Legislatura.objects.filter(data_inicio__lt=data_inicio ultima_legislatura = Legislatura.objects.filter(data_inicio__lt=data_inicio
).order_by('-data_inicio').first() ).order_by('-data_inicio').first()
proxima_legislatura = Legislatura.objects.filter(data_fim__gt=data_fim proxima_legislatura = Legislatura.objects.filter(data_fim__gt=data_fim
@ -175,7 +174,8 @@ class LegislaturaForm(ModelForm):
if ultima_legislatura and ultima_legislatura.numero >= numero: if ultima_legislatura and ultima_legislatura.numero >= numero:
self.logger.error("Número ({}) deve ser maior que o da legislatura anterior ({})." self.logger.error("Número ({}) deve ser maior que o da legislatura anterior ({})."
.format(numero, ultima_legislatura.numero)) .format(numero, ultima_legislatura.numero))
raise ValidationError(_("Número deve ser maior que o da legislatura anterior")) raise ValidationError(
_("Número deve ser maior que o da legislatura anterior"))
elif proxima_legislatura and proxima_legislatura.numero <= numero: elif proxima_legislatura and proxima_legislatura.numero <= numero:
self.logger.error("O Número ({}) deve ser menor que {}, pois existe uma " self.logger.error("O Número ({}) deve ser menor que {}, pois existe uma "
"legislatura afrente cronologicamente desta que está sendo criada!" "legislatura afrente cronologicamente desta que está sendo criada!"
@ -241,7 +241,7 @@ class ParlamentarCreateForm(ParlamentarForm):
data_expedicao_diploma=self.cleaned_data['data_expedicao_diploma']) data_expedicao_diploma=self.cleaned_data['data_expedicao_diploma'])
content_type = ContentType.objects.get_for_model(Parlamentar) content_type = ContentType.objects.get_for_model(Parlamentar)
object_id = parlamentar.pk object_id = parlamentar.pk
tipo = TipoAutor.objects.get(descricao='Parlamentar') tipo = TipoAutor.objects.get(content_type=content_type)
Autor.objects.create( Autor.objects.create(
content_type=content_type, content_type=content_type,
object_id=object_id, object_id=object_id,
@ -385,6 +385,7 @@ class ComposicaoColigacaoForm(ModelForm):
class FrenteForm(ModelForm): class FrenteForm(ModelForm):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(FrenteForm, self).__init__(*args, **kwargs) super(FrenteForm, self).__init__(*args, **kwargs)
self.fields['parlamentares'].queryset = Parlamentar.objects.filter( self.fields['parlamentares'].queryset = Parlamentar.objects.filter(
@ -405,7 +406,8 @@ class FrenteForm(ModelForm):
if cd['data_extincao'] and cd['data_criacao'] >= cd['data_extincao']: if cd['data_extincao'] and cd['data_criacao'] >= cd['data_extincao']:
self.logger.error("Data Dissolução ({}) não pode ser anterior a Data Criação ({})." self.logger.error("Data Dissolução ({}) não pode ser anterior a Data Criação ({})."
.format(cd['data_extincao'], cd['data_criacao'])) .format(cd['data_extincao'], cd['data_criacao']))
raise ValidationError(_("Data Dissolução não pode ser anterior a Data Criação")) raise ValidationError(
_("Data Dissolução não pode ser anterior a Data Criação"))
return cd return cd
@ -466,7 +468,8 @@ class VotanteForm(ModelForm):
username = cd['username'] username = cd['username']
user = get_user_model().objects.filter(username=username) user = get_user_model().objects.filter(username=username)
if not user.exists(): if not user.exists():
self.logger.error("Não foi possível vincular usuário. Usuário {} não existe.".format(username)) self.logger.error(
"Não foi possível vincular usuário. Usuário {} não existe.".format(username))
raise ValidationError(_( raise ValidationError(_(
"{} [{}] {}".format( "{} [{}] {}".format(
'Não foi possível vincular usuário. Usuário', 'Não foi possível vincular usuário. Usuário',

4
sapl/sessao/forms.py

@ -317,7 +317,7 @@ class BancadaForm(ModelForm):
bancada = super(BancadaForm, self).save(commit) bancada = super(BancadaForm, self).save(commit)
content_type = ContentType.objects.get_for_model(Bancada) content_type = ContentType.objects.get_for_model(Bancada)
object_id = bancada.pk object_id = bancada.pk
tipo = TipoAutor.objects.get(descricao__icontains='Bancada') tipo = TipoAutor.objects.get(content_type=content_type)
Autor.objects.create( Autor.objects.create(
content_type=content_type, content_type=content_type,
object_id=object_id, object_id=object_id,
@ -352,7 +352,7 @@ class BlocoForm(ModelForm):
bloco = super(BlocoForm, self).save(commit) bloco = super(BlocoForm, self).save(commit)
content_type = ContentType.objects.get_for_model(Bloco) content_type = ContentType.objects.get_for_model(Bloco)
object_id = bloco.pk object_id = bloco.pk
tipo = TipoAutor.objects.get(descricao__icontains='Bloco') tipo = TipoAutor.objects.get(content_type=content_type)
Autor.objects.create( Autor.objects.create(
content_type=content_type, content_type=content_type,
object_id=object_id, object_id=object_id,

17
sapl/sessao/views.py

@ -614,26 +614,20 @@ class OradorCrud(OradorCrud):
return initial return initial
class BancadaCrud(Crud): class BancadaCrud(CrudAux):
model = Bancada model = Bancada
class ListView(Crud.ListView): class CreateView(CrudAux.CreateView):
template_name = 'crud/list_tabaux.html'
class CreateView(Crud.CreateView):
form_class = BancadaForm form_class = BancadaForm
def get_success_url(self): def get_success_url(self):
return reverse('sapl.sessao:bancada_list') return reverse('sapl.sessao:bancada_list')
class BlocoCrud(Crud): class BlocoCrud(CrudAux):
model = Bloco model = Bloco
class ListView(Crud.ListView): class CreateView(CrudAux.CreateView):
template_name = 'crud/list_tabaux.html'
class CreateView(Crud.CreateView):
form_class = BlocoForm form_class = BlocoForm
def get_success_url(self): def get_success_url(self):
@ -1902,7 +1896,8 @@ class VotacaoView(SessaoPermissionMixin):
qtde_presentes -= 1 qtde_presentes -= 1
if (qtde_votos > qtde_presentes or qtde_votos < qtde_presentes): if (qtde_votos > qtde_presentes or qtde_votos < qtde_presentes):
msg = _('O total de votos não corresponde com a quantidade de presentes!') msg = _(
'O total de votos não corresponde com a quantidade de presentes!')
messages.add_message(request, messages.ERROR, msg) messages.add_message(request, messages.ERROR, msg)
return self.render_to_response(context) return self.render_to_response(context)
elif (qtde_presentes == qtde_votos): elif (qtde_presentes == qtde_votos):

Loading…
Cancel
Save