Browse Source

add órgão no cadastro de normas

pull/3357/head
Leandro Roberto 5 years ago
parent
commit
b112623c6c
  1. 46
      sapl/norma/forms.py
  2. 3
      sapl/norma/models.py
  3. 8
      sapl/norma/views.py
  4. 4
      sapl/templates/norma/layouts.yaml
  5. 7
      sapl/templates/norma/normajuridica_form.html

46
sapl/norma/forms.py

@ -1,8 +1,6 @@
import django_filters
import logging
from crispy_forms.layout import Fieldset, Layout
from django import forms
from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.db import models
@ -10,6 +8,7 @@ from django.db.models import Q
from django.forms import ModelChoiceField, ModelForm, widgets
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
import django_filters
from sapl.base.models import Autor, TipoAutor
from sapl.crispy_layout_mixin import form_actions, SaplFormHelper, to_row
@ -85,7 +84,7 @@ class NormaFilterSet(django_filters.FilterSet):
class Meta(FilterOverridesMetaMixin):
model = NormaJuridica
fields = ['tipo', 'numero', 'ano', 'data', 'data_vigencia',
fields = ['orgao', 'tipo', 'numero', 'ano', 'data', 'data_vigencia',
'data_publicacao', 'ementa', 'assuntos']
def __init__(self, *args, **kwargs):
@ -94,7 +93,7 @@ class NormaFilterSet(django_filters.FilterSet):
row1 = to_row([('tipo', 4), ('numero', 4), ('ano', 4)])
row2 = to_row([('data', 6), ('data_publicacao', 6)])
row3 = to_row([('ementa', 6), ('assuntos', 6)])
row4 = to_row([('data_vigencia', 12)])
row4 = to_row([('data_vigencia', 6), ('orgao', 6), ])
row5 = to_row([('o', 6), ('indexacao', 6)])
self.form.helper = SaplFormHelper()
@ -143,6 +142,7 @@ class NormaJuridicaForm(FileFieldCheckMixin, ModelForm):
fields = ['tipo',
'numero',
'ano',
'orgao',
'data',
'esfera_federacao',
'complemento',
@ -159,14 +159,14 @@ class NormaJuridicaForm(FileFieldCheckMixin, ModelForm):
'observacao',
'texto_integral',
'assuntos',
'user',
'user',
'ip',
'ultima_edicao']
widgets = {'assuntos': widgets.CheckboxSelectMultiple,
'user': forms.HiddenInput(),
'ip': forms.HiddenInput(),
'ultima_edicao': forms.HiddenInput()}
'user': forms.HiddenInput(),
'ip': forms.HiddenInput(),
'ultima_edicao': forms.HiddenInput()}
def clean(self):
@ -184,14 +184,18 @@ class NormaJuridicaForm(FileFieldCheckMixin, ModelForm):
'Número de norma não pode conter somente letras')
if self.instance.numero != cleaned_data['numero']:
norma = NormaJuridica.objects.filter(ano=cleaned_data['ano'],
numero=cleaned_data['numero'],
tipo=cleaned_data['tipo']).exists()
params = {
'ano': cleaned_data['ano'],
'numero': cleaned_data['numero'],
'tipo': cleaned_data['tipo'],
}
params['orgao'] = cleaned_data['orgao']
norma = NormaJuridica.objects.filter(**params).exists()
if norma:
self.logger.warning("Já existe uma norma de mesmo Tipo ({}), Ano ({}) "
"e Número ({}) no sistema."
.format(cleaned_data['tipo'], cleaned_data['ano'], cleaned_data['numero']))
raise ValidationError("Já existe uma norma de mesmo Tipo, Ano "
"e Número ({}) no sistema."
.format(cleaned_data['tipo'], cleaned_data['ano'], cleaned_data['numero']))
raise ValidationError("Já existe uma norma de mesmo Tipo, Ano, Órgão "
"e Número no sistema")
if (cleaned_data['tipo_materia'] and
cleaned_data['numero_materia'] and
@ -294,9 +298,9 @@ class AutoriaNormaForm(ModelForm):
class AnexoNormaJuridicaForm(FileFieldCheckMixin, ModelForm):
logger = logging.getLogger(__name__)
anexo_arquivo = forms.FileField(
required=True,
label="Arquivo Anexo"
@ -311,10 +315,10 @@ class AnexoNormaJuridicaForm(FileFieldCheckMixin, ModelForm):
def clean(self):
cleaned_data = super(AnexoNormaJuridicaForm, self).clean()
if not self.is_valid():
return cleaned_data
anexo_arquivo = self.cleaned_data.get('anexo_arquivo', False)
if anexo_arquivo:
@ -454,7 +458,9 @@ class NormaPesquisaSimplesForm(forms.Form):
raise ValidationError(_('Caso pesquise por data, os campos de Data Inicial e '
'Data Final devem ser preenchidos obrigatoriamente'))
elif data_inicial > data_final:
self.logger.error("Data Final ({}) menor que a Data Inicial ({}).".format(data_final, data_inicial))
raise ValidationError(_('A Data Final não pode ser menor que a Data Inicial'))
self.logger.error("Data Final ({}) menor que a Data Inicial ({}).".format(
data_final, data_inicial))
raise ValidationError(
_('A Data Final não pode ser menor que a Data Inicial'))
return cleaned_data

3
sapl/norma/models.py

@ -250,8 +250,9 @@ class NormaJuridica(models.Model):
if numero_norma.isnumeric():
numero_norma = '{0:,}'.format(int(self.numero)).replace(',', '.')
return _('%(tipo)s%(numero)s, de %(data)s') % {
return _('%(tipo)s%(orgao_sigla)s%(numero)s, de %(data)s') % {
'tipo': self.tipo,
'orgao_sigla': f'-{self.orgao.sigla}' if self.orgao else '',
'numero': numero_norma,
'data': defaultfilters.date(self.data, "d \d\e F \d\e Y").lower()}

8
sapl/norma/views.py

@ -26,6 +26,7 @@ from sapl.base.models import AppConfig
from sapl.compilacao.views import IntegracaoTaView
from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux,
MasterDetailCrud, make_pagination)
from sapl.materia.models import Orgao
from sapl.utils import show_results_filter_set, get_client_ip,\
sapl_as_sapn
@ -455,9 +456,14 @@ def recuperar_norma(request):
def recuperar_numero_norma(request):
tipo = TipoNormaJuridica.objects.get(pk=request.GET['tipo'])
ano = request.GET.get('ano', '')
orgao = request.GET.get('orgao', '')
param = {'tipo': tipo,
'ano': ano if ano else timezone.now().year
'ano': ano if ano else timezone.now().year,
}
if orgao:
param['orgao'] = Orgao.objects.get(pk=orgao)
norma = NormaJuridica.objects.filter(**param).order_by(
'tipo', 'ano', 'numero').values_list('numero', flat=True)
if norma:

4
sapl/templates/norma/layouts.yaml

@ -14,7 +14,7 @@ TipoNormaJuridica:
NormaJuridica:
{% trans 'Identificação Básica' %}:
- tipo numero ano
- orgao tipo:5 numero:2 ano:2
- data esfera_federacao complemento
- materia
- data_publicacao veiculo_publicacao data_vigencia pagina_inicio_publicacao pagina_fim_publicacao
@ -32,7 +32,7 @@ AnexoNormaJuridica:
NormaJuridicaCreate:
{% trans 'Identificação Básica' %}:
- tipo ano numero
- orgao tipo:5 numero:2 ano:2
- data esfera_federacao complemento
- tipo_materia numero_materia ano_materia
- data_publicacao veiculo_publicacao data_vigencia pagina_inicio_publicacao pagina_fim_publicacao

7
sapl/templates/norma/normajuridica_form.html

@ -37,16 +37,17 @@
function recuperar_norma() {
var tipo = $("#id_tipo").val();
var ano = $("#id_ano").val();
var orgao = $("#id_orgao").val();
if (tipo) {
$.get("/norma/recuperar-numero-norma", { tipo: tipo, ano: ano },
$.get("/norma/recuperar-numero-norma", { tipo: tipo, ano: ano , orgao: orgao },
(data, status) => {
$("#id_numero").val(data.numero);
$("#id_ano").val(data.ano);
});
}
}
var fields = ["#id_tipo", "#id_ano"];
var fields = ["#id_tipo", "#id_ano", "#id_orgao"];
for (i = 0; i < fields.length; i++) {
$(fields[i]).change(recuperar_norma);
}
@ -116,7 +117,7 @@
let ano = $("select#id_ano.select").val();
let data_apresentacao = $("input#id_data.dateinput").val();
let ano_apresentacao = data_apresentacao.substr(data_apresentacao.length - 4);
if(ano && ano_apresentacao && ano_apresentacao != ano){
$('#fundo_modal').fadeIn();
}

Loading…
Cancel
Save