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.
 
 
 
 
 

289 lines
8.5 KiB

from datetime import date, datetime
from django.utils.translation import ugettext_lazy as _
from sapl.crud import build_crud
from django import forms
from django.views.generic.edit import FormMixin
from .models import (Anexada, Autor, Autoria, DocumentoAcessorio,
MateriaLegislativa, Numeracao, Orgao, Origem, Proposicao,
RegimeTramitacao, Relatoria, StatusTramitacao, TipoAutor,
TipoDocumento, TipoFimRelatoria, TipoMateriaLegislativa,
TipoProposicao, Tramitacao, UnidadeTramitacao)
from vanilla import GenericView
origem_crud = build_crud(
Origem, 'origem', [
[_('Origem'),
[('nome', 8), ('sigla', 4)]],
])
tipo_materia_crud = build_crud(
TipoMateriaLegislativa, 'tipo_materia_legislativa', [
[_('Tipo Matéria Legislativa'),
[('sigla', 4), ('descricao', 8)]],
])
regime_tramitacao_crud = build_crud(
RegimeTramitacao, 'regime_tramitacao', [
[_('Tipo de Documento'),
[('descricao', 12)]],
])
tipo_documento_crud = build_crud(
TipoDocumento, 'tipo_documento', [
[_('Regime Tramitação'),
[('descricao', 12)]],
])
tipo_fim_relatoria_crud = build_crud(
TipoFimRelatoria, 'fim_relatoria', [
[_('Tipo Fim de Relatoria'),
[('descricao', 12)]],
])
materia_legislativa_crud = build_crud(
MateriaLegislativa, '', [
[_('Identificação Básica'),
[('tipo', 4), ('numero', 4), ('ano', 4)],
[('data_apresentacao', 4),
('numero_protocolo', 4),
('tipo_apresentacao', 4)],
[('texto_original', 12)]],
[_('Outras Informações'),
[('apelido', 4), ('dias_prazo', 4), ('polemica', 4)],
[('objeto', 4), ('regime_tramitacao', 4), ('em_tramitacao', 4)],
[('data_fim_prazo', 4),
('data_publicacao', 4),
('complementar', 4)]],
[_('Origem Externa'),
[('tipo_origem_externa', 4),
('numero_origem_externa', 4),
('ano_origem_externa', 4)],
[('local_origem_externa', 6), ('data_origem_externa', 6)]],
[_('Dados Textuais'),
[('ementa', 12)],
[('indexacao', 12)],
[('observacao', 12)]],
])
Anexada_crud = build_crud(
Anexada, '', [
[_('Matéria Legislativa'),
[('tip_id_basica_FIXME', 4),
('num_ident_basica_FIXME', 4),
('ano_ident_basica_FIXME', 4)],
[('data_anexacao', 6), ('data_desanexacao', 6)]],
[_('Matéria Anexada'),
[('tip_id_basica_FIXME', 4),
('num_ident_basica_FIXME', 4),
('ano_ident_basica_FIXME', 4)],
[('data_anexacao', 6), ('data_desanexacao', 6)]],
])
tipo_autor_crud = build_crud(
TipoAutor, 'tipo_autor', [
[_('Tipo Autor'),
[('descricao', 12)]],
])
autor_crud = build_crud(
Autor, 'autor', [
[_('Autor'),
[('tipo', 3), ('nome', 9)],
[('username', 12)]],
])
autoria_crud = build_crud(
Autoria, '', [
[_('Autoria'),
[('tip_autor_FIXME', 4),
('nom_autor_FIXME', 4),
('primeiro_autor', 4)]],
])
documento_acessorio_crud = build_crud(
DocumentoAcessorio, '', [
[_('Documento Acessório'),
[('tipo', 6), ('nome', 6)],
[('data', 6), ('autor', 6)],
[('nom_arquivo_FIXME', 12)],
[('ementa', 12)],
[('txt_observacao_FIXME', 12)]],
])
numeracao_crud = build_crud(
Numeracao, '', [
[_('Numeração'),
[('tipo_materia', 6), ('numero_materia', 6)],
[('ano_materia', 6), ('data_materia', 6)]],
])
orgao_crud = build_crud(
Orgao, 'orgao', [
[_('Órgão'),
[('nome', 4),
('sigla', 2),
('telefone', 2),
('endereco', 2),
('unidade_deliberativa', 2)]],
])
relatoria_crud = build_crud(
Relatoria, '', [
[_('Relatoria'),
[('data_designacao_relator', 12)],
[('dados_FIXME', 12)],
[('data_destituicao_relator', 6), ('tipo_fim_relatoria', 6)]],
])
tipo_proposicao_crud = build_crud(
TipoProposicao, 'tipo_proposicao', [
[_('Tipo Proposição'),
[('descricao', 12)],
[('materia_ou_documento', 6), ('tipo_documento', 6)],
[('modelo', 12)]],
])
proposicao_crud = build_crud(
Proposicao, '', [
[_('Proposição'),
[('tipo', 4), ('dat_criacao_FIXME', 4), ('data_recebimento', 4)],
[('descricao_FIXME', 12)],
[('tip_id_basica_FIXME', 4),
('num_ident_basica_FIXME', 4),
('ano_ident_basica_FIXME', 4)],
[('nom_arquivo_FIXME', 6), ('modelo_FIXME', 6)]],
])
status_tramitacao_crud = build_crud(
StatusTramitacao, 'status_tramitacao', [
[_('Status Tramitação'),
[('indicador', 3),
('sigla', 2),
('descricao', 7)]],
])
unidade_tramitacao_crud = build_crud(
UnidadeTramitacao, 'unidade_tramitacao', [
[_('Unidade Tramitação'),
[('orgao', 12)],
[('comissao', 12)],
[('parlamentar', 12)]],
])
tramitacao_crud = build_crud(
Tramitacao, '', [
[_('Tramitação'),
[('cod_ult_tram_dest_FIXME', 6), ('unidade_tramitacao_local', 6)],
[('status', 4), ('turno', 4), ('urgente', 4)],
[('unidade_tramitacao_destino', 4),
('data_encaminhamento', 4),
('data_fim_prazo', 4)],
[('texto', 12)]],
])
def get_tipos_materia():
return [('', 'Selecione')] \
+ [(t.id, t.sigla + ' - ' + t.descricao)
for t in TipoMateriaLegislativa.objects.all()]
def get_range_anos():
return [('', 'Selecione')] \
+ [(year, year) for year in range(date.today().year, 1960, -1)]
def get_regimes_tramitacao():
return [('1', 'Normal'),
('3', 'Urgência'),
('4', 'Urgência Especial')]
class HorizontalRadioRenderer(forms.RadioSelect.renderer):
def render(self):
return mark_safe(u' '.join([u'%s ' % w for w in self]))
class FormularioSimplificadoForm(forms.Form):
tipo_materia = forms.ChoiceField(required=True,
label='Tipo Matéria',
choices=get_tipos_materia(),
widget=forms.Select(
attrs={'class': 'selector'}))
numero_materia = forms.CharField(
label='Núm. Matéria', required=True)
ano_materia = forms.ChoiceField(required=True,
label='Ano',
choices=get_range_anos(),
widget=forms.Select(
attrs={'class': 'selector'}))
data_materia = forms.DateField(label='Data Apresentação',
required=True,
widget=forms.TextInput(
attrs={'class': 'dateinput'}))
numero_protocolo = forms.CharField(
label='Número de Protocolo', required=True)
regime_tramitacao = forms.ChoiceField(required=False,
label='Regime de Tramitação',
choices=get_regimes_tramitacao(),
widget=forms.Select(
attrs={'class': 'selector'}))
em_tramitacao = forms.TypedChoiceField(
coerce=lambda x: x == 'Sim',
choices=((True, 'Sim'), (False, 'Não')),
widget=forms.RadioSelect
)
ementa = forms.CharField(label='Ementa', required=True, widget=forms.Textarea)
texto_original = forms.ChoiceField(required=False,
label='Regime de Tramitação',
choices=(('1', 'Arquivo'), ('2', 'Proposição')),
widget=forms.RadioSelect)
arquivo = forms.FileField(required=False, label='Arquivo')
proposicao = forms.CharField(required=False, label='Proposição',
widget=forms.TextInput(attrs={'disabled':'True'}))
# form.fields['otherFields'].widget.attrs['enabled'] = True
class FormularioSimplificadoView(FormMixin, GenericView):
template_name = "materia/formulario_simplificado.html"
def get(self, request, *args, **kwargs):
form = FormularioSimplificadoForm()
return self.render_to_response({'form': form})