Sistema de Apoio ao Processo Legislativo
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

128 lines
4.2 KiB

from datetime import datetime
from re import sub
from django.core.exceptions import ObjectDoesNotExist
from django.utils.html import strip_tags
from django.utils.translation import ugettext_lazy as _
from django.views.generic.edit import FormMixin
from vanilla.views import GenericView
from compilacao.views import IntegracaoTaView
from crud import build_crud
from materia.models import MateriaLegislativa, TipoMateriaLegislativa
from .forms import NormaJuridicaForm
from .models import (AssuntoNorma, LegislacaoCitada, NormaJuridica,
TipoNormaJuridica)
assunto_norma_crud = build_crud(
AssuntoNorma, 'assunto_norma_juridica', [
[_('Assunto Norma Jurídica'),
[('assunto', 6), ('descricao', 6)]],
])
tipo_norma_crud = build_crud(
TipoNormaJuridica, 'tipo_norma_juridica', [
[_('Tipo Norma Jurídica'),
[('descricao', 4),
('sigla', 4),
('equivalente_lexml', 4)]],
])
norma_crud = build_crud(
NormaJuridica, '', [
[_('Identificação Básica'),
[('tipo', 4), ('numero', 4), ('ano', 4)],
[('data', 4), ('esfera_federacao', 4), ('complemento', 4)],
[('tip_id_basica_FIXME', 4),
('num_ident_basica_FIXME', 4),
('ano_ident_basica_FIXME', 4)],
[('data_publicacao', 3),
('veiculo_publicacao', 3),
('pagina_inicio_publicacao', 3),
('pagina_fim_publicacao', 3)],
[('file_FIXME', 6), ('tip_situacao_norma_FIXME', 6)],
[('ementa', 12)],
[('indexacao', 12)],
[('observacao', 12)]],
])
norma_temporario_crud = build_crud(
NormaJuridica, 'normajuridica', [
[_('Identificação Básica'),
[('tipo', 5), ('numero', 2), ('ano', 2), ('data', 3)],
[('ementa', 12)]],
])
legislacao_citada_crud = build_crud(
LegislacaoCitada, '', [
[_('Legislação Citada'),
[('tip_norma_FIXME', 4),
('num_norma_FIXME', 4),
('ano_norma_FIXME', 4)],
[('disposicoes', 3), ('parte', 3), ('livro', 3), ('titulo', 3)],
[('capitulo', 3), ('secao', 3), ('subsecao', 3), ('artigo', 3)],
[('paragrafo', 3), ('inciso', 3), ('alinea', 3), ('item', 3)]],
])
class NormaIncluirView(FormMixin, GenericView):
template_name = "norma/normajuridica_incluir.html"
def get_success_url(self):
return '/norma/'
def get(self, request, *args, **kwargs):
form = NormaJuridicaForm()
return self.render_to_response({'form': form})
def post(self, request, *args, **kwargs):
form = NormaJuridicaForm(request.POST or None)
if form.is_valid():
norma = form.save(commit=False)
if form.cleaned_data['tipo_materia']:
tipo = TipoMateriaLegislativa.objects.get(
id=form.cleaned_data['tipo_materia'])
try:
materia = MateriaLegislativa.objects.get(
tipo=tipo,
numero=form.cleaned_data['numero'],
ano=form.cleaned_data['ano'])
except ObjectDoesNotExist:
return self.render_to_response(
{'form': form,
'error': 'Matéria adicionada não existe!'})
else:
norma.materia = materia
if form.cleaned_data['indexacao']:
norma.indexacao = sub(
' ', ' ', strip_tags(form.cleaned_data['indexacao']))
if form.cleaned_data['observacao']:
norma.observacao = sub(
' ', ' ', strip_tags(form.cleaned_data['observacao']))
if 'texto_integral' in request.FILES:
norma.texto_integral = request.FILES['texto_integral']
norma.ementa = sub(
' ', ' ', strip_tags(form.cleaned_data['ementa']))
norma.timestamp = datetime.now()
norma.save()
return self.form_valid(form)
else:
return self.form_invalid(form)
class NormaTaView(IntegracaoTaView):
model = NormaJuridica
model_type_foreignkey = TipoNormaJuridica