mirror of https://github.com/interlegis/sapl.git
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.
242 lines
8.2 KiB
242 lines
8.2 KiB
from datetime import datetime
|
|
|
|
from django import forms
|
|
from django.core.urlresolvers import reverse
|
|
from django.utils.safestring import mark_safe
|
|
from django.utils.translation import ugettext_lazy as _
|
|
from django.views.generic.edit import FormMixin
|
|
from vanilla import GenericView
|
|
|
|
from materia.models import TipoMateriaLegislativa
|
|
from sapl.crud import build_crud
|
|
|
|
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)]],
|
|
|
|
[_('Assuntos (Classificação) [+] '),
|
|
[('assunto_norma_FIXME', 12)],
|
|
[('assunto_norma_FIXME', 12)],
|
|
[('assunto_norma_FIXME', 12)]],
|
|
])
|
|
|
|
norma_temporario_para_compilacao_crud = build_crud(
|
|
NormaJuridica, 'norma', [
|
|
|
|
[_('Identificação Básica'),
|
|
[('tipo', 4), ('numero', 4), ('ano', 4)],
|
|
[('data', 4), ('esfera_federacao', 4)],
|
|
[('data_publicacao', 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)]],
|
|
])
|
|
|
|
|
|
def get_tipos_norma():
|
|
return [('', 'Selecione')] \
|
|
+ [(n.id, n.descricao)
|
|
for n in TipoNormaJuridica.objects.all()]
|
|
|
|
|
|
def get_esferas():
|
|
return [('E', 'Estadual'),
|
|
('F', 'Federal'),
|
|
('M', 'Municipal')]
|
|
|
|
|
|
def get_tipos_materia():
|
|
return [('', 'Selecione')] \
|
|
+ [(t.id, t.sigla + ' - ' + t.descricao)
|
|
for t in TipoMateriaLegislativa.objects.all()]
|
|
|
|
|
|
class HorizontalRadioRenderer(forms.RadioSelect.renderer):
|
|
|
|
def render(self):
|
|
return mark_safe(u' '.join([u'%s ' % w for w in self]))
|
|
|
|
|
|
class NormaJuridicaForm(forms.Form):
|
|
|
|
tipo = forms.ChoiceField(required=True,
|
|
label='Tipo',
|
|
choices=get_tipos_norma(),
|
|
widget=forms.Select(
|
|
attrs={'class': 'selector'}))
|
|
|
|
numero = forms.CharField(label='Número', required=True)
|
|
|
|
ano = forms.CharField(label='Ano', required=True)
|
|
|
|
data = forms.DateField(label='Data',
|
|
required=True,
|
|
input_formats=['%d/%m/%Y'],
|
|
widget=forms.TextInput(
|
|
attrs={'class': 'dateinput'}))
|
|
|
|
esfera = forms.ChoiceField(required=True,
|
|
label='Tipo',
|
|
choices=get_esferas(),
|
|
widget=forms.Select(
|
|
attrs={'class': 'selector'}))
|
|
|
|
complementar = forms.ChoiceField(required=False,
|
|
choices=[('1', 'Sim'), ('0', 'Não')],
|
|
widget=forms.RadioSelect(
|
|
renderer=HorizontalRadioRenderer),
|
|
label='Complementar')
|
|
|
|
materia = forms.ChoiceField(required=False,
|
|
label='Materia Legislativa',
|
|
choices=get_tipos_materia(),
|
|
widget=forms.Select(
|
|
attrs={'class': 'selector'}))
|
|
|
|
numero_materia = forms.CharField(label='Número', required=False)
|
|
|
|
ano_materia = forms.CharField(label='Ano', required=False)
|
|
|
|
data_publicacao = forms.DateField(label='Data Publicação',
|
|
required=False,
|
|
input_formats=['%d/%m/%Y'],
|
|
widget=forms.TextInput(
|
|
attrs={'class': 'dateinput'}))
|
|
|
|
veiculo_publicacao = forms.CharField(
|
|
label='Veiculo Publicação', required=False)
|
|
|
|
pg_inicio = forms.CharField(label='Pg. Início', required=False)
|
|
|
|
pg_fim = forms.CharField(label='Pg. Fim', required=False)
|
|
|
|
# texto = form.FileUpload(label='Texto', required=False) # TODO: implement
|
|
# file upload
|
|
|
|
data_fim_vigencia = forms.DateField(label='Data Fim Vigência',
|
|
required=False,
|
|
input_formats=['%d/%m/%Y'],
|
|
widget=forms.TextInput(
|
|
attrs={'class': 'dateinput'}))
|
|
|
|
ementa = forms.CharField(
|
|
label='Ementa', required=True, widget=forms.Textarea)
|
|
|
|
indexacao = forms.CharField(
|
|
label='Indexação', required=False, widget=forms.Textarea)
|
|
|
|
observacao = forms.CharField(
|
|
label='Observação', required=False, widget=forms.Textarea)
|
|
|
|
|
|
class NormaIncluirView(FormMixin, GenericView):
|
|
template_name = "norma/normajuridica_incluir.html"
|
|
|
|
def get_success_url(self):
|
|
return reverse('norma-incluir')
|
|
|
|
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 = NormaJuridica()
|
|
norma.tipo = TipoNormaJuridica.objects.get(
|
|
id=form.cleaned_data['tipo'])
|
|
norma.numero = form.cleaned_data['numero']
|
|
norma.ano = form.cleaned_data['ano']
|
|
norma.data = form.cleaned_data['data']
|
|
norma.esfera = form.cleaned_data['esfera']
|
|
norma.complementar = form.cleaned_data['complementar']
|
|
if form.cleaned_data['complementar']:
|
|
norma.complementar = TipoMateriaLegislativa.objects.get(
|
|
id=form.cleaned_data['complementar'])
|
|
|
|
if form.cleaned_data['materia']:
|
|
norma.materia = form.cleaned_data['materia']
|
|
|
|
if form.cleaned_data['numero_materia']:
|
|
norma.numero_materia = form.cleaned_data['numero_materia']
|
|
|
|
if form.cleaned_data['ano_materia']:
|
|
norma.ano_materia = form.cleaned_data['ano_materia']
|
|
|
|
if form.cleaned_data['data_publicacao']:
|
|
norma.data_publicacao = form.cleaned_data['data_publicacao']
|
|
|
|
if form.cleaned_data['veiculo_publicacao']:
|
|
norma.veiculo_publicacao = form.cleaned_data[
|
|
'veiculo_publicacao']
|
|
|
|
if form.cleaned_data['pg_inicio']:
|
|
norma.pg_inicio = form.cleaned_data['pg_inicio']
|
|
|
|
if form.cleaned_data['pg_fim']:
|
|
norma.pg_fim = form.cleaned_data['pg_fim']
|
|
|
|
if form.cleaned_data['data_fim_vigencia']:
|
|
norma.data_fim_vigencia = form.cleaned_data[
|
|
'data_fim_vigencia']
|
|
|
|
norma.ementa = form.cleaned_data['ementa']
|
|
|
|
norma.indexacao = form.cleaned_data['indexacao']
|
|
|
|
norma.observacao = form.cleaned_data['observacao']
|
|
|
|
norma.timestamp = datetime.now()
|
|
|
|
norma.save()
|
|
|
|
return self.render_to_response({'form': form})
|
|
else:
|
|
return self.form_invalid(form)
|
|
|