Browse Source

Fix #2492 (#2500)

* Fix #2492

Co-authored-by: Cesar Carvalho <cesaraugc@gmail.com>

* Melhora mensagens de erro

Co-authored-by: Cesar Carvalho <cesaraugc@gmail.com>

* Adiciona parâmetro em AppConfig
pull/2527/head
Victor Fabre 6 years ago
committed by Edward
parent
commit
8b5b515896
  1. 3
      sapl/base/forms.py
  2. 20
      sapl/base/migrations/0030_appconfig_escolher_numero_materia_proposicao.py
  3. 16
      sapl/base/migrations/0032_merge_20190219_0941.py
  4. 4
      sapl/base/models.py
  5. 43
      sapl/materia/forms.py
  6. 20
      sapl/materia/migrations/0041_proposicao_numero_materia_futuro.py
  7. 3
      sapl/materia/models.py
  8. 8
      sapl/materia/views.py
  9. 3
      sapl/templates/base/layouts.yaml

3
sapl/base/forms.py

@ -1185,7 +1185,8 @@ class ConfiguracoesAppForm(ModelForm):
'mostrar_brasao_painel',
'receber_recibo_proposicao',
'assinatura_ata',
'estatisticas_acesso_normas']
'estatisticas_acesso_normas',
'escolher_numero_materia_proposicao']
def __init__(self, *args, **kwargs):
super(ConfiguracoesAppForm, self).__init__(*args, **kwargs)

20
sapl/base/migrations/0030_appconfig_escolher_numero_materia_proposicao.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-02-19 11:14
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('base', '0029_remove_appconfig_relatorios_atos'),
]
operations = [
migrations.AddField(
model_name='appconfig',
name='escolher_numero_materia_proposicao',
field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Indicar número da matéria a ser gerada na proposição?'),
),
]

16
sapl/base/migrations/0032_merge_20190219_0941.py

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-02-19 12:41
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('base', '0031_auto_20190218_1109'),
('base', '0030_appconfig_escolher_numero_materia_proposicao'),
]
operations = [
]

4
sapl/base/models.py

@ -164,6 +164,10 @@ class AppConfig(models.Model):
verbose_name=_('Informar data e hora de protocolo?'),
choices=YES_NO_CHOICES, default=False)
escolher_numero_materia_proposicao = models.BooleanField(
verbose_name=_('Indicar número da matéria a ser gerada na proposição?'),
choices=YES_NO_CHOICES, default=False)
class Meta:
verbose_name = _('Configurações da Aplicação')
verbose_name_plural = _('Configurações da Aplicação')

43
sapl/materia/forms.py

@ -1368,6 +1368,9 @@ class ProposicaoForm(forms.ModelForm):
widget=widgets.HiddenInput(),
required=False)
numero_materia_futuro = forms.CharField(
label='Número (Opcional)', required=False)
class Meta:
model = Proposicao
fields = ['tipo',
@ -1381,7 +1384,8 @@ class ProposicaoForm(forms.ModelForm):
'numero_materia',
'ano_materia',
'tipo_texto',
'hash_code']
'hash_code',
'numero_materia_futuro']
widgets = {
'descricao': widgets.Textarea(attrs={'rows': 4}),
@ -1414,6 +1418,12 @@ class ProposicaoForm(forms.ModelForm):
]
if sapl.base.models.AppConfig.objects.last().escolher_numero_materia_proposicao:
fields.append(to_column(('numero_materia_futuro', 12)),)
else:
if 'numero_materia_futuro' in self._meta.fields:
self._meta.fields.remove('numero_materia_futuro')
if self.texto_articulado_proposicao:
fields.append(
to_column((InlineRadios('tipo_texto'), 5)),)
@ -1489,6 +1499,15 @@ class ProposicaoForm(forms.ModelForm):
tm, am, nm = (cd.get('tipo_materia', ''),
cd.get('ano_materia', ''),
cd.get('numero_materia', ''))
if cd['numero_materia_futuro'] and \
'tipo' in cd and \
MateriaLegislativa.objects.filter(tipo=cd['tipo'].tipo_conteudo_related,
ano=timezone.now().year,
numero=cd['numero_materia_futuro']):
raise ValidationError(_("A matéria {} {}/{} já existe.".format(cd['tipo'].tipo_conteudo_related.descricao,
cd['numero_materia_futuro'],
timezone.now().year)))
if tm and am and nm:
try:
@ -1654,13 +1673,16 @@ class ConfirmarProposicaoForm(ProposicaoForm):
'descricao',
'observacao',
'gerar_protocolo',
'numero_de_paginas'
'numero_de_paginas',
'numero_materia_futuro'
]
widgets = {
'descricao': widgets.Textarea(
attrs={'readonly': 'readonly', 'rows': 4}),
'data_envio': widgets.DateTimeInput(
attrs={'readonly': 'readonly'}),
'numero_materia_futuro': widgets.TextInput(
attrs={'readonly': 'readonly', 'rows': 1}),
}
@ -1705,9 +1727,10 @@ class ConfirmarProposicaoForm(ProposicaoForm):
_('Dados Básicos'),
to_row(
[
('tipo_readonly', 4),
('tipo_readonly', 3),
('data_envio', 3),
('autor_readonly', 5),
('numero_materia_futuro',3),
('autor_readonly', 3),
('descricao', 12),
('observacao', 12)
]
@ -1767,6 +1790,8 @@ class ConfirmarProposicaoForm(ProposicaoForm):
self.fields['tipo_readonly'].initial = self.instance.tipo.descricao
self.fields['autor_readonly'].initial = str(self.instance.autor)
if self.instance.numero_materia_futuro:
self.fields['numero_materia_futuro'].initial = self.instance.numero_materia_futuro
if self.instance.materia_de_vinculo:
self.fields[
@ -1896,8 +1921,14 @@ class ConfirmarProposicaoForm(ProposicaoForm):
if numeracao is None:
numero['numero__max'] = 0
max_numero = numero['numero__max'] + \
1 if numero['numero__max'] else 1
if cd['numero_materia_futuro'] and not MateriaLegislativa.objects.filter(tipo=tipo,
ano=ano,
numero=cd['numero_materia_futuro']):
max_numero = cd['numero_materia_futuro']
else:
max_numero = numero['numero__max'] + 1 if numero['numero__max'] else 1
# dados básicos
materia = MateriaLegislativa()

20
sapl/materia/migrations/0041_proposicao_numero_materia_futuro.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-02-15 11:10
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('materia', '0040_auto_20190211_1602'),
]
operations = [
migrations.AddField(
model_name='proposicao',
name='numero_materia_futuro',
field=models.PositiveIntegerField(blank=True, null=True, verbose_name='Número Matéria'),
),
]

3
sapl/materia/models.py

@ -687,6 +687,9 @@ class Proposicao(models.Model):
numero_proposicao = models.PositiveIntegerField(
blank=True, null=True, verbose_name=_('Número'))
numero_materia_futuro = models.PositiveIntegerField(
blank=True, null=True, verbose_name=_('Número Matéria'))
hash_code = models.CharField(verbose_name=_('Código do Documento'),
max_length=200,
blank=True)

8
sapl/materia/views.py

@ -812,8 +812,12 @@ class ProposicaoCrud(Crud):
self.logger.debug("user=" + username + ". Tentando obter número do objeto MateriaLegislativa com "
"atributos tipo={} e ano={}."
.format(p.tipo.tipo_conteudo_related, p.ano))
numero = MateriaLegislativa.objects.filter(tipo=p.tipo.tipo_conteudo_related,
ano=p.ano).last().numero + 1
if p.numero_materia_futuro:
numero = p.numero_materia_futuro
else:
numero = MateriaLegislativa.objects.filter(tipo=p.tipo.tipo_conteudo_related,
ano=p.ano).last().numero + 1
messages.success(request, _(
'%s : nº %s de %s <br>Atenção! Este número é apenas um provável '
'número que pode não corresponder com a realidade'

3
sapl/templates/base/layouts.yaml

@ -18,7 +18,8 @@ AppConfig:
- esfera_federacao
{% trans 'Proposições e Protocolo' %}:
- sequencia_numeracao proposicao_incorporacao_obrigatoria receber_recibo_proposicao protocolo_manual
- sequencia_numeracao proposicao_incorporacao_obrigatoria receber_recibo_proposicao
- escolher_numero_materia_proposicao protocolo_manual
{% trans 'Textos Articulados' %}:
- texto_articulado_proposicao texto_articulado_materia texto_articulado_norma

Loading…
Cancel
Save