Browse Source

Add field observacao no model Legislatura

pull/3585/head
LeandroJatai 2 years ago
parent
commit
0a84f9323e
  1. 18
      sapl/base/migrations/0049_auto_20220728_2029.py
  2. 40
      sapl/parlamentares/forms.py
  3. 18
      sapl/parlamentares/migrations/0039_legislatura_observacao.py
  4. 10
      sapl/parlamentares/models.py
  5. 1
      sapl/templates/parlamentares/layouts.yaml

18
sapl/base/migrations/0049_auto_20220728_2029.py

@ -0,0 +1,18 @@
# Generated by Django 2.2.20 on 2022-07-28 23:29
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('base', '0048_appconfig_tramitacao_origem_fixa'),
]
operations = [
migrations.AlterField(
model_name='appconfig',
name='tramitacao_origem_fixa',
field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=True, help_text='Ao utilizar a opção NÂO, você compreende que os controles de origem e destino das tramitações são anulados, podendo seu operador registrar quaisquer origem e destino para as tramitações. Se você colocar Não, fizer tramitações aleatórias e voltar para SIM, o destino da tramitação mais recente será utilizado para a origem de uma nova inserção!', verbose_name='Fixar origem de novas tramitações como sendo a tramitação de destino da última tramitação?'),
),
]

40
sapl/parlamentares/forms.py

@ -1,7 +1,6 @@
from datetime import timedelta from datetime import timedelta
import logging import logging
from sapl.crispy_layout_mixin import SaplFormHelper
from crispy_forms.layout import Fieldset, Layout from crispy_forms.layout import Fieldset, Layout
from django import forms from django import forms
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
@ -13,14 +12,15 @@ from django.db.models import Q
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 floppyforms.widgets import ClearableFileInput from floppyforms.widgets import ClearableFileInput
from image_cropping.widgets import CropWidget, ImageCropWidget from image_cropping.widgets import CropWidget, ImageCropWidget
from sapl.utils import FileFieldCheckMixin
from sapl.base.models import Autor, TipoAutor from sapl.base.models import Autor, TipoAutor
from sapl.crispy_layout_mixin import SaplFormHelper
from sapl.crispy_layout_mixin import form_actions, to_row from sapl.crispy_layout_mixin import form_actions, to_row
from sapl.rules import SAPL_GROUP_VOTANTE from sapl.rules import SAPL_GROUP_VOTANTE
import django_filters from sapl.utils import FileFieldCheckMixin
from .models import (Coligacao, ComposicaoColigacao, Filiacao, Frente, Legislatura, from .models import (Coligacao, ComposicaoColigacao, Filiacao, Frente, Legislatura,
Mandato, Parlamentar, Partido, Votante, Bloco, FrenteParlamentar, BlocoMembro) Mandato, Parlamentar, Partido, Votante, Bloco, FrenteParlamentar, BlocoMembro)
@ -161,6 +161,10 @@ class LegislaturaForm(ModelForm):
model = Legislatura model = Legislatura
exclude = [] exclude = []
widgets = {
'observacao': forms.Textarea(
attrs={'id': 'texto-rico'})}
def clean(self): def clean(self):
data = super(LegislaturaForm, self).clean() data = super(LegislaturaForm, self).clean()
@ -253,7 +257,8 @@ class ParlamentarFilterSet(django_filters.FilterSet):
class ColigacaoFilterSet(django_filters.FilterSet): class ColigacaoFilterSet(django_filters.FilterSet):
nome = django_filters.CharFilter(label=_('Nome da Coligação'), lookup_expr='icontains') nome = django_filters.CharFilter(
label=_('Nome da Coligação'), lookup_expr='icontains')
class Meta: class Meta:
model = Coligacao model = Coligacao
@ -316,7 +321,8 @@ class ParlamentarCreateForm(ParlamentarForm):
return self.cleaned_data return self.cleaned_data
cleaned_data = self.cleaned_data cleaned_data = self.cleaned_data
parlamentar = Parlamentar.objects.filter(nome_parlamentar=cleaned_data['nome_parlamentar']).exists() parlamentar = Parlamentar.objects.filter(
nome_parlamentar=cleaned_data['nome_parlamentar']).exists()
if parlamentar: if parlamentar:
self.logger.error('Parlamentar já cadastrado.') self.logger.error('Parlamentar já cadastrado.')
@ -537,9 +543,11 @@ class FrenteParlamentarForm(ModelForm):
return self.cleaned_data return self.cleaned_data
if cd['cargo'].cargo_unico: if cd['cargo'].cargo_unico:
frente_parlamentar = FrenteParlamentar.objects.filter(frente=cd['frente'], cargo=cd['cargo']) frente_parlamentar = FrenteParlamentar.objects.filter(
frente=cd['frente'], cargo=cd['cargo'])
if frente_parlamentar and not frente_parlamentar[0].parlamentar == cd['parlamentar']: if frente_parlamentar and not frente_parlamentar[0].parlamentar == cd['parlamentar']:
raise ValidationError(_("Cargo único já ocupado por outro parlamentar.")) raise ValidationError(
_("Cargo único já ocupado por outro parlamentar."))
return cd return cd
@ -669,11 +677,15 @@ class VincularParlamentarForm(forms.Form):
data_expedicao_diploma = cleaned_data['data_expedicao_diploma'] data_expedicao_diploma = cleaned_data['data_expedicao_diploma']
if parlamentar.mandato_set.filter(legislatura=legislatura): if parlamentar.mandato_set.filter(legislatura=legislatura):
self.logger.error('Parlamentar já está vinculado a legislatura informada.') self.logger.error(
raise ValidationError(_('Parlamentar já está vinculado a legislatura informada.')) 'Parlamentar já está vinculado a legislatura informada.')
raise ValidationError(
_('Parlamentar já está vinculado a legislatura informada.'))
elif data_expedicao_diploma and legislatura.data_inicio <= data_expedicao_diploma: elif data_expedicao_diploma and legislatura.data_inicio <= data_expedicao_diploma:
self.logger.error('Data da Expedição do Diploma deve ser anterior a data de início da Legislatura.') self.logger.error(
raise ValidationError(_('Data da Expedição do Diploma deve ser anterior a data de início da Legislatura.')) 'Data da Expedição do Diploma deve ser anterior a data de início da Legislatura.')
raise ValidationError(
_('Data da Expedição do Diploma deve ser anterior a data de início da Legislatura.'))
return cleaned_data return cleaned_data
@ -736,8 +748,10 @@ class BlocoMembroForm(ModelForm):
if cd['cargo'].cargo_unico \ if cd['cargo'].cargo_unico \
and BlocoMembro.objects.filter(bloco=cd['bloco'], cargo=cd['cargo'], data_saida__isnull=True)\ and BlocoMembro.objects.filter(bloco=cd['bloco'], cargo=cd['cargo'], data_saida__isnull=True)\
.exclude(pk=self.instance.pk).exists(): .exclude(pk=self.instance.pk).exists():
raise ValidationError(_("Cargo único já ocupado por outro membro.")) raise ValidationError(
_("Cargo único já ocupado por outro membro."))
elif not cd['data_saida'] and BlocoMembro.objects.filter(parlamentar=cd['parlamentar'], data_saida__isnull=True).exists(): elif not cd['data_saida'] and BlocoMembro.objects.filter(parlamentar=cd['parlamentar'], data_saida__isnull=True).exists():
raise ValidationError(_("Parlamentar já é membro do bloco parlamentar.")) raise ValidationError(
_("Parlamentar já é membro do bloco parlamentar."))
return cd return cd

18
sapl/parlamentares/migrations/0039_legislatura_observacao.py

@ -0,0 +1,18 @@
# Generated by Django 2.2.20 on 2022-07-28 23:29
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('parlamentares', '0038_sessao_legislativa_redundante'),
]
operations = [
migrations.AddField(
model_name='legislatura',
name='observacao',
field=models.TextField(blank=True, verbose_name='Observação'),
),
]

10
sapl/parlamentares/models.py

@ -22,6 +22,9 @@ class Legislatura(models.Model):
data_fim = models.DateField(verbose_name=_('Data Fim')) data_fim = models.DateField(verbose_name=_('Data Fim'))
data_eleicao = models.DateField(verbose_name=_('Data Eleição')) data_eleicao = models.DateField(verbose_name=_('Data Eleição'))
observacao = models.TextField(
blank=True, verbose_name=_('Observação'))
class Meta: class Meta:
ordering = ['-data_inicio'] ordering = ['-data_inicio']
verbose_name = _('Legislatura') verbose_name = _('Legislatura')
@ -312,7 +315,7 @@ class Parlamentar(models.Model):
@property @property
def avatar_html(self): def avatar_html(self):
return '<img class="avatar-parlamentar" src='\ return '<img class="avatar-parlamentar" src='\
+self.fotografia.url + '>'if self.fotografia else '' + self.fotografia.url + '>'if self.fotografia else ''
def delete(self, using=None, keep_parents=False): def delete(self, using=None, keep_parents=False):
if self.fotografia: if self.fotografia:
@ -513,7 +516,7 @@ class MesaDiretora(models.Model):
def __str__(self): def __str__(self):
return _('Mesa da %(sessao)s sessao da %(legislatura)s Legislatura') % { return _('Mesa da %(sessao)s sessao da %(legislatura)s Legislatura') % {
'sessao':self.sessao_legislativa, 'legislatura':self.sessao_legislativa.legislatura 'sessao': self.sessao_legislativa, 'legislatura': self.sessao_legislativa.legislatura
} }
@ -522,7 +525,8 @@ class ComposicaoMesa(models.Model):
# TODO M2M ???? Ternary????? # TODO M2M ???? Ternary?????
parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT) parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT)
cargo = models.ForeignKey(CargoMesa, on_delete=models.PROTECT) cargo = models.ForeignKey(CargoMesa, on_delete=models.PROTECT)
mesa_diretora = models.ForeignKey(MesaDiretora, on_delete=models.PROTECT, null=True) mesa_diretora = models.ForeignKey(
MesaDiretora, on_delete=models.PROTECT, null=True)
class Meta: class Meta:
verbose_name = _('Ocupação de cargo na Mesa') verbose_name = _('Ocupação de cargo na Mesa')

1
sapl/templates/parlamentares/layouts.yaml

@ -6,6 +6,7 @@ CargoMesa:
Legislatura: Legislatura:
{% trans 'Legislatura' %}: {% trans 'Legislatura' %}:
- numero data_eleicao data_inicio data_fim - numero data_eleicao data_inicio data_fim
- observacao
Coligacao: Coligacao:
{% trans 'Coligação' %}: {% trans 'Coligação' %}:

Loading…
Cancel
Save