diff --git a/base/forms.py b/base/forms.py
new file mode 100644
index 000000000..598221b99
--- /dev/null
+++ b/base/forms.py
@@ -0,0 +1,146 @@
+from crispy_forms.helper import FormHelper
+from crispy_forms.layout import HTML, Fieldset, Layout
+from django import forms
+from django.forms import ModelForm
+
+import sapl
+from sapl.layout import form_actions
+
+from .models import CasaLegislativa
+
+ESTADOS = {"": "",
+ "AC": "ACRE",
+ "AL": "ALAGOAS",
+ "AM": "AMAZONAS",
+ "AP": "AMAPÁ",
+ "BA": "BAHIA",
+ "CE": "CEARÁ",
+ "DF": "DISTRITO FEDERAL",
+ "ES": "ESPíRITO SANTO",
+ "GO": "GOIÁS",
+ "MA": "MARANHÃO",
+ "MG": "MINAS GERAIS",
+ "MS": "MATO GROSSO DO SUL",
+ "MT": "MATO GROSSO",
+ "PA": "PARÁ",
+ "PB": "PARAÍBA",
+ "PE": "PERNAMBUCO",
+ "PI": "PIAUÍ",
+ "PR": "PARANÁ",
+ "RJ": "RIO DE JANEIRO",
+ "RN": "RIO GRANDE DO NORTE",
+ "RO": "RONDÔNIA",
+ "RR": "RORAIMA",
+ "RS": "RIO GRANDE DO SUL",
+ "SC": "SANTA CATARINA",
+ "SE": "SERGIPE",
+ "SP": "SÃO PAULO",
+ "TO": "TOCANTINS"}
+
+
+class CasaLegislativaTabelaAuxForm(ModelForm):
+
+ uf = forms.ChoiceField(required=True,
+ label='UF',
+ choices=[(uf, uf) for uf in ESTADOS.keys()],
+ widget=forms.Select(
+ attrs={'class': 'selector'}))
+
+ informacao_geral = forms.CharField(widget=forms.Textarea,
+ label='Informação Geral',
+ required=False)
+
+ telefone = forms.CharField(label='Telefone',
+ required=False,
+ widget=forms.TextInput(
+ attrs={'class': 'telefone'}))
+
+ logotipo = forms.ImageField(label='Logotipo',
+ required=False,
+ widget=forms.FileInput
+ )
+
+ cep = forms.CharField(label='Cep',
+ required=True,
+ widget=forms.TextInput(
+ attrs={'class': 'cep'}))
+
+ fax = forms.CharField(label='Fax',
+ required=False,
+ widget=forms.TextInput(
+ attrs={'class': 'telefone'}))
+
+ class Meta:
+
+ model = CasaLegislativa
+ fields = ['codigo',
+ 'nome',
+ 'sigla',
+ 'endereco',
+ 'cep',
+ 'municipio',
+ 'uf',
+ 'telefone',
+ 'fax',
+ 'logotipo',
+ 'endereco_web',
+ 'email',
+ 'informacao_geral']
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('codigo', 2),
+ ('nome', 5),
+ ('sigla', 5)])
+
+ row2 = sapl.layout.to_row(
+ [('endereco', 8),
+ ('cep', 4)])
+
+ row3 = sapl.layout.to_row(
+ [('municipio', 10),
+ ('uf', 2)])
+
+ row4 = sapl.layout.to_row(
+ [('telefone', 6),
+ ('fax', 6)])
+
+ row5 = sapl.layout.to_row(
+ [('logotipo', 12)])
+
+ row6 = sapl.layout.to_row(
+ [('endereco_web', 12)])
+
+ row7 = sapl.layout.to_row(
+ [('email', 12)])
+
+ row8 = sapl.layout.to_row(
+ [('informacao_geral', 12)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset(
+ 'Dados Básicos',
+ row1,
+ row2,
+ row3,
+ row4,
+ row5,
+ HTML("""{% if form.logotipo.value %}
+
+
+
+ {% endif %}""", ),
+ row6,
+ row7,
+ row8,
+ form_actions()
+ )
+ )
+ super(CasaLegislativaTabelaAuxForm, self).__init__(*args, **kwargs)
diff --git a/base/views.py b/base/views.py
index 5f7247d09..ac935b3e2 100644
--- a/base/views.py
+++ b/base/views.py
@@ -1,19 +1,13 @@
import os
from functools import lru_cache
-from crispy_forms.helper import FormHelper
-from crispy_forms.layout import HTML, Fieldset, Layout
-from django import forms
from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse
-from django.forms import ModelForm
from django.views.generic.base import TemplateView
from django.views.generic.edit import FormMixin
from vanilla import GenericView
-import sapl
-from sapl.layout import form_actions
-
+from .forms import CasaLegislativaTabelaAuxForm
from .models import CasaLegislativa
@@ -29,144 +23,6 @@ class HelpView(TemplateView):
return ['ajuda/%s.html' % self.kwargs['topic']]
-ESTADOS = {"": "",
- "AC": "ACRE",
- "AL": "ALAGOAS",
- "AM": "AMAZONAS",
- "AP": "AMAPÁ",
- "BA": "BAHIA",
- "CE": "CEARÁ",
- "DF": "DISTRITO FEDERAL",
- "ES": "ESPíRITO SANTO",
- "GO": "GOIÁS",
- "MA": "MARANHÃO",
- "MG": "MINAS GERAIS",
- "MS": "MATO GROSSO DO SUL",
- "MT": "MATO GROSSO",
- "PA": "PARÁ",
- "PB": "PARAÍBA",
- "PE": "PERNAMBUCO",
- "PI": "PIAUÍ",
- "PR": "PARANÁ",
- "RJ": "RIO DE JANEIRO",
- "RN": "RIO GRANDE DO NORTE",
- "RO": "RONDÔNIA",
- "RR": "RORAIMA",
- "RS": "RIO GRANDE DO SUL",
- "SC": "SANTA CATARINA",
- "SE": "SERGIPE",
- "SP": "SÃO PAULO",
- "TO": "TOCANTINS"}
-
-
-class CasaLegislativaTabelaAuxForm(ModelForm):
-
- uf = forms.ChoiceField(required=True,
- label='UF',
- choices=[(uf, uf) for uf in ESTADOS.keys()],
- widget=forms.Select(
- attrs={'class': 'selector'}))
-
- informacao_geral = forms.CharField(widget=forms.Textarea,
- label='Informação Geral',
- required=False)
-
- telefone = forms.CharField(label='Telefone',
- required=False,
- widget=forms.TextInput(
- attrs={'class': 'telefone'}))
-
- logotipo = forms.ImageField(label='Logotipo',
- required=False,
- widget=forms.FileInput
- )
-
- cep = forms.CharField(label='Cep',
- required=True,
- widget=forms.TextInput(
- attrs={'class': 'cep'}))
-
- fax = forms.CharField(label='Fax',
- required=False,
- widget=forms.TextInput(
- attrs={'class': 'telefone'}))
-
- class Meta:
-
- model = CasaLegislativa
- fields = ['codigo',
- 'nome',
- 'sigla',
- 'endereco',
- 'cep',
- 'municipio',
- 'uf',
- 'telefone',
- 'fax',
- 'logotipo',
- 'endereco_web',
- 'email',
- 'informacao_geral']
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('codigo', 2),
- ('nome', 5),
- ('sigla', 5)])
-
- row2 = sapl.layout.to_row(
- [('endereco', 8),
- ('cep', 4)])
-
- row3 = sapl.layout.to_row(
- [('municipio', 10),
- ('uf', 2)])
-
- row4 = sapl.layout.to_row(
- [('telefone', 6),
- ('fax', 6)])
-
- row5 = sapl.layout.to_row(
- [('logotipo', 12)])
-
- row6 = sapl.layout.to_row(
- [('endereco_web', 12)])
-
- row7 = sapl.layout.to_row(
- [('email', 12)])
-
- row8 = sapl.layout.to_row(
- [('informacao_geral', 12)])
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset(
- 'Dados Básicos',
- row1,
- row2,
- row3,
- row4,
- row5,
- HTML("""{% if form.logotipo.value %}
-
-
-
- {% endif %}""", ),
- row6,
- row7,
- row8,
- form_actions()
- )
- )
- super(CasaLegislativaTabelaAuxForm, self).__init__(*args, **kwargs)
-
-
class CasaLegislativaTableAuxView(FormMixin, GenericView):
template_name = "base/casa_leg_table_aux.html"
diff --git a/comissoes/forms.py b/comissoes/forms.py
new file mode 100644
index 000000000..effa09a0a
--- /dev/null
+++ b/comissoes/forms.py
@@ -0,0 +1,173 @@
+from crispy_forms.helper import FormHelper
+from crispy_forms.layout import Fieldset, Layout
+from django import forms
+from django.forms import ModelForm
+
+import sapl
+from parlamentares.models import Filiacao
+from sapl.layout import form_actions
+
+from .models import Comissao, Participacao
+
+
+class CadastrarComissaoForm(ModelForm):
+
+ class Meta:
+
+ model = Comissao
+ fields = ['nome',
+ 'tipo',
+ 'sigla',
+ 'data_criacao',
+ 'data_extincao',
+ 'unidade_deliberativa',
+
+ 'local_reuniao',
+ 'agenda_reuniao',
+ 'telefone_reuniao',
+ 'endereco_secretaria',
+ 'telefone_secretaria',
+ 'fax_secretaria',
+ 'secretario',
+ 'email',
+ 'finalidade',
+
+ 'apelido_temp',
+ 'data_instalacao_temp',
+ 'data_final_prevista_temp',
+ 'data_prorrogada_temp',
+ 'data_fim_comissao']
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('nome', 8),
+ ('sigla', 4)])
+
+ row2 = sapl.layout.to_row(
+ [('tipo', 3),
+ ('data_criacao', 3),
+ ('unidade_deliberativa', 3),
+ ('data_extincao', 3)])
+
+ row3 = sapl.layout.to_row(
+ [('local_reuniao', 4),
+ ('agenda_reuniao', 4),
+ ('telefone_reuniao', 4)])
+
+ row4 = sapl.layout.to_row(
+ [('endereco_secretaria', 4),
+ ('telefone_secretaria', 4),
+ ('fax_secretaria', 4)])
+
+ row5 = sapl.layout.to_row(
+ [('secretario', 6),
+ ('email', 6)])
+
+ row6 = sapl.layout.to_row(
+ [('finalidade', 12)])
+
+ row7 = sapl.layout.to_row(
+ [('apelido_temp', 9),
+ ('data_instalacao_temp', 3)])
+
+ row8 = sapl.layout.to_row(
+ [('data_final_prevista_temp', 4),
+ ('data_prorrogada_temp', 4),
+ ('data_fim_comissao', 4)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset(
+ 'Cadastrar Comissão',
+ Fieldset(
+ 'Dados Básicos',
+ row1,
+ row2
+ ),
+ Fieldset(
+ 'Dados Complementares',
+ row3,
+ row4,
+ row5,
+ row6
+ ),
+ Fieldset(
+ 'Temporária',
+ row7,
+ row8
+ ),
+ form_actions()
+ )
+ )
+ super(CadastrarComissaoForm, self).__init__(*args, **kwargs)
+
+
+class ComposicaoForm(forms.Form):
+ periodo = forms.CharField()
+
+
+class ParticipacaoCadastroForm(ModelForm):
+
+ YES_OR_NO = (
+ (True, 'Sim'),
+ (False, 'Não')
+ )
+
+ parlamentar_id = forms.ModelChoiceField(
+ label='Parlamentar',
+ required=True,
+ queryset=Filiacao.objects.filter(
+ data_desfiliacao__isnull=True, parlamentar__ativo=True).order_by(
+ 'parlamentar__nome_parlamentar'),
+ empty_label='Selecione',
+ )
+
+ data_designacao = forms.DateField(label=u'Data Designação',
+ input_formats=['%d/%m/%Y'],
+ required=True,
+ widget=forms.DateInput(
+ format='%d/%m/%Y'))
+
+ data_desligamento = forms.DateField(label=u'Data Desligamento',
+ input_formats=['%d/%m/%Y'],
+ required=False,
+ widget=forms.DateInput(
+ format='%d/%m/%Y'))
+
+ class Meta:
+ model = Participacao
+ fields = ['parlamentar_id',
+ 'cargo',
+ 'titular',
+ 'data_designacao',
+ 'data_desligamento',
+ 'motivo_desligamento',
+ 'observacao']
+
+ def __init__(self, *args, **kwargs):
+ self.helper = FormHelper()
+
+ row1 = sapl.layout.to_row(
+ [('parlamentar_id', 4),
+ ('cargo', 4),
+ ('titular', 4)])
+
+ row2 = sapl.layout.to_row(
+ [('data_designacao', 6),
+ ('data_desligamento', 6)])
+
+ row3 = sapl.layout.to_row(
+ [('motivo_desligamento', 12)])
+
+ row4 = sapl.layout.to_row(
+ [('observacao', 12)])
+
+ self.helper.layout = Layout(
+ Fieldset(
+ 'Formulário de Cadastro',
+ row1, row2, row3, row4
+ ),
+ form_actions()
+ )
+ super(ParticipacaoCadastroForm, self).__init__(*args, **kwargs)
diff --git a/comissoes/views.py b/comissoes/views.py
index 55d7fd3d1..41d819bee 100644
--- a/comissoes/views.py
+++ b/comissoes/views.py
@@ -1,20 +1,16 @@
-from crispy_forms.helper import FormHelper
-from crispy_forms.layout import Fieldset, Layout
-from django import forms
from django.contrib import messages
from django.core.urlresolvers import reverse
-from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _
from django.views.generic import ListView
from django.views.generic.edit import FormMixin
from vanilla import GenericView
-import sapl
from materia.models import Tramitacao
from parlamentares.models import Filiacao
from sapl.crud import build_crud
-from sapl.layout import form_actions
+from .forms import (CadastrarComissaoForm, ComposicaoForm,
+ ParticipacaoCadastroForm)
from .models import (CargoComissao, Comissao, Composicao, Participacao,
Periodo, TipoComissao)
@@ -68,99 +64,6 @@ comissao_crud = build_crud(
])
-class CadastrarComissaoForm(ModelForm):
-
- class Meta:
-
- model = Comissao
- fields = ['nome',
- 'tipo',
- 'sigla',
- 'data_criacao',
- 'data_extincao',
- 'unidade_deliberativa',
-
- 'local_reuniao',
- 'agenda_reuniao',
- 'telefone_reuniao',
- 'endereco_secretaria',
- 'telefone_secretaria',
- 'fax_secretaria',
- 'secretario',
- 'email',
- 'finalidade',
-
- 'apelido_temp',
- 'data_instalacao_temp',
- 'data_final_prevista_temp',
- 'data_prorrogada_temp',
- 'data_fim_comissao']
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('nome', 8),
- ('sigla', 4)])
-
- row2 = sapl.layout.to_row(
- [('tipo', 3),
- ('data_criacao', 3),
- ('unidade_deliberativa', 3),
- ('data_extincao', 3)])
-
- row3 = sapl.layout.to_row(
- [('local_reuniao', 4),
- ('agenda_reuniao', 4),
- ('telefone_reuniao', 4)])
-
- row4 = sapl.layout.to_row(
- [('endereco_secretaria', 4),
- ('telefone_secretaria', 4),
- ('fax_secretaria', 4)])
-
- row5 = sapl.layout.to_row(
- [('secretario', 6),
- ('email', 6)])
-
- row6 = sapl.layout.to_row(
- [('finalidade', 12)])
-
- row7 = sapl.layout.to_row(
- [('apelido_temp', 9),
- ('data_instalacao_temp', 3)])
-
- row8 = sapl.layout.to_row(
- [('data_final_prevista_temp', 4),
- ('data_prorrogada_temp', 4),
- ('data_fim_comissao', 4)])
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset(
- 'Cadastrar Comissão',
- Fieldset(
- 'Dados Básicos',
- row1,
- row2
- ),
- Fieldset(
- 'Dados Complementares',
- row3,
- row4,
- row5,
- row6
- ),
- Fieldset(
- 'Temporária',
- row7,
- row8
- ),
- form_actions()
- )
- )
- super(CadastrarComissaoForm, self).__init__(*args, **kwargs)
-
-
class CadastrarComissaoView(FormMixin, GenericView):
template_name = "comissoes/cadastrar_comissao.html"
@@ -185,10 +88,6 @@ class CadastrarComissaoView(FormMixin, GenericView):
return reverse('comissao:list')
-class ComposicaoForm(forms.Form):
- periodo = forms.CharField()
-
-
class ComposicaoView(FormMixin, GenericView):
template_name = 'comissoes/composicao.html'
@@ -239,72 +138,6 @@ class ReunioesView(comissao_crud.CrudDetailView):
template_name = 'comissoes/reunioes.html'
-class ParticipacaoCadastroForm(ModelForm):
-
- YES_OR_NO = (
- (True, 'Sim'),
- (False, 'Não')
- )
-
- parlamentar_id = forms.ModelChoiceField(
- label='Parlamentar',
- required=True,
- queryset=Filiacao.objects.filter(
- data_desfiliacao__isnull=True, parlamentar__ativo=True).order_by(
- 'parlamentar__nome_parlamentar'),
- empty_label='Selecione',
- )
-
- data_designacao = forms.DateField(label=u'Data Designação',
- input_formats=['%d/%m/%Y'],
- required=True,
- widget=forms.DateInput(
- format='%d/%m/%Y'))
-
- data_desligamento = forms.DateField(label=u'Data Desligamento',
- input_formats=['%d/%m/%Y'],
- required=False,
- widget=forms.DateInput(
- format='%d/%m/%Y'))
-
- class Meta:
- model = Participacao
- fields = ['parlamentar_id',
- 'cargo',
- 'titular',
- 'data_designacao',
- 'data_desligamento',
- 'motivo_desligamento',
- 'observacao']
-
- def __init__(self, *args, **kwargs):
- self.helper = FormHelper()
-
- row1 = sapl.layout.to_row(
- [('parlamentar_id', 4),
- ('cargo', 4),
- ('titular', 4)])
-
- row2 = sapl.layout.to_row(
- [('data_designacao', 6),
- ('data_desligamento', 6)])
-
- row3 = sapl.layout.to_row(
- [('motivo_desligamento', 12)])
-
- row4 = sapl.layout.to_row(
- [('observacao', 12)])
-
- self.helper.layout = Layout(
- Fieldset(
- 'Formulário de Cadastro',
- row1, row2, row3, row4
- ),
- form_actions()
- )
- super(ParticipacaoCadastroForm, self).__init__(*args, **kwargs)
-
-
class ComissaoParlamentarIncluirView(FormMixin, GenericView):
template_name = "comissoes/comissao_parlamentar.html"
diff --git a/materia/forms.py b/materia/forms.py
new file mode 100644
index 000000000..13a4f68a6
--- /dev/null
+++ b/materia/forms.py
@@ -0,0 +1,741 @@
+from datetime import date
+
+from crispy_forms.helper import FormHelper
+from crispy_forms.layout import Column, Fieldset, Layout
+from django import forms
+from django.forms import ModelForm
+from django.utils.safestring import mark_safe
+
+import sapl
+from norma.models import LegislacaoCitada, TipoNormaJuridica
+from parlamentares.models import Parlamentar, Partido
+from sapl.layout import form_actions
+
+from .models import (Anexada, Autor, DespachoInicial, DocumentoAcessorio,
+ MateriaLegislativa, Numeracao, Origem, Proposicao,
+ Relatoria, StatusTramitacao, TipoAutor, TipoDocumento,
+ TipoMateriaLegislativa, Tramitacao, UnidadeTramitacao)
+
+
+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')]
+
+
+def get_local_origem():
+ return [('E', 'Poder Executivo'),
+ ('L', 'Poder Legislativo')]
+
+
+def em_tramitacao():
+ return [('', 'Tanto Faz'),
+ (True, 'Sim'),
+ (False, 'Não')]
+
+
+def ordenacao_materias():
+ return [(1, 'Crescente'),
+ (2, 'Decrescente')]
+
+
+class HorizontalRadioRenderer(forms.RadioSelect.renderer):
+
+ def render(self):
+ return mark_safe(u' '.join([u'%s ' % w for w in self]))
+
+
+class ProposicaoForm(ModelForm):
+
+ descricao = forms.CharField(
+ label='Descrição', required=True,
+ widget=forms.Textarea())
+
+ tipo_materia = forms.ModelChoiceField(
+ label='Matéria Vinculada',
+ required=False,
+ queryset=TipoMateriaLegislativa.objects.all(),
+ empty_label='Selecione',
+ )
+
+ numero_materia = forms.CharField(
+ label='Número', required=False)
+
+ ano_materia = forms.CharField(
+ label='Ano', required=False)
+
+ class Meta:
+ model = Proposicao
+ fields = ['tipo',
+ 'descricao',
+ 'texto_original']
+ exclude = ['autor',
+ 'data_envio',
+ 'data_recebimento',
+ 'data_devolucao',
+ 'justificativa_devolucao',
+ 'numero_proposicao',
+ 'status',
+ 'materia',
+ 'documento']
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('tipo', 12)])
+ row2 = sapl.layout.to_row(
+ [('descricao', 12)])
+ row3 = sapl.layout.to_row(
+ [('tipo_materia', 4),
+ ('numero_materia', 4),
+ ('ano_materia', 4)])
+ row4 = sapl.layout.to_row(
+ [('texto_original', 10)])
+
+ row4.append(
+ Column(form_actions(), css_class='col-md-2'))
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset('Incluir Proposição',
+ row1, row2, row3, row4)
+ )
+ super(ProposicaoForm, self).__init__(
+ *args, **kwargs)
+
+
+class DocumentoAcessorioForm(ModelForm):
+
+ tipo = forms.ModelChoiceField(
+ label='Tipo',
+ required=True,
+ queryset=TipoDocumento.objects.all(),
+ empty_label='Selecione',
+ )
+
+ data = forms.DateField(label='Data',
+ required=False,
+ input_formats=['%d/%m/%Y'],
+ widget=forms.TextInput(
+ attrs={'class': 'dateinput'}))
+
+ nome = forms.CharField(
+ label='Nome', required=True)
+
+ autor = forms.CharField(
+ label='Autor', required=True)
+
+ ementa = forms.CharField(
+ label='Ementa', required=True)
+
+ class Meta:
+ model = DocumentoAcessorio
+ fields = ['tipo',
+ 'nome',
+ 'data',
+ 'autor',
+ 'ementa']
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('tipo', 4),
+ ('nome', 4),
+ ('data', 4)])
+
+ row2 = sapl.layout.to_row(
+ [('autor', 12)])
+
+ row3 = sapl.layout.to_row(
+ [('ementa', 12)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset(
+ 'Incluir Documento Acessório',
+ row1, row2, row3,
+ form_actions()
+ )
+ )
+ super(DocumentoAcessorioForm, self).__init__(*args, **kwargs)
+
+
+class RelatoriaForm(ModelForm):
+ data_designacao_relator = forms.DateField(
+ label=u'Data Designação',
+ input_formats=['%d/%m/%Y'],
+ required=False,
+ widget=forms.DateInput(
+ format='%d/%m/%Y',
+ attrs={'class': 'dateinput'}))
+
+ data_destituicao_relator = forms.DateField(
+ label=u'Data Destituição',
+ input_formats=['%d/%m/%Y'],
+ required=False,
+ widget=forms.DateInput(
+ format='%d/%m/%Y',
+ attrs={'class': 'dateinput'}))
+
+ class Meta:
+ model = Relatoria
+ fields = ['data_designacao_relator',
+ 'comissao',
+ 'parlamentar',
+ 'data_destituicao_relator',
+ 'tipo_fim_relatoria'
+ ]
+
+
+class TramitacaoForm(ModelForm):
+
+ data_tramitacao = forms.DateField(label=u'Data Tramitação',
+ input_formats=['%d/%m/%Y'],
+ required=False,
+ widget=forms.DateInput(
+ format='%d/%m/%Y',
+ attrs={'class': 'dateinput'}))
+
+ data_encaminhamento = forms.DateField(label=u'Data Encaminhamento',
+ input_formats=['%d/%m/%Y'],
+ required=False,
+ widget=forms.DateInput(
+ format='%d/%m/%Y',
+ attrs={'class': 'dateinput'}))
+
+ data_fim_prazo = forms.DateField(label=u'Data Fim Prazo',
+ input_formats=['%d/%m/%Y'],
+ required=False,
+ widget=forms.DateInput(
+ format='%d/%m/%Y',
+ attrs={'class': 'dateinput'}))
+
+ class Meta:
+ model = Tramitacao
+ fields = ['data_tramitacao',
+ 'unidade_tramitacao_local',
+ 'status',
+ 'turno',
+ 'urgente',
+ 'unidade_tramitacao_destino',
+ 'data_encaminhamento',
+ 'data_fim_prazo',
+ 'texto']
+
+ def __init__(self, *args, **kwargs):
+ row1 = sapl.layout.to_row(
+ [('data_tramitacao', 6),
+ ('unidade_tramitacao_local', 6)])
+
+ row2 = sapl.layout.to_row(
+ [('status', 5),
+ ('turno', 5),
+ ('urgente', 2)])
+
+ row3 = sapl.layout.to_row(
+ [('unidade_tramitacao_destino', 12)])
+
+ row4 = sapl.layout.to_row(
+ [('data_encaminhamento', 6),
+ ('data_fim_prazo', 6)])
+
+ row5 = sapl.layout.to_row(
+ [('texto', 12)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset('Incluir Tramitação',
+ row1, row2, row3, row4, row5,
+ ),
+ form_actions()
+ )
+ super(TramitacaoForm, self).__init__(
+ *args, **kwargs)
+
+
+class LegislacaoCitadaForm(ModelForm):
+
+ tipo = forms.ModelChoiceField(
+ label='Tipo Norma',
+ required=True,
+ queryset=TipoNormaJuridica.objects.all(),
+ empty_label='Selecione',
+ )
+
+ numero = forms.CharField(label='Número', required=True)
+
+ ano = forms.CharField(label='Ano', required=True)
+
+ disposicao = forms.CharField(label='Disposição', required=False)
+
+ parte = forms.CharField(label='Parte', required=False)
+
+ livro = forms.CharField(label='Livro', required=False)
+
+ titulo = forms.CharField(label='Título', required=False)
+
+ capitulo = forms.CharField(label='Capítulo', required=False)
+
+ secao = forms.CharField(label='Seção', required=False)
+
+ subsecao = forms.CharField(label='Subseção', required=False)
+
+ artigo = forms.CharField(label='Artigo', required=False)
+
+ paragrafo = forms.CharField(label='Parágrafo', required=False)
+
+ inciso = forms.CharField(label='Inciso', required=False)
+
+ alinea = forms.CharField(label='Alínea', required=False)
+
+ item = forms.CharField(label='Item', required=False)
+
+ class Meta:
+ model = LegislacaoCitada
+ fields = ['tipo',
+ 'numero',
+ 'ano',
+ 'disposicao',
+ 'parte',
+ 'livro',
+ 'titulo',
+ 'capitulo',
+ 'secao',
+ 'subsecao',
+ 'artigo',
+ 'paragrafo',
+ 'inciso',
+ 'alinea',
+ 'item']
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('tipo', 4),
+ ('numero', 4),
+ ('ano', 4)])
+
+ row2 = sapl.layout.to_row(
+ [('disposicao', 3),
+ ('parte', 3),
+ ('livro', 3),
+ ('titulo', 3)])
+
+ row3 = sapl.layout.to_row(
+ [('capitulo', 3),
+ ('secao', 3),
+ ('subsecao', 3),
+ ('artigo', 3)])
+
+ row4 = sapl.layout.to_row(
+ [('paragrafo', 3),
+ ('inciso', 3),
+ ('alinea', 3),
+ ('item', 3)])
+
+ self.helper = FormHelper()
+ self.helper.form_class = 'form-horizontal'
+ self.helper.layout = Layout(
+ Fieldset(
+ 'Incluir Legislação Citada',
+ row1, row2, row3, row4,
+ form_actions()
+ )
+ )
+ super(LegislacaoCitadaForm, self).__init__(*args, **kwargs)
+
+
+class NumeracaoForm(ModelForm):
+
+ tipo_materia = forms.ModelChoiceField(
+ label='Tipo de Matéria',
+ required=True,
+ queryset=TipoMateriaLegislativa.objects.all(),
+ empty_label='Selecione',
+ )
+
+ data_materia = forms.DateField(label='Data',
+ required=False,
+ input_formats=['%d/%m/%Y'],
+ widget=forms.TextInput(
+ attrs={'class': 'dateinput'}))
+
+ ano_materia = forms.ChoiceField(required=True,
+ label='Ano',
+ choices=get_range_anos(),
+ widget=forms.Select(
+ attrs={'class': 'selector'}))
+
+ numero_materia = forms.CharField(
+ label='Número', required=True)
+
+ class Meta:
+ model = Numeracao
+ fields = ['tipo_materia',
+ 'numero_materia',
+ 'ano_materia',
+ 'data_materia']
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('tipo_materia', 12)])
+ row2 = sapl.layout.to_row(
+ [('numero_materia', 4),
+ ('ano_materia', 4),
+ ('data_materia', 4)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset(
+ 'Incluir Numeração',
+ row1, row2,
+ form_actions()
+ )
+ )
+ super(NumeracaoForm, self).__init__(*args, **kwargs)
+
+
+class DespachoInicialForm(ModelForm):
+
+ class Meta:
+ model = DespachoInicial
+ fields = ['comissao']
+
+ def __init__(self, *args, **kwargs):
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset(
+ 'Adicionar Despacho Inicial',
+ 'comissao',
+ form_actions()
+ )
+ )
+ super(DespachoInicialForm, self).__init__(*args, **kwargs)
+
+
+class MateriaAnexadaForm(ModelForm):
+
+ tipo = forms.ModelChoiceField(
+ label='Tipo',
+ required=True,
+ queryset=TipoMateriaLegislativa.objects.all(),
+ empty_label='Selecione',
+ )
+
+ numero = forms.CharField(label='Número', required=True)
+
+ ano = forms.CharField(label='Ano', required=True)
+
+ data_anexacao = forms.DateField(label='Data Anexação',
+ required=True,
+ input_formats=['%d/%m/%Y'],
+ widget=forms.TextInput(
+ attrs={'class': 'dateinput'}))
+
+ data_desanexacao = forms.DateField(label='Data Desanexação',
+ required=False,
+ input_formats=['%d/%m/%Y'],
+ widget=forms.TextInput(
+ attrs={'class': 'dateinput'}))
+
+ class Meta:
+ model = Anexada
+ fields = ['tipo', 'data_anexacao', 'data_desanexacao']
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('tipo', 4),
+ ('numero', 4),
+ ('ano', 4)])
+ row2 = sapl.layout.to_row(
+ [('data_anexacao', 6),
+ ('data_desanexacao', 6)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset(
+ 'Anexar Matéria',
+ row1, row2,
+ form_actions()
+ )
+ )
+ super(MateriaAnexadaForm, self).__init__(
+ *args, **kwargs)
+
+
+class FormularioSimplificadoForm(ModelForm):
+
+ data_apresentacao = forms.DateField(label=u'Data Apresentação',
+ input_formats=['%d/%m/%Y'],
+ required=False,
+ widget=forms.DateInput(
+ format='%d/%m/%Y'))
+
+ class Meta:
+ model = MateriaLegislativa
+ fields = ['tipo',
+ 'numero',
+ 'ano',
+ 'data_apresentacao',
+ 'numero_protocolo',
+ 'regime_tramitacao',
+ 'em_tramitacao',
+ 'ementa',
+ 'texto_original']
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('tipo', 4),
+ ('numero', 4),
+ ('ano', 4)])
+
+ row2 = sapl.layout.to_row(
+ [('data_apresentacao', 4),
+ ('numero_protocolo', 4),
+ ('regime_tramitacao', 4)])
+
+ row3 = sapl.layout.to_row(
+ [('texto_original', 9),
+ ('em_tramitacao', 3)])
+
+ row4 = sapl.layout.to_row(
+ [('ementa', 12)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset(
+ 'Formulário Simplificado',
+ Fieldset(
+ 'Identificação Básica',
+ row1, row2, row3, row4
+ ),
+ form_actions()
+ )
+ )
+ super(FormularioSimplificadoForm, self).__init__(*args, **kwargs)
+
+
+class FormularioCadastroForm(ModelForm):
+
+ class Meta:
+ model = MateriaLegislativa
+ fields = ['tipo',
+ 'numero',
+ 'ano',
+ 'data_apresentacao',
+ 'numero_protocolo',
+ 'tipo_apresentacao',
+ 'texto_original',
+ 'apelido',
+ 'dias_prazo',
+ 'polemica',
+ 'objeto',
+ 'regime_tramitacao',
+ 'em_tramitacao',
+ 'data_fim_prazo',
+ 'data_publicacao',
+ 'complementar',
+ 'tipo_origem_externa',
+ 'numero_origem_externa',
+ 'ano_origem_externa',
+ 'local_origem_externa',
+ 'data_origem_externa',
+ 'ementa',
+ 'indexacao',
+ 'observacao']
+
+ def __init__(self, *args, **kwargs):
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset(
+ 'Formulário de Cadastro',
+ Fieldset(
+ 'Identificação Básica',
+ 'tipo',
+ 'numero',
+ 'ano',
+ 'data_apresentacao',
+ 'numero_protocolo',
+ 'tipo_apresentacao',
+ 'texto_original'
+ ),
+ Fieldset(
+ 'Outras Informações',
+ 'apelido',
+ 'dias_prazo',
+ 'polemica',
+ 'objeto',
+ 'regime_tramitacao',
+ 'em_tramitacao',
+ 'data_fim_prazo',
+ 'data_publicacao',
+ 'complementar'
+ ),
+ Fieldset(
+ 'Origem Externa',
+ 'tipo_origem_externa',
+ 'numero_origem_externa',
+ 'ano_origem_externa',
+ 'local_origem_externa',
+ 'data_origem_externa'
+ ),
+ Fieldset(
+ 'Dados Textuais',
+ 'ementa',
+ 'indexacao',
+ 'observacao'
+ ),
+ form_actions()
+ )
+ )
+ super(FormularioCadastroForm, self).__init__(*args, **kwargs)
+
+
+class AutoriaForm(forms.Form):
+ tipo_autor = forms.CharField()
+ nome_autor = forms.CharField()
+ primeiro_autor = forms.CharField()
+ partido_autor = forms.ModelChoiceField(
+ label='Partido (Autor)',
+ required=False,
+ queryset=Partido.objects.all(),
+ empty_label='Selecione')
+
+
+class MateriaLegislativaPesquisaForm(forms.Form):
+
+ autor = forms.ModelChoiceField(
+ label='Autor',
+ required=False,
+ queryset=Autor.objects.all().order_by('tipo'),
+ empty_label='Selecione',
+ )
+
+ # relatores são os parlamentares ativos?
+ relator = forms.ModelChoiceField(
+ label='Relator',
+ required=False,
+ queryset=Parlamentar.objects.all().order_by('nome_parlamentar'),
+ empty_label='Selecione',
+ )
+
+ tipo = forms.ModelChoiceField(
+ label='Tipo de Matéria',
+ required=False,
+ queryset=TipoMateriaLegislativa.objects.all(),
+ empty_label='Selecione',
+ )
+
+ data_apresentacao = forms.DateField(label=u'Data de Apresentação',
+ input_formats=['%d/%m/%Y'],
+ required=False,
+ widget=forms.DateInput(
+ format='%d/%m/%Y',
+ attrs={'class': 'dateinput'}))
+
+ data_publicacao = forms.DateField(label=u'Data da Publicação',
+ input_formats=['%d/%m/%Y'],
+ required=False,
+ widget=forms.DateInput(
+ format='%d/%m/%Y',
+ attrs={'class': 'dateinput'}))
+
+ numero = forms.CharField(required=False, label=u'Número da Matéria')
+ numero_protocolo = forms.CharField(required=False, label=u'Núm. Protocolo')
+ ano = forms.CharField(required=False, label=u'Ano da Matéria')
+ assunto = forms.CharField(required=False, label=u'Assunto')
+
+ ordem = forms.ChoiceField(required=False,
+ label='Ordenação',
+ choices=ordenacao_materias(),
+ widget=forms.Select(
+ attrs={'class': 'selector'}))
+
+ localizacao = forms.ModelChoiceField(
+ label='Localização Atual',
+ required=False,
+ queryset=UnidadeTramitacao.objects.all(),
+ empty_label='Selecione',
+ )
+
+ situacao = forms.ModelChoiceField(
+ label='Situação',
+ required=False,
+ queryset=StatusTramitacao.objects.all(),
+ empty_label='Selecione',
+ )
+
+ tramitacao = forms.ChoiceField(required=False,
+ label='Tramitando',
+ choices=em_tramitacao(),
+ widget=forms.Select(
+ attrs={'class': 'selector'}))
+
+ tipo_autor = forms.ModelChoiceField(
+ label='Tipo Autor',
+ required=False,
+ queryset=TipoAutor.objects.all(),
+ empty_label='Selecione',
+ )
+
+ partido_autor = forms.ModelChoiceField(
+ label='Partido (Autor)',
+ required=False,
+ queryset=Partido.objects.all(),
+ empty_label='Selecione')
+
+ local_origem_externa = forms.ModelChoiceField(
+ label='Localização de Origem',
+ required=False,
+ queryset=Origem.objects.all(),
+ empty_label='Selecione')
+
+ # TODO: Verificar se esses campos estão corretos
+ # assunto? # -> usado 'ementa' em 'assunto'
+ # localizacao atual? #
+ # situacao? #
+ # tramitando? #
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('tipo', 12)])
+ row2 = sapl.layout.to_row(
+ [('numero', 4),
+ ('ano', 4),
+ ('numero_protocolo', 4)])
+ row3 = sapl.layout.to_row(
+ [('data_apresentacao', 6),
+ ('data_publicacao', 6)])
+ row4 = sapl.layout.to_row(
+ [('autor', 6),
+ ('partido_autor', 6)])
+ row5 = sapl.layout.to_row(
+ [('tipo_autor', 6),
+ ('relator', 6)])
+ row6 = sapl.layout.to_row(
+ [('local_origem_externa', 6),
+ ('localizacao', 6)])
+ row7 = sapl.layout.to_row(
+ [('tramitacao', 4),
+ ('situacao', 4),
+ ('ordem', 4)])
+ row8 = sapl.layout.to_row(
+ [('assunto', 12)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset('Pesquisa Básica',
+ row1, row2, row3, row4, row5, row6, row7, row8),
+ form_actions(save_label='Pesquisar')
+ )
+ super(MateriaLegislativaPesquisaForm, self).__init__(
+ *args, **kwargs)
diff --git a/materia/views.py b/materia/views.py
index ada8cfe01..1f63def44 100644
--- a/materia/views.py
+++ b/materia/views.py
@@ -1,17 +1,12 @@
-from datetime import date, datetime
+from datetime import datetime
from re import sub
-from crispy_forms.helper import FormHelper
-from crispy_forms.layout import Column, Fieldset, Layout
-from django import forms
from django.contrib import messages
from django.core.exceptions import ObjectDoesNotExist
from django.core.mail import send_mail
from django.core.urlresolvers import reverse
-from django.forms import ModelForm
from django.shortcuts import redirect
from django.utils.html import strip_tags
-from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
from django.views.generic import ListView
from django.views.generic.edit import FormMixin
@@ -21,11 +16,15 @@ import sapl
from comissoes.models import Comissao, Composicao
from compilacao.views import IntegracaoTaView
from norma.models import LegislacaoCitada, NormaJuridica, TipoNormaJuridica
-from parlamentares.models import Parlamentar, Partido
+from parlamentares.models import Partido
from sapl.crud import build_crud
-from sapl.layout import form_actions
from sessao.models import AcompanharMateria
+from .forms import (AutoriaForm, DespachoInicialForm, DocumentoAcessorioForm,
+ FormularioCadastroForm, FormularioSimplificadoForm,
+ LegislacaoCitadaForm, MateriaAnexadaForm,
+ MateriaLegislativaPesquisaForm, NumeracaoForm,
+ ProposicaoForm, RelatoriaForm, TramitacaoForm)
from .models import (Anexada, Autor, Autoria, DespachoInicial,
DocumentoAcessorio, MateriaLegislativa, Numeracao, Orgao,
Origem, Proposicao, RegimeTramitacao, Relatoria,
@@ -228,157 +227,6 @@ tramitacao_crud = build_crud(
])
-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')]
-
-
-def get_local_origem():
- return [('E', 'Poder Executivo'),
- ('L', 'Poder Legislativo')]
-
-
-class HorizontalRadioRenderer(forms.RadioSelect.renderer):
-
- def render(self):
- return mark_safe(u' '.join([u'%s ' % w for w in self]))
-
-
-class FormularioSimplificadoForm(ModelForm):
-
- data_apresentacao = forms.DateField(label=u'Data Apresentação',
- input_formats=['%d/%m/%Y'],
- required=False,
- widget=forms.DateInput(
- format='%d/%m/%Y'))
-
- class Meta:
- model = MateriaLegislativa
- fields = ['tipo',
- 'numero',
- 'ano',
- 'data_apresentacao',
- 'numero_protocolo',
- 'regime_tramitacao',
- 'em_tramitacao',
- 'ementa',
- 'texto_original']
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('tipo', 4),
- ('numero', 4),
- ('ano', 4)])
-
- row2 = sapl.layout.to_row(
- [('data_apresentacao', 4),
- ('numero_protocolo', 4),
- ('regime_tramitacao', 4)])
-
- row3 = sapl.layout.to_row(
- [('texto_original', 9),
- ('em_tramitacao', 3)])
-
- row4 = sapl.layout.to_row(
- [('ementa', 12)])
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset(
- 'Formulário Simplificado',
- Fieldset(
- 'Identificação Básica',
- row1, row2, row3, row4
- ),
- form_actions()
- )
- )
- super(FormularioSimplificadoForm, self).__init__(*args, **kwargs)
-
-
-class FormularioCadastroForm(ModelForm):
-
- class Meta:
- model = MateriaLegislativa
- fields = ['tipo',
- 'numero',
- 'ano',
- 'data_apresentacao',
- 'numero_protocolo',
- 'tipo_apresentacao',
- 'texto_original',
- 'apelido',
- 'dias_prazo',
- 'polemica',
- 'objeto',
- 'regime_tramitacao',
- 'em_tramitacao',
- 'data_fim_prazo',
- 'data_publicacao',
- 'complementar',
- 'tipo_origem_externa',
- 'numero_origem_externa',
- 'ano_origem_externa',
- 'local_origem_externa',
- 'data_origem_externa',
- 'ementa',
- 'indexacao',
- 'observacao']
-
- def __init__(self, *args, **kwargs):
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset(
- 'Formulário de Cadastro',
- Fieldset(
- 'Identificação Básica',
- 'tipo',
- 'numero',
- 'ano',
- 'data_apresentacao',
- 'numero_protocolo',
- 'tipo_apresentacao',
- 'texto_original'
- ),
- Fieldset(
- 'Outras Informações',
- 'apelido',
- 'dias_prazo',
- 'polemica',
- 'objeto',
- 'regime_tramitacao',
- 'em_tramitacao',
- 'data_fim_prazo',
- 'data_publicacao',
- 'complementar'
- ),
- Fieldset(
- 'Origem Externa',
- 'tipo_origem_externa',
- 'numero_origem_externa',
- 'ano_origem_externa',
- 'local_origem_externa',
- 'data_origem_externa'
- ),
- Fieldset(
- 'Dados Textuais',
- 'ementa',
- 'indexacao',
- 'observacao'
- ),
- form_actions()
- )
- )
- super(FormularioCadastroForm, self).__init__(*args, **kwargs)
-
-
class FormularioSimplificadoView(FormMixin, GenericView):
template_name = "materia/formulario_simplificado.html"
@@ -423,57 +271,6 @@ class FormularioCadastroView(FormMixin, GenericView):
return reverse('formulario_cadastro')
-class MateriaAnexadaForm(ModelForm):
-
- tipo = forms.ModelChoiceField(
- label='Tipo',
- required=True,
- queryset=TipoMateriaLegislativa.objects.all(),
- empty_label='Selecione',
- )
-
- numero = forms.CharField(label='Número', required=True)
-
- ano = forms.CharField(label='Ano', required=True)
-
- data_anexacao = forms.DateField(label='Data Anexação',
- required=True,
- input_formats=['%d/%m/%Y'],
- widget=forms.TextInput(
- attrs={'class': 'dateinput'}))
-
- data_desanexacao = forms.DateField(label='Data Desanexação',
- required=False,
- input_formats=['%d/%m/%Y'],
- widget=forms.TextInput(
- attrs={'class': 'dateinput'}))
-
- class Meta:
- model = Anexada
- fields = ['tipo', 'data_anexacao', 'data_desanexacao']
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('tipo', 4),
- ('numero', 4),
- ('ano', 4)])
- row2 = sapl.layout.to_row(
- [('data_anexacao', 6),
- ('data_desanexacao', 6)])
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset(
- 'Anexar Matéria',
- row1, row2,
- form_actions()
- )
- )
- super(MateriaAnexadaForm, self).__init__(
- *args, **kwargs)
-
-
class MateriaAnexadaView(FormMixin, GenericView):
template_name = "materia/materia_anexada.html"
@@ -634,31 +431,13 @@ class MateriaAnexadaEditView(FormMixin, GenericView):
return reverse('materia_anexada', kwargs={'pk': pk})
-class DespachoInicialFom(ModelForm):
-
- class Meta:
- model = DespachoInicial
- fields = ['comissao']
-
- def __init__(self, *args, **kwargs):
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset(
- 'Adicionar Despacho Inicial',
- 'comissao',
- form_actions()
- )
- )
- super(DespachoInicialFom, self).__init__(*args, **kwargs)
-
-
class DespachoInicialView(FormMixin, GenericView):
template_name = "materia/despacho_inicial.html"
def get(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
despacho = DespachoInicial.objects.filter(materia_id=materia.id)
- form = DespachoInicialFom()
+ form = DespachoInicialForm()
return self.render_to_response(
{'object': materia,
@@ -666,7 +445,7 @@ class DespachoInicialView(FormMixin, GenericView):
'despachos': despacho})
def post(self, request, *args, **kwargs):
- form = DespachoInicialFom(request.POST)
+ form = DespachoInicialForm(request.POST)
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
despacho = DespachoInicial.objects.filter(materia_id=materia.id)
@@ -692,7 +471,7 @@ class DespachoInicialEditView(FormMixin, GenericView):
def get(self, request, *args, **kwargs):
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
despacho = DespachoInicial.objects.get(id=kwargs['id'])
- form = DespachoInicialFom()
+ form = DespachoInicialForm()
return self.render_to_response(
{'object': materia,
@@ -701,7 +480,7 @@ class DespachoInicialEditView(FormMixin, GenericView):
'comissoes': Comissao.objects.all()})
def post(self, request, *args, **kwargs):
- form = DespachoInicialFom(request.POST)
+ form = DespachoInicialForm(request.POST)
materia = MateriaLegislativa.objects.get(id=kwargs['pk'])
despacho = DespachoInicial.objects.get(id=kwargs['id'])
@@ -726,98 +505,6 @@ class DespachoInicialEditView(FormMixin, GenericView):
return reverse('despacho_inicial', kwargs={'pk': pk})
-class LegislacaoCitadaForm(ModelForm):
-
- tipo = forms.ModelChoiceField(
- label='Tipo Norma',
- required=True,
- queryset=TipoNormaJuridica.objects.all(),
- empty_label='Selecione',
- )
-
- numero = forms.CharField(label='Número', required=True)
-
- ano = forms.CharField(label='Ano', required=True)
-
- disposicao = forms.CharField(label='Disposição', required=False)
-
- parte = forms.CharField(label='Parte', required=False)
-
- livro = forms.CharField(label='Livro', required=False)
-
- titulo = forms.CharField(label='Título', required=False)
-
- capitulo = forms.CharField(label='Capítulo', required=False)
-
- secao = forms.CharField(label='Seção', required=False)
-
- subsecao = forms.CharField(label='Subseção', required=False)
-
- artigo = forms.CharField(label='Artigo', required=False)
-
- paragrafo = forms.CharField(label='Parágrafo', required=False)
-
- inciso = forms.CharField(label='Inciso', required=False)
-
- alinea = forms.CharField(label='Alínea', required=False)
-
- item = forms.CharField(label='Item', required=False)
-
- class Meta:
- model = LegislacaoCitada
- fields = ['tipo',
- 'numero',
- 'ano',
- 'disposicao',
- 'parte',
- 'livro',
- 'titulo',
- 'capitulo',
- 'secao',
- 'subsecao',
- 'artigo',
- 'paragrafo',
- 'inciso',
- 'alinea',
- 'item']
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('tipo', 4),
- ('numero', 4),
- ('ano', 4)])
-
- row2 = sapl.layout.to_row(
- [('disposicao', 3),
- ('parte', 3),
- ('livro', 3),
- ('titulo', 3)])
-
- row3 = sapl.layout.to_row(
- [('capitulo', 3),
- ('secao', 3),
- ('subsecao', 3),
- ('artigo', 3)])
-
- row4 = sapl.layout.to_row(
- [('paragrafo', 3),
- ('inciso', 3),
- ('alinea', 3),
- ('item', 3)])
-
- self.helper = FormHelper()
- self.helper.form_class = 'form-horizontal'
- self.helper.layout = Layout(
- Fieldset(
- 'Incluir Legislação Citada',
- row1, row2, row3, row4,
- form_actions()
- )
- )
- super(LegislacaoCitadaForm, self).__init__(*args, **kwargs)
-
-
class LegislacaoCitadaView(FormMixin, GenericView):
template_name = "materia/legislacao_citada.html"
@@ -942,57 +629,6 @@ class LegislacaoCitadaEditView(FormMixin, GenericView):
'object': materia})
-class NumeracaoForm(ModelForm):
-
- tipo_materia = forms.ModelChoiceField(
- label='Tipo de Matéria',
- required=True,
- queryset=TipoMateriaLegislativa.objects.all(),
- empty_label='Selecione',
- )
-
- data_materia = forms.DateField(label='Data',
- required=False,
- input_formats=['%d/%m/%Y'],
- widget=forms.TextInput(
- attrs={'class': 'dateinput'}))
-
- ano_materia = forms.ChoiceField(required=True,
- label='Ano',
- choices=get_range_anos(),
- widget=forms.Select(
- attrs={'class': 'selector'}))
-
- numero_materia = forms.CharField(
- label='Número', required=True)
-
- class Meta:
- model = Numeracao
- fields = ['tipo_materia',
- 'numero_materia',
- 'ano_materia',
- 'data_materia']
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('tipo_materia', 12)])
- row2 = sapl.layout.to_row(
- [('numero_materia', 4),
- ('ano_materia', 4),
- ('data_materia', 4)])
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset(
- 'Incluir Numeração',
- row1, row2,
- form_actions()
- )
- )
- super(NumeracaoForm, self).__init__(*args, **kwargs)
-
-
class NumeracaoView(FormMixin, GenericView):
template_name = "materia/numeracao.html"
@@ -1079,62 +715,6 @@ class NumeracaoEditView(FormMixin, GenericView):
return reverse('numeracao', kwargs={'pk': pk})
-class DocumentoAcessorioForm(ModelForm):
-
- tipo = forms.ModelChoiceField(
- label='Tipo',
- required=True,
- queryset=TipoDocumento.objects.all(),
- empty_label='Selecione',
- )
-
- data = forms.DateField(label='Data',
- required=False,
- input_formats=['%d/%m/%Y'],
- widget=forms.TextInput(
- attrs={'class': 'dateinput'}))
-
- nome = forms.CharField(
- label='Nome', required=True)
-
- autor = forms.CharField(
- label='Autor', required=True)
-
- ementa = forms.CharField(
- label='Ementa', required=True)
-
- class Meta:
- model = DocumentoAcessorio
- fields = ['tipo',
- 'nome',
- 'data',
- 'autor',
- 'ementa']
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('tipo', 4),
- ('nome', 4),
- ('data', 4)])
-
- row2 = sapl.layout.to_row(
- [('autor', 12)])
-
- row3 = sapl.layout.to_row(
- [('ementa', 12)])
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset(
- 'Incluir Documento Acessório',
- row1, row2, row3,
- form_actions()
- )
- )
- super(DocumentoAcessorioForm, self).__init__(*args, **kwargs)
-
-
class DocumentoAcessorioView(FormMixin, GenericView):
template_name = "materia/documento_acessorio.html"
@@ -1222,33 +802,6 @@ class DocumentoAcessorioEditView(FormMixin, GenericView):
return reverse('documento_acessorio', kwargs={'pk': pk})
-class RelatoriaForm(ModelForm):
- data_designacao_relator = forms.DateField(
- label=u'Data Designação',
- input_formats=['%d/%m/%Y'],
- required=False,
- widget=forms.DateInput(
- format='%d/%m/%Y',
- attrs={'class': 'dateinput'}))
-
- data_destituicao_relator = forms.DateField(
- label=u'Data Destituição',
- input_formats=['%d/%m/%Y'],
- required=False,
- widget=forms.DateInput(
- format='%d/%m/%Y',
- attrs={'class': 'dateinput'}))
-
- class Meta:
- model = Relatoria
- fields = ['data_designacao_relator',
- 'comissao',
- 'parlamentar',
- 'data_destituicao_relator',
- 'tipo_fim_relatoria'
- ]
-
-
class RelatoriaEditView(FormMixin, GenericView):
template_name = "materia/relatoria_edit.html"
@@ -1414,72 +967,6 @@ class RelatoriaView(FormMixin, GenericView):
'parlamentares': parlamentares})
-class TramitacaoForm(ModelForm):
-
- data_tramitacao = forms.DateField(label=u'Data Tramitação',
- input_formats=['%d/%m/%Y'],
- required=False,
- widget=forms.DateInput(
- format='%d/%m/%Y',
- attrs={'class': 'dateinput'}))
-
- data_encaminhamento = forms.DateField(label=u'Data Encaminhamento',
- input_formats=['%d/%m/%Y'],
- required=False,
- widget=forms.DateInput(
- format='%d/%m/%Y',
- attrs={'class': 'dateinput'}))
-
- data_fim_prazo = forms.DateField(label=u'Data Fim Prazo',
- input_formats=['%d/%m/%Y'],
- required=False,
- widget=forms.DateInput(
- format='%d/%m/%Y',
- attrs={'class': 'dateinput'}))
-
- class Meta:
- model = Tramitacao
- fields = ['data_tramitacao',
- 'unidade_tramitacao_local',
- 'status',
- 'turno',
- 'urgente',
- 'unidade_tramitacao_destino',
- 'data_encaminhamento',
- 'data_fim_prazo',
- 'texto']
-
- def __init__(self, *args, **kwargs):
- row1 = sapl.layout.to_row(
- [('data_tramitacao', 6),
- ('unidade_tramitacao_local', 6)])
-
- row2 = sapl.layout.to_row(
- [('status', 5),
- ('turno', 5),
- ('urgente', 2)])
-
- row3 = sapl.layout.to_row(
- [('unidade_tramitacao_destino', 12)])
-
- row4 = sapl.layout.to_row(
- [('data_encaminhamento', 6),
- ('data_fim_prazo', 6)])
-
- row5 = sapl.layout.to_row(
- [('texto', 12)])
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset('Incluir Tramitação',
- row1, row2, row3, row4, row5,
- ),
- form_actions()
- )
- super(TramitacaoForm, self).__init__(
- *args, **kwargs)
-
-
class TramitacaoView(FormMixin, GenericView):
template_name = "materia/tramitacao.html"
@@ -1606,17 +1093,6 @@ class TramitacaoEditView(FormMixin, GenericView):
return reverse('tramitacao_materia', kwargs={'pk': pk})
-class AutoriaForm(forms.Form):
- tipo_autor = forms.CharField()
- nome_autor = forms.CharField()
- primeiro_autor = forms.CharField()
- partido_autor = forms.ModelChoiceField(
- label='Partido (Autor)',
- required=False,
- queryset=Partido.objects.all(),
- empty_label='Selecione')
-
-
class AutoriaView(GenericView):
template_name = "materia/autoria.html"
@@ -1761,110 +1237,6 @@ class AutoriaEditView(GenericView, FormMixin):
return reverse('autoria', kwargs={'pk': pk})
-class ProposicaoForm(ModelForm):
-
- descricao = forms.CharField(
- label='Descrição', required=True,
- widget=forms.Textarea())
-
- tipo_materia = forms.ModelChoiceField(
- label='Matéria Vinculada',
- required=False,
- queryset=TipoMateriaLegislativa.objects.all(),
- empty_label='Selecione',
- )
-
- numero_materia = forms.CharField(
- label='Número', required=False)
-
- ano_materia = forms.CharField(
- label='Ano', required=False)
-
- class Meta:
- model = Proposicao
- fields = ['tipo',
- 'descricao',
- 'texto_original']
- exclude = ['autor',
- 'data_envio',
- 'data_recebimento',
- 'data_devolucao',
- 'justificativa_devolucao',
- 'numero_proposicao',
- 'status',
- 'materia',
- 'documento']
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('tipo', 12)])
- row2 = sapl.layout.to_row(
- [('descricao', 12)])
- row3 = sapl.layout.to_row(
- [('tipo_materia', 4),
- ('numero_materia', 4),
- ('ano_materia', 4)])
- row4 = sapl.layout.to_row(
- [('texto_original', 10)])
-
- row4.append(
- Column(form_actions(), css_class='col-md-2'))
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset('Incluir Proposição',
- row1, row2, row3, row4)
- )
- super(ProposicaoForm, self).__init__(
- *args, **kwargs)
-
-
-class ProposicaoView(FormMixin, GenericView):
- template_name = "materia/proposicao.html"
-
- def get_success_url(self):
- return reverse('list_proposicao')
-
- def get(self, request, *args, **kwargs):
- form = ProposicaoForm()
- return self.render_to_response({'form': form})
-
- def post(self, request, *args, **kwargs):
- form = ProposicaoForm(request.POST)
-
- if form.is_valid():
- proposicao = form.save(commit=False)
- if 'texto_original' in request.FILES:
- proposicao.texto_original = request.FILES['texto_original']
-
- tipo = TipoProposicao.objects.get(
- id=int(request.POST['tipo']))
-
- if tipo.descricao == 'Parecer':
- try:
- materia = MateriaLegislativa.objects.get(
- tipo_id=int(form.data['tipo_materia']),
- ano=int(form.data['ano_materia']),
- numero=int(form.data['numero_materia']))
- except ObjectDoesNotExist:
- msg = 'Matéria adicionada não existe!'
- messages.add_message(request, messages.INFO, msg)
- return self.render_to_response({'form': form})
- else:
- proposicao.autor = materia.autoria_set.first().autor
- proposicao.materia = materia
-
- proposicao.descricao = sub(' ',
- ' ',
- strip_tags(form.data['descricao']))
- # proposicao.data_envio = datetime.now()
- proposicao.save()
- return self.form_valid(form)
- else:
- return self.render_to_response({'form': form})
-
-
class ProposicaoListView(ListView):
template_name = "materia/proposicao_list.html"
paginate_by = 10
@@ -1884,148 +1256,6 @@ class ProposicaoListView(ListView):
return context
-def em_tramitacao():
- return [('', 'Tanto Faz'),
- (True, 'Sim'),
- (False, 'Não')]
-
-
-def ordenacao_materias():
- return [(1, 'Crescente'),
- (2, 'Decrescente')]
-
-
-class MateriaLegislativaPesquisaForm(forms.Form):
-
- autor = forms.ModelChoiceField(
- label='Autor',
- required=False,
- queryset=Autor.objects.all().order_by('tipo'),
- empty_label='Selecione',
- )
-
- # relatores são os parlamentares ativos?
- relator = forms.ModelChoiceField(
- label='Relator',
- required=False,
- queryset=Parlamentar.objects.all().order_by('nome_parlamentar'),
- empty_label='Selecione',
- )
-
- tipo = forms.ModelChoiceField(
- label='Tipo de Matéria',
- required=False,
- queryset=TipoMateriaLegislativa.objects.all(),
- empty_label='Selecione',
- )
-
- data_apresentacao = forms.DateField(label=u'Data de Apresentação',
- input_formats=['%d/%m/%Y'],
- required=False,
- widget=forms.DateInput(
- format='%d/%m/%Y',
- attrs={'class': 'dateinput'}))
-
- data_publicacao = forms.DateField(label=u'Data da Publicação',
- input_formats=['%d/%m/%Y'],
- required=False,
- widget=forms.DateInput(
- format='%d/%m/%Y',
- attrs={'class': 'dateinput'}))
-
- numero = forms.CharField(required=False, label=u'Número da Matéria')
- numero_protocolo = forms.CharField(required=False, label=u'Núm. Protocolo')
- ano = forms.CharField(required=False, label=u'Ano da Matéria')
- assunto = forms.CharField(required=False, label=u'Assunto')
-
- ordem = forms.ChoiceField(required=False,
- label='Ordenação',
- choices=ordenacao_materias(),
- widget=forms.Select(
- attrs={'class': 'selector'}))
-
- localizacao = forms.ModelChoiceField(
- label='Localização Atual',
- required=False,
- queryset=UnidadeTramitacao.objects.all(),
- empty_label='Selecione',
- )
-
- situacao = forms.ModelChoiceField(
- label='Situação',
- required=False,
- queryset=StatusTramitacao.objects.all(),
- empty_label='Selecione',
- )
-
- tramitacao = forms.ChoiceField(required=False,
- label='Tramitando',
- choices=em_tramitacao(),
- widget=forms.Select(
- attrs={'class': 'selector'}))
-
- tipo_autor = forms.ModelChoiceField(
- label='Tipo Autor',
- required=False,
- queryset=TipoAutor.objects.all(),
- empty_label='Selecione',
- )
-
- partido_autor = forms.ModelChoiceField(
- label='Partido (Autor)',
- required=False,
- queryset=Partido.objects.all(),
- empty_label='Selecione')
-
- local_origem_externa = forms.ModelChoiceField(
- label='Localização de Origem',
- required=False,
- queryset=Origem.objects.all(),
- empty_label='Selecione')
-
- # TODO: Verificar se esses campos estão corretos
- # assunto? # -> usado 'ementa' em 'assunto'
- # localizacao atual? #
- # situacao? #
- # tramitando? #
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('tipo', 12)])
- row2 = sapl.layout.to_row(
- [('numero', 4),
- ('ano', 4),
- ('numero_protocolo', 4)])
- row3 = sapl.layout.to_row(
- [('data_apresentacao', 6),
- ('data_publicacao', 6)])
- row4 = sapl.layout.to_row(
- [('autor', 6),
- ('partido_autor', 6)])
- row5 = sapl.layout.to_row(
- [('tipo_autor', 6),
- ('relator', 6)])
- row6 = sapl.layout.to_row(
- [('local_origem_externa', 6),
- ('localizacao', 6)])
- row7 = sapl.layout.to_row(
- [('tramitacao', 4),
- ('situacao', 4),
- ('ordem', 4)])
- row8 = sapl.layout.to_row(
- [('assunto', 12)])
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset('Pesquisa Básica',
- row1, row2, row3, row4, row5, row6, row7, row8),
- form_actions(save_label='Pesquisar')
- )
- super(MateriaLegislativaPesquisaForm, self).__init__(
- *args, **kwargs)
-
-
class MateriaLegislativaPesquisaView(FormMixin, GenericView):
template_name = 'materia/pesquisa_materia.html'
@@ -2209,6 +1439,51 @@ class PesquisaMateriaListView(FormMixin, ListView):
return context
+class ProposicaoView(FormMixin, GenericView):
+ template_name = "materia/proposicao.html"
+
+ def get_success_url(self):
+ return reverse('list_proposicao')
+
+ def get(self, request, *args, **kwargs):
+ form = ProposicaoForm()
+ return self.render_to_response({'form': form})
+
+ def post(self, request, *args, **kwargs):
+ form = ProposicaoForm(request.POST)
+
+ if form.is_valid():
+ proposicao = form.save(commit=False)
+ if 'texto_original' in request.FILES:
+ proposicao.texto_original = request.FILES['texto_original']
+
+ tipo = TipoProposicao.objects.get(
+ id=int(request.POST['tipo']))
+
+ if tipo.descricao == 'Parecer':
+ try:
+ materia = MateriaLegislativa.objects.get(
+ tipo_id=int(form.data['tipo_materia']),
+ ano=int(form.data['ano_materia']),
+ numero=int(form.data['numero_materia']))
+ except ObjectDoesNotExist:
+ msg = 'Matéria adicionada não existe!'
+ messages.add_message(request, messages.INFO, msg)
+ return self.render_to_response({'form': form})
+ else:
+ proposicao.autor = materia.autoria_set.first().autor
+ proposicao.materia = materia
+
+ proposicao.descricao = sub(' ',
+ ' ',
+ strip_tags(form.data['descricao']))
+ # proposicao.data_envio = datetime.now()
+ proposicao.save()
+ return self.form_valid(form)
+ else:
+ return self.render_to_response({'form': form})
+
+
class MateriaTaView(IntegracaoTaView):
model = MateriaLegislativa
diff --git a/norma/forms.py b/norma/forms.py
new file mode 100644
index 000000000..4953a8c5c
--- /dev/null
+++ b/norma/forms.py
@@ -0,0 +1,102 @@
+from crispy_forms.helper import FormHelper
+from crispy_forms.layout import Fieldset, Layout
+from django import forms
+from django.forms import ModelForm
+from django.utils.safestring import mark_safe
+
+import sapl
+from materia.models import TipoMateriaLegislativa
+from sapl.layout import form_actions
+
+from .models import NormaJuridica
+
+
+def get_esferas():
+ return [('E', 'Estadual'),
+ ('F', 'Federal'),
+ ('M', 'Municipal')]
+
+
+class HorizontalRadioRenderer(forms.RadioSelect.renderer):
+
+ def render(self):
+ return mark_safe(u' '.join([u'%s ' % w for w in self]))
+
+
+class NormaJuridicaForm(ModelForm):
+
+ tipo_materia = forms.ModelChoiceField(
+ label='Matéria Legislativa',
+ required=False,
+ queryset=TipoMateriaLegislativa.objects.all(),
+ empty_label='Selecione'
+ )
+
+ numero_materia = forms.CharField(label='Número', required=False)
+
+ ano_materia = forms.CharField(label='Ano', required=False)
+
+ class Meta:
+ model = NormaJuridica
+ fields = ['tipo',
+ 'numero',
+ 'ano',
+ 'data',
+ 'esfera_federacao',
+ 'complemento',
+ 'tipo_materia',
+ 'numero_materia',
+ 'ano_materia',
+ 'data_publicacao',
+ 'veiculo_publicacao',
+ 'pagina_inicio_publicacao',
+ 'pagina_fim_publicacao',
+ 'ementa',
+ 'indexacao',
+ 'observacao',
+ 'texto_integral']
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('tipo', 4),
+ ('numero', 4),
+ ('ano', 4)])
+
+ row2 = sapl.layout.to_row(
+ [('data', 4),
+ ('esfera_federacao', 4),
+ ('complemento', 4)])
+
+ row3 = sapl.layout.to_row(
+ [('tipo_materia', 4),
+ ('numero_materia', 4),
+ ('ano_materia', 4)])
+
+ row4 = sapl.layout.to_row(
+ [('data_publicacao', 3),
+ ('veiculo_publicacao', 3),
+ ('pagina_inicio_publicacao', 3),
+ ('pagina_fim_publicacao', 3)])
+
+ row5 = sapl.layout.to_row(
+ [('texto_integral', 12)])
+
+ row6 = sapl.layout.to_row(
+ [('ementa', 12)])
+
+ row7 = sapl.layout.to_row(
+ [('indexacao', 12)])
+
+ row8 = sapl.layout.to_row(
+ [('observacao', 12)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset('Cadastro de Norma Jurídica',
+ Fieldset('Identificação Básica',
+ row1, row2, row3, row4, row5, row6, row7, row8),
+ form_actions()
+ )
+ )
+ super(NormaJuridicaForm, self).__init__(*args, **kwargs)
diff --git a/norma/views.py b/norma/views.py
index 386434477..e937446f7 100644
--- a/norma/views.py
+++ b/norma/views.py
@@ -1,23 +1,17 @@
from datetime import datetime
from re import sub
-from crispy_forms.helper import FormHelper
-from crispy_forms.layout import Fieldset, Layout
-from django import forms
from django.core.exceptions import ObjectDoesNotExist
-from django.forms import ModelForm
from django.utils.html import strip_tags
-from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
from django.views.generic.edit import FormMixin
from vanilla.views import GenericView
-import sapl
from compilacao.views import IntegracaoTaView
from materia.models import MateriaLegislativa, TipoMateriaLegislativa
from sapl.crud import build_crud
-from sapl.layout import form_actions
+from .forms import NormaJuridicaForm
from .models import (AssuntoNorma, LegislacaoCitada, NormaJuridica,
TipoNormaJuridica)
@@ -79,97 +73,6 @@ legislacao_citada_crud = build_crud(
])
-def get_esferas():
- return [('E', 'Estadual'),
- ('F', 'Federal'),
- ('M', 'Municipal')]
-
-
-class HorizontalRadioRenderer(forms.RadioSelect.renderer):
-
- def render(self):
- return mark_safe(u' '.join([u'%s ' % w for w in self]))
-
-
-class NormaJuridicaForm(ModelForm):
-
- tipo_materia = forms.ModelChoiceField(
- label='Matéria Legislativa',
- required=False,
- queryset=TipoMateriaLegislativa.objects.all(),
- empty_label='Selecione'
- )
-
- numero_materia = forms.CharField(label='Número', required=False)
-
- ano_materia = forms.CharField(label='Ano', required=False)
-
- class Meta:
- model = NormaJuridica
- fields = ['tipo',
- 'numero',
- 'ano',
- 'data',
- 'esfera_federacao',
- 'complemento',
- 'tipo_materia',
- 'numero_materia',
- 'ano_materia',
- 'data_publicacao',
- 'veiculo_publicacao',
- 'pagina_inicio_publicacao',
- 'pagina_fim_publicacao',
- 'ementa',
- 'indexacao',
- 'observacao',
- 'texto_integral']
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('tipo', 4),
- ('numero', 4),
- ('ano', 4)])
-
- row2 = sapl.layout.to_row(
- [('data', 4),
- ('esfera_federacao', 4),
- ('complemento', 4)])
-
- row3 = sapl.layout.to_row(
- [('tipo_materia', 4),
- ('numero_materia', 4),
- ('ano_materia', 4)])
-
- row4 = sapl.layout.to_row(
- [('data_publicacao', 3),
- ('veiculo_publicacao', 3),
- ('pagina_inicio_publicacao', 3),
- ('pagina_fim_publicacao', 3)])
-
- row5 = sapl.layout.to_row(
- [('texto_integral', 12)])
-
- row6 = sapl.layout.to_row(
- [('ementa', 12)])
-
- row7 = sapl.layout.to_row(
- [('indexacao', 12)])
-
- row8 = sapl.layout.to_row(
- [('observacao', 12)])
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset('Cadastro de Norma Jurídica',
- Fieldset('Identificação Básica',
- row1, row2, row3, row4, row5, row6, row7, row8),
- form_actions()
- )
- )
- super(NormaJuridicaForm, self).__init__(*args, **kwargs)
-
-
class NormaIncluirView(FormMixin, GenericView):
template_name = "norma/normajuridica_incluir.html"
diff --git a/parlamentares/forms.py b/parlamentares/forms.py
new file mode 100644
index 000000000..2918bd766
--- /dev/null
+++ b/parlamentares/forms.py
@@ -0,0 +1,324 @@
+from crispy_forms.helper import FormHelper
+from crispy_forms.layout import HTML, Fieldset, Layout, Submit
+from django import forms
+from django.forms import ModelForm
+from django.utils.safestring import mark_safe
+
+import sapl
+from sapl.layout import form_actions
+
+from .models import Dependente, Filiacao, Mandato, Parlamentar
+
+
+class ParlamentaresListForm(forms.Form):
+ periodo = forms.CharField()
+
+
+class HorizontalRadioRenderer(forms.RadioSelect.renderer):
+
+ def render(self):
+ return mark_safe(u' '.join([u'%s ' % w for w in self]))
+
+
+class ParlamentaresForm (ModelForm):
+ ativo = forms.TypedChoiceField(
+ coerce=lambda x: x == 'True',
+ choices=((True, 'Sim'), (False, 'Não')),
+ widget=forms.RadioSelect(
+ renderer=HorizontalRadioRenderer
+ )
+ )
+
+ cpf = forms.CharField(label='C.P.F',
+ required=False,
+ widget=forms.TextInput(
+ attrs={'class': 'cpf'}))
+
+ rg = forms.CharField(label='R.G.',
+ required=False,
+ widget=forms.TextInput(
+ attrs={'class': 'rg'}))
+
+ titulo_eleitor = forms.CharField(label='Título de Eleitor',
+ required=False,
+ widget=forms.TextInput(
+ attrs={'class': 'titulo_eleitor'}))
+
+ telefone = forms.CharField(label='Telefone',
+ required=False,
+ widget=forms.TextInput(
+ attrs={'class': 'telefone'}))
+
+ fax = forms.CharField(label='Fax',
+ required=False,
+ widget=forms.TextInput(
+ attrs={'class': 'telefone'}))
+
+ cep_residencia = forms.CharField(label='CEP',
+ required=False,
+ widget=forms.TextInput(
+ attrs={'class': 'cep'}))
+
+ telefone_residencia = forms.CharField(label='Telefone',
+ required=False,
+ widget=forms.TextInput(
+ attrs={'class': 'telefone'}))
+
+ fax_residencia = forms.CharField(label='Fax',
+ required=False,
+ widget=forms.TextInput(
+ attrs={'class': 'telefone'}))
+
+ fotografia = forms.ImageField(label='Fotografia',
+ required=False,
+ widget=forms.FileInput
+ )
+
+ class Meta:
+ model = Parlamentar
+ fields = ['nome_parlamentar',
+ 'ativo',
+ 'nome_completo',
+ 'nivel_instrucao',
+ 'sexo',
+ 'cpf',
+ 'rg',
+ 'titulo_eleitor',
+ 'data_nascimento',
+ 'situacao_militar',
+ 'profissao',
+ 'endereco_web',
+ 'email',
+ 'numero_gab_parlamentar',
+ 'telefone',
+ 'fax',
+ 'endereco_residencia',
+ 'cep_residencia',
+ 'municipio_residencia',
+ 'telefone_residencia',
+ 'fax_residencia',
+ 'locais_atuacao',
+ 'fotografia',
+ 'biografia']
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('nome_parlamentar', 8), ('ativo', 4)])
+
+ row2 = sapl.layout.to_row(
+ [('nome_completo', 12)])
+
+ row3 = sapl.layout.to_row(
+ [('nivel_instrucao', 4),
+ ('sexo', 4),
+ ('data_nascimento', 4)])
+
+ row4 = sapl.layout.to_row(
+ [('cpf', 4),
+ ('rg', 4),
+ ('titulo_eleitor', 4)])
+
+ row5 = sapl.layout.to_row(
+ [('situacao_militar', 6),
+ ('profissao', 6)])
+
+ row6 = sapl.layout.to_row(
+ [('endereco_web', 12)])
+
+ row7 = sapl.layout.to_row(
+ [('email', 12)])
+
+ row8 = sapl.layout.to_row(
+ [('numero_gab_parlamentar', 4),
+ ('telefone', 4),
+ ('fax', 4)])
+
+ row9 = sapl.layout.to_row(
+ [('endereco_residencia', 6),
+ ('cep_residencia', 6)])
+
+ row10 = sapl.layout.to_row(
+ [('municipio_residencia', 12)])
+
+ row11 = sapl.layout.to_row(
+ [('telefone_residencia', 6),
+ ('fax_residencia', 6)])
+
+ row12 = sapl.layout.to_row(
+ [('locais_atuacao', 12)])
+
+ row13 = sapl.layout.to_row(
+ [('fotografia', 12)])
+
+ row14 = sapl.layout.to_row(
+ [('biografia', 12)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset('Cadastro do Parlamentar',
+ row1, row2, row3, row4, row5,
+ row6, row7, row8, row9, row10,
+ row11, row12, row13,
+ HTML("""{% if form.fotografia.value %}
+
+
+
+ {% endif %}""", ),
+ row14,
+ form_actions())
+
+ )
+ super(ParlamentaresForm, self).__init__(
+ *args, **kwargs)
+
+
+class ParlamentaresEditForm(ParlamentaresForm):
+
+ def __init__(self, *args, **kwargs):
+ super(ParlamentaresEditForm, self).__init__(
+ *args, **kwargs)
+
+ self.helper.layout[0][-1:] = form_actions(more=[
+ HTML(' '),
+ Submit('excluir', 'Excluir',
+ css_class='btn btn-primary')])
+
+
+class MandatoForm(ModelForm):
+
+ class Meta:
+ model = Mandato
+ fields = ['legislatura',
+ 'coligacao',
+ 'votos_recebidos',
+ 'data_fim_mandato',
+ 'data_expedicao_diploma',
+ 'observacao']
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('legislatura', 4),
+ ('coligacao', 4),
+ ('votos_recebidos', 4)])
+
+ row2 = sapl.layout.to_row(
+ [('data_fim_mandato', 6),
+ ('data_expedicao_diploma', 6)])
+
+ row3 = sapl.layout.to_row(
+ [('observacao', 12)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset('Adicionar Mandato', row1, row2, row3,
+ form_actions())
+
+ )
+ super(MandatoForm, self).__init__(
+ *args, **kwargs)
+
+
+class MandatoEditForm(MandatoForm):
+
+ def __init__(self, *args, **kwargs):
+ super(MandatoEditForm, self).__init__(
+ *args, **kwargs)
+
+ self.helper.layout[0][-1:] = form_actions(more=[
+ HTML(' '),
+ Submit('excluir', 'Excluir',
+ css_class='btn btn-primary')])
+
+
+class DependenteForm(ModelForm):
+
+ class Meta:
+ model = Dependente
+ fields = ['nome',
+ 'data_nascimento',
+ 'tipo',
+ 'sexo',
+ 'cpf',
+ 'rg',
+ 'titulo_eleitor']
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('nome', 12)])
+
+ row2 = sapl.layout.to_row(
+ [('tipo', 4),
+ ('sexo', 4),
+ ('data_nascimento', 4)])
+
+ row3 = sapl.layout.to_row(
+ [('cpf', 4),
+ ('rg', 4),
+ ('titulo_eleitor', 4)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset('Cadastro de Dependentes',
+ row1, row2, row3,
+ form_actions())
+
+ )
+ super(DependenteForm, self).__init__(
+ *args, **kwargs)
+
+
+class DependenteEditForm(DependenteForm):
+
+ def __init__(self, *args, **kwargs):
+ super(DependenteEditForm, self).__init__(
+ *args, **kwargs)
+
+ self.helper.layout[0][-1:] = form_actions(more=[
+ HTML(' '),
+ Submit('excluir', 'Excluir',
+ css_class='btn btn-primary')])
+
+
+class FiliacaoForm(ModelForm):
+
+ class Meta:
+ model = Filiacao
+ fields = ['partido',
+ 'data',
+ 'data_desfiliacao']
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('partido', 4),
+ ('data', 4),
+ ('data_desfiliacao', 4)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset('Adicionar Filiação', row1,
+ form_actions())
+
+ )
+ super(FiliacaoForm, self).__init__(
+ *args, **kwargs)
+
+
+class FiliacaoEditForm(FiliacaoForm):
+
+ def __init__(self, *args, **kwargs):
+ super(FiliacaoEditForm, self).__init__(
+ *args, **kwargs)
+
+ self.helper.layout[0][-1:] = form_actions(more=[
+ HTML(' '),
+ Submit('excluir', 'Excluir',
+ css_class='btn btn-primary')])
diff --git a/parlamentares/views.py b/parlamentares/views.py
index bb5fd9caf..fc50d1be6 100644
--- a/parlamentares/views.py
+++ b/parlamentares/views.py
@@ -1,22 +1,19 @@
import os
from re import sub
-from crispy_forms.helper import FormHelper
-from crispy_forms.layout import HTML, Fieldset, Layout, Submit
-from django import forms
from django.contrib import messages
from django.core.urlresolvers import reverse
-from django.forms import ModelForm
from django.utils.html import strip_tags
-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
-import sapl
from sapl.crud import build_crud
-from sapl.layout import form_actions
+from .forms import (DependenteEditForm, DependenteForm, FiliacaoEditForm,
+ FiliacaoForm, MandatoEditForm, MandatoForm,
+ ParlamentaresEditForm, ParlamentaresForm,
+ ParlamentaresListForm)
from .models import (CargoMesa, Coligacao, ComposicaoMesa, Dependente,
Filiacao, Legislatura, Mandato, NivelInstrucao,
Parlamentar, Partido, SessaoLegislativa, SituacaoMilitar,
@@ -149,10 +146,6 @@ tipo_militar_crud = build_crud(
])
-class ParlamentaresListForm(forms.Form):
- periodo = forms.CharField()
-
-
class ParlamentaresView(GenericView):
template_name = "parlamentares/parlamentares_list.html"
@@ -227,182 +220,6 @@ class ParlamentaresView(GenericView):
'parlamentares': parlamentares})
-class HorizontalRadioRenderer(forms.RadioSelect.renderer):
-
- def render(self):
- return mark_safe(u' '.join([u'%s ' % w for w in self]))
-
-
-class ParlamentaresForm (ModelForm):
- ativo = forms.TypedChoiceField(
- coerce=lambda x: x == 'True',
- choices=((True, 'Sim'), (False, 'Não')),
- widget=forms.RadioSelect(
- renderer=HorizontalRadioRenderer
- )
- )
-
- cpf = forms.CharField(label='C.P.F',
- required=False,
- widget=forms.TextInput(
- attrs={'class': 'cpf'}))
-
- rg = forms.CharField(label='R.G.',
- required=False,
- widget=forms.TextInput(
- attrs={'class': 'rg'}))
-
- titulo_eleitor = forms.CharField(label='Título de Eleitor',
- required=False,
- widget=forms.TextInput(
- attrs={'class': 'titulo_eleitor'}))
-
- telefone = forms.CharField(label='Telefone',
- required=False,
- widget=forms.TextInput(
- attrs={'class': 'telefone'}))
-
- fax = forms.CharField(label='Fax',
- required=False,
- widget=forms.TextInput(
- attrs={'class': 'telefone'}))
-
- cep_residencia = forms.CharField(label='CEP',
- required=False,
- widget=forms.TextInput(
- attrs={'class': 'cep'}))
-
- telefone_residencia = forms.CharField(label='Telefone',
- required=False,
- widget=forms.TextInput(
- attrs={'class': 'telefone'}))
-
- fax_residencia = forms.CharField(label='Fax',
- required=False,
- widget=forms.TextInput(
- attrs={'class': 'telefone'}))
-
- fotografia = forms.ImageField(label='Fotografia',
- required=False,
- widget=forms.FileInput
- )
-
- class Meta:
- model = Parlamentar
- fields = ['nome_parlamentar',
- 'ativo',
- 'nome_completo',
- 'nivel_instrucao',
- 'sexo',
- 'cpf',
- 'rg',
- 'titulo_eleitor',
- 'data_nascimento',
- 'situacao_militar',
- 'profissao',
- 'endereco_web',
- 'email',
- 'numero_gab_parlamentar',
- 'telefone',
- 'fax',
- 'endereco_residencia',
- 'cep_residencia',
- 'municipio_residencia',
- 'telefone_residencia',
- 'fax_residencia',
- 'locais_atuacao',
- 'fotografia',
- 'biografia']
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('nome_parlamentar', 8), ('ativo', 4)])
-
- row2 = sapl.layout.to_row(
- [('nome_completo', 12)])
-
- row3 = sapl.layout.to_row(
- [('nivel_instrucao', 4),
- ('sexo', 4),
- ('data_nascimento', 4)])
-
- row4 = sapl.layout.to_row(
- [('cpf', 4),
- ('rg', 4),
- ('titulo_eleitor', 4)])
-
- row5 = sapl.layout.to_row(
- [('situacao_militar', 6),
- ('profissao', 6)])
-
- row6 = sapl.layout.to_row(
- [('endereco_web', 12)])
-
- row7 = sapl.layout.to_row(
- [('email', 12)])
-
- row8 = sapl.layout.to_row(
- [('numero_gab_parlamentar', 4),
- ('telefone', 4),
- ('fax', 4)])
-
- row9 = sapl.layout.to_row(
- [('endereco_residencia', 6),
- ('cep_residencia', 6)])
-
- row10 = sapl.layout.to_row(
- [('municipio_residencia', 12)])
-
- row11 = sapl.layout.to_row(
- [('telefone_residencia', 6),
- ('fax_residencia', 6)])
-
- row12 = sapl.layout.to_row(
- [('locais_atuacao', 12)])
-
- row13 = sapl.layout.to_row(
- [('fotografia', 12)])
-
- row14 = sapl.layout.to_row(
- [('biografia', 12)])
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset('Cadastro do Parlamentar',
- row1, row2, row3, row4, row5,
- row6, row7, row8, row9, row10,
- row11, row12, row13,
- HTML("""{% if form.fotografia.value %}
-
-
-
- {% endif %}""", ),
- row14,
- form_actions())
-
- )
- super(ParlamentaresForm, self).__init__(
- *args, **kwargs)
-
-
-class ParlamentaresEditForm(ParlamentaresForm):
-
- def __init__(self, *args, **kwargs):
- super(ParlamentaresEditForm, self).__init__(
- *args, **kwargs)
-
- self.helper.layout[0][-1:] = form_actions(more=[
- HTML(' '),
- Submit('excluir', 'Excluir',
- css_class='btn btn-primary')])
-
-
class ParlamentaresCadastroView(FormMixin, GenericView):
template_name = "parlamentares/parlamentares_cadastro.html"
@@ -483,56 +300,6 @@ class ParlamentaresEditarView(FormMixin, GenericView):
return self.render_to_response({'form': form})
-class DependenteForm(ModelForm):
-
- class Meta:
- model = Dependente
- fields = ['nome',
- 'data_nascimento',
- 'tipo',
- 'sexo',
- 'cpf',
- 'rg',
- 'titulo_eleitor']
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('nome', 12)])
-
- row2 = sapl.layout.to_row(
- [('tipo', 4),
- ('sexo', 4),
- ('data_nascimento', 4)])
-
- row3 = sapl.layout.to_row(
- [('cpf', 4),
- ('rg', 4),
- ('titulo_eleitor', 4)])
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset('Cadastro de Dependentes',
- row1, row2, row3,
- form_actions())
-
- )
- super(DependenteForm, self).__init__(
- *args, **kwargs)
-
-
-class DependenteEditForm(DependenteForm):
-
- def __init__(self, *args, **kwargs):
- super(DependenteEditForm, self).__init__(
- *args, **kwargs)
-
- self.helper.layout[0][-1:] = form_actions(more=[
- HTML(' '),
- Submit('excluir', 'Excluir',
- css_class='btn btn-primary')])
-
-
class ParlamentaresDependentesView(FormMixin, GenericView):
template_name = "parlamentares/parlamentares_dependentes.html"
@@ -732,43 +499,6 @@ class MesaDiretoraView(FormMixin, GenericView):
})
-class FiliacaoForm(ModelForm):
-
- class Meta:
- model = Filiacao
- fields = ['partido',
- 'data',
- 'data_desfiliacao']
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('partido', 4),
- ('data', 4),
- ('data_desfiliacao', 4)])
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset('Adicionar Filiação', row1,
- form_actions())
-
- )
- super(FiliacaoForm, self).__init__(
- *args, **kwargs)
-
-
-class FiliacaoEditForm(FiliacaoForm):
-
- def __init__(self, *args, **kwargs):
- super(FiliacaoEditForm, self).__init__(
- *args, **kwargs)
-
- self.helper.layout[0][-1:] = form_actions(more=[
- HTML(' '),
- Submit('excluir', 'Excluir',
- css_class='btn btn-primary')])
-
-
class FiliacaoView(FormMixin, GenericView):
template_name = "parlamentares/parlamentares_filiacao.html"
@@ -1005,53 +735,6 @@ class FiliacaoEditView(FormMixin, GenericView):
).legislatura_id})
-class MandatoForm(ModelForm):
-
- class Meta:
- model = Mandato
- fields = ['legislatura',
- 'coligacao',
- 'votos_recebidos',
- 'data_fim_mandato',
- 'data_expedicao_diploma',
- 'observacao']
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('legislatura', 4),
- ('coligacao', 4),
- ('votos_recebidos', 4)])
-
- row2 = sapl.layout.to_row(
- [('data_fim_mandato', 6),
- ('data_expedicao_diploma', 6)])
-
- row3 = sapl.layout.to_row(
- [('observacao', 12)])
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset('Adicionar Mandato', row1, row2, row3,
- form_actions())
-
- )
- super(MandatoForm, self).__init__(
- *args, **kwargs)
-
-
-class MandatoEditForm(MandatoForm):
-
- def __init__(self, *args, **kwargs):
- super(MandatoEditForm, self).__init__(
- *args, **kwargs)
-
- self.helper.layout[0][-1:] = form_actions(more=[
- HTML(' '),
- Submit('excluir', 'Excluir',
- css_class='btn btn-primary')])
-
-
class MandatoView(FormMixin, GenericView):
template_name = "parlamentares/parlamentares_mandato.html"
diff --git a/protocoloadm/forms.py b/protocoloadm/forms.py
new file mode 100644
index 000000000..f60ce6ed3
--- /dev/null
+++ b/protocoloadm/forms.py
@@ -0,0 +1,410 @@
+from datetime import date
+
+from crispy_forms.helper import FormHelper
+from crispy_forms.layout import HTML, Field, Fieldset, Layout
+from django import forms
+from django.forms import ModelForm
+from django.utils.safestring import mark_safe
+
+import sapl
+from materia.models import TipoMateriaLegislativa
+from sapl.layout import form_actions
+
+from .models import (Autor, DocumentoAcessorioAdministrativo,
+ TipoDocumentoAdministrativo, TramitacaoAdministrativo)
+
+
+def get_range_anos():
+ return [('', 'Selecione')] \
+ + [(year, year) for year in range(date.today().year, 1960, -1)]
+
+
+TIPOS_PROTOCOLO = [('', 'Selecione'),
+ ('0', 'Enviado'),
+ ('1', 'Recebido')]
+
+
+class HorizontalRadioRenderer(forms.RadioSelect.renderer):
+
+ def render(self):
+ return mark_safe(u' '.join([u'%s ' % w for w in self]))
+
+
+class ProtocoloForm(forms.Form):
+
+ YEARS = get_range_anos()
+
+ tipo_protocolo = forms.ChoiceField(required=False,
+ label='Tipo de Protocolo',
+ choices=TIPOS_PROTOCOLO,
+ widget=forms.Select(
+ attrs={'class': 'selector'}))
+
+ numero_protocolo = forms.CharField(
+ label='Número de Protocolo', required=False)
+ ano = forms.ChoiceField(required=False,
+ label='Ano',
+ choices=YEARS,
+ widget=forms.Select(
+ attrs={'class': 'selector'}))
+
+ inicial = forms.DateField(label='Data Inicial',
+ required=False,
+ widget=forms.TextInput(
+ attrs={'class': 'dateinput'}))
+
+ final = forms.DateField(label='Data Final', required=False,
+ widget=forms.TextInput(
+ attrs={'class': 'dateinput'}))
+
+ natureza_processo = forms.ChoiceField(required=False,
+ label='Natureza Processo',
+ choices=[
+ ('0', 'Administrativo'),
+ ('1', 'Legislativo'),
+ ('', 'Ambos')],
+ # widget=forms.RadioSelect(
+ # renderer=HorizontalRadioRenderer)
+
+ )
+
+ tipo_documento = forms.ModelChoiceField(
+ label='Tipo de Documento',
+ required=False,
+ queryset=TipoDocumentoAdministrativo.objects.all(),
+ empty_label='Selecione',
+ )
+
+ interessado = forms.CharField(label='Interessado', required=False)
+
+ tipo_materia = forms.ModelChoiceField(
+ label='Tipo de Matéria',
+ required=False,
+ queryset=TipoMateriaLegislativa.objects.all(),
+ empty_label='Selecione',
+ )
+
+ autor = forms.ModelChoiceField(
+ label='Autor',
+ required=False,
+ queryset=Autor.objects.all().order_by('tipo'),
+ empty_label='Selecione',
+ )
+
+ assunto = forms.CharField(label='Assunto', required=False)
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('numero_protocolo', 6),
+ ('ano', 6)])
+
+ row2 = sapl.layout.to_row(
+ [('inicial', 6),
+ ('final', 6)])
+
+ row3 = sapl.layout.to_row(
+ [('tipo_documento', 4),
+ ('tipo_protocolo', 4),
+ ('tipo_materia', 4)])
+
+ row4 = sapl.layout.to_row(
+ [('interessado', 4),
+ ('autor', 4),
+ ('assunto', 4)])
+
+ row5 = sapl.layout.to_row(
+ [('natureza_processo', 12)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(row1, row2,
+ row3, row4,
+ row5, form_actions(save_label='Pesquisar'))
+ super(ProtocoloForm, self).__init__(
+ *args, **kwargs)
+
+
+class AnularProcoloAdmForm(forms.Form):
+
+ YEARS = get_range_anos()
+
+ numero_protocolo = forms.CharField(
+ label='Número de Protocolo', required=True)
+ ano_protocolo = forms.ChoiceField(required=False,
+ label='Ano',
+ choices=YEARS,
+ widget=forms.Select(
+ attrs={'class': 'selector'}))
+ justificativa_anulacao = forms.CharField(
+ widget=forms.Textarea, label='Motivo', required=True)
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('numero_protocolo', 6),
+ ('ano_protocolo', 6)])
+ row2 = sapl.layout.to_row(
+ [('justificativa_anulacao', 12)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset('Identificação do Protocolo',
+ row1,
+ row2,
+ HTML(" "),
+ form_actions(save_label='Anular')
+ )
+ )
+ super(AnularProcoloAdmForm, self).__init__(
+ *args, **kwargs)
+
+
+class ProtocoloDocumentForm(forms.Form):
+
+ NUMERACAO_CHOICES = [('1', 'Sequencial por Ano'),
+ ('2', 'Sequencial Único')]
+
+ numeracao = forms.ChoiceField(required=True,
+ choices=NUMERACAO_CHOICES,
+ widget=forms.RadioSelect(
+ renderer=HorizontalRadioRenderer),
+ label='')
+
+ tipo_protocolo = forms.ChoiceField(required=True,
+ label='Tipo de Protocolo',
+ choices=TIPOS_PROTOCOLO[1:],
+ widget=forms.RadioSelect(
+ renderer=HorizontalRadioRenderer))
+
+ tipo_documento = forms.ModelChoiceField(
+ label='Tipo de Documento',
+ required=False,
+ queryset=TipoDocumentoAdministrativo.objects.all(),
+ empty_label='Selecione',
+ )
+
+ num_paginas = forms.CharField(label='Núm. Páginas', required=True)
+ assunto = forms.CharField(
+ widget=forms.Textarea, label='Assunto', required=True)
+
+ interessado = forms.CharField(required=True,
+ label='Interessado')
+
+ observacao = forms.CharField(required=True,
+ widget=forms.Textarea, label='Observação')
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('numeracao', 12)])
+ row2 = sapl.layout.to_row(
+ [('tipo_protocolo', 12)])
+ row3 = sapl.layout.to_row(
+ [('tipo_documento', 6),
+ ('num_paginas', 6)])
+ row4 = sapl.layout.to_row(
+ [('assunto', 12)])
+ row5 = sapl.layout.to_row(
+ [('interessado', 12)])
+ row6 = sapl.layout.to_row(
+ [('observacao', 12)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset('Protocolo - Opção de Numeração', row1),
+ Fieldset('Identificação de Documento',
+ row2,
+ row3,
+ row4,
+ row5,
+ row6,
+ HTML(" "),
+ form_actions(save_label='Protocolar Documento')
+ )
+ )
+ super(ProtocoloDocumentForm, self).__init__(
+ *args, **kwargs)
+
+
+class ProtocoloMateriaForm(forms.Form):
+
+ NUMERACAO_CHOICES = [('1', 'Sequencial por Ano'),
+ ('2', 'Sequencial Único')]
+
+ numeracao = forms.ChoiceField(required=True,
+ choices=NUMERACAO_CHOICES,
+ widget=forms.RadioSelect(
+ renderer=HorizontalRadioRenderer),
+ label='')
+
+ tipo_protocolo = forms.ChoiceField(required=True,
+ label='Tipo de Protocolo',
+ choices=TIPOS_PROTOCOLO[1:],
+ widget=forms.RadioSelect(
+ renderer=HorizontalRadioRenderer))
+
+ tipo_materia = forms.ModelChoiceField(
+ label='Tipo de Matéria',
+ required=False,
+ queryset=TipoMateriaLegislativa.objects.all(),
+ empty_label='Selecione',
+ )
+
+ num_paginas = forms.CharField(label='Núm. Páginas', required=True)
+ ementa = forms.CharField(
+ widget=forms.Textarea, label='Ementa', required=True)
+
+ autor = forms.ModelChoiceField(
+ label='Autor',
+ required=False,
+ queryset=Autor.objects.all().order_by('tipo'),
+ empty_label='Selecione',
+ )
+
+ observacao = forms.CharField(required=True,
+ widget=forms.Textarea,
+ label='Observação')
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('numeracao', 12)])
+ row2 = sapl.layout.to_row(
+ [('tipo_materia', 6),
+ ('num_paginas', 6)])
+ row3 = sapl.layout.to_row(
+ [('ementa', 12)])
+ row4 = sapl.layout.to_row(
+ [('autor', 12)])
+ row5 = sapl.layout.to_row(
+ [('observacao', 12)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset('Protocolo - Opção de Numeração', row1),
+ Fieldset('Identificação da Matéria',
+ row2,
+ row3,
+ row4,
+ row5,
+ HTML(" "),
+ form_actions(save_label='Protocolar Matéria')
+ )
+ )
+ super(ProtocoloMateriaForm, self).__init__(
+ *args, **kwargs)
+
+
+class ProposicaoSimpleForm(forms.Form):
+
+ tipo = forms.CharField(label='Tipo',
+ widget=forms.TextInput(
+ attrs={'readonly': 'readonly'}))
+ materia = forms.CharField(label='Matéria',
+ widget=forms.TextInput(
+ attrs={'readonly': 'readonly'}))
+ data_envio = forms.DateField(label='Data Envio',
+ widget=forms.DateInput(
+ format='%d/%m/%Y',
+ attrs={'readonly': 'readonly'}))
+ data_recebimento = forms.DateField(label='Data Recebimento',
+ widget=forms.DateInput(
+ format='%d/%m/%Y',
+ attrs={'readonly': 'readonly'}))
+
+ descricao = forms.CharField(label='Descrição',
+ widget=forms.TextInput(
+ attrs={'readonly': 'readonly'}))
+
+ numero_proposicao = forms.CharField(label='Número',
+ widget=forms.TextInput(
+ attrs={'readonly': 'readonly'}))
+ # ano = forms.CharField(label='Ano',
+ # widget = forms.TextInput(
+ # attrs={'readonly':'readonly'}))
+
+
+class DocumentoAcessorioAdministrativoForm(ModelForm):
+
+ data = forms.DateField(label=u'Data', input_formats=['%d/%m/%Y'],
+ required=False,
+ widget=forms.DateInput(format='%d/%m/%Y'))
+
+ class Meta:
+ model = DocumentoAcessorioAdministrativo
+ fields = ['tipo',
+ 'nome',
+ 'data',
+ 'autor',
+ 'arquivo',
+ 'assunto']
+
+ def __init__(self, *args, **kwargs):
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset(
+ 'Incluir Documento Acessório',
+ 'tipo',
+ 'nome',
+ 'data',
+ 'autor',
+ 'arquivo',
+ 'assunto',
+ form_actions()
+ )
+ )
+ super(DocumentoAcessorioAdministrativoForm, self).__init__(
+ *args, **kwargs)
+
+
+class TramitacaoAdmForm(ModelForm):
+
+ data_tramitacao = forms.DateField(label=u'Data Tramitação',
+ input_formats=['%d/%m/%Y'],
+ required=False,
+ widget=forms.DateInput(
+ format='%d/%m/%Y',
+ attrs={'class': 'dateinput'}))
+
+ data_encaminhamento = forms.DateField(label=u'Data Encaminhamento',
+ input_formats=['%d/%m/%Y'],
+ required=False,
+ widget=forms.DateInput(
+ format='%d/%m/%Y',
+ attrs={'class': 'dateinput'}))
+
+ data_fim_prazo = forms.DateField(label=u'Data Fim Prazo',
+ input_formats=['%d/%m/%Y'],
+ required=False,
+ widget=forms.DateInput(
+ format='%d/%m/%Y',
+ attrs={'class': 'dateinput'}))
+
+ class Meta:
+ model = TramitacaoAdministrativo
+ fields = ['data_tramitacao',
+ 'unidade_tramitacao_local',
+ 'status',
+ 'unidade_tramitacao_destino',
+ 'data_encaminhamento',
+ 'data_fim_prazo',
+ 'texto',
+ 'documento',
+ ]
+
+ def __init__(self, *args, **kwargs):
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset('Incluir Tramitação',
+ 'data_tramitacao',
+ 'unidade_tramitacao_local',
+ 'status',
+ 'unidade_tramitacao_destino',
+ 'data_encaminhamento',
+ 'data_fim_prazo',
+ 'texto'),
+ Field('documento', type="hidden"),
+ form_actions()
+ )
+ super(TramitacaoAdmForm, self).__init__(
+ *args, **kwargs)
diff --git a/protocoloadm/views.py b/protocoloadm/views.py
index 216af2f1c..cbe04404b 100644
--- a/protocoloadm/views.py
+++ b/protocoloadm/views.py
@@ -1,17 +1,13 @@
from datetime import date, datetime
from re import sub
-from crispy_forms.helper import FormHelper
-from crispy_forms.layout import HTML, Field, Fieldset, Layout
from django import forms
from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse
from django.db.models import Max
-from django.forms import ModelForm
from django.http import HttpResponseRedirect
from django.shortcuts import redirect
from django.utils.html import strip_tags
-from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
from django.views.generic import DetailView, ListView
from django.views.generic.base import TemplateView
@@ -21,8 +17,10 @@ from vanilla import GenericView
import sapl
from materia.models import Proposicao, TipoMateriaLegislativa
from sapl.crud import build_crud
-from sapl.layout import form_actions
+from .forms import (AnularProcoloAdmForm, DocumentoAcessorioAdministrativoForm,
+ ProposicaoSimpleForm, ProtocoloDocumentForm, ProtocoloForm,
+ ProtocoloMateriaForm, TramitacaoAdmForm)
from .models import (Autor, DocumentoAcessorioAdministrativo,
DocumentoAdministrativo, Protocolo,
StatusTramitacaoAdministrativo,
@@ -101,113 +99,6 @@ protocolo_materia_crud = build_crud(
])
-def get_range_anos():
- return [('', 'Selecione')] \
- + [(year, year) for year in range(date.today().year, 1960, -1)]
-
-TIPOS_PROTOCOLO = [('', 'Selecione'),
- ('0', 'Enviado'),
- ('1', 'Recebido')]
-
-
-class HorizontalRadioRenderer(forms.RadioSelect.renderer):
-
- def render(self):
- return mark_safe(u' '.join([u'%s ' % w for w in self]))
-
-
-class ProtocoloForm(forms.Form):
-
- YEARS = get_range_anos()
-
- tipo_protocolo = forms.ChoiceField(required=False,
- label='Tipo de Protocolo',
- choices=TIPOS_PROTOCOLO,
- widget=forms.Select(
- attrs={'class': 'selector'}))
-
- numero_protocolo = forms.CharField(
- label='Número de Protocolo', required=False)
- ano = forms.ChoiceField(required=False,
- label='Ano',
- choices=YEARS,
- widget=forms.Select(
- attrs={'class': 'selector'}))
-
- inicial = forms.DateField(label='Data Inicial',
- required=False,
- widget=forms.TextInput(
- attrs={'class': 'dateinput'}))
-
- final = forms.DateField(label='Data Final', required=False,
- widget=forms.TextInput(
- attrs={'class': 'dateinput'}))
-
- natureza_processo = forms.ChoiceField(required=False,
- label='Natureza Processo',
- choices=[
- ('0', 'Administrativo'),
- ('1', 'Legislativo'),
- ('', 'Ambos')],
- # widget=forms.RadioSelect(
- # renderer=HorizontalRadioRenderer)
-
- )
-
- tipo_documento = forms.ModelChoiceField(
- label='Tipo de Documento',
- required=False,
- queryset=TipoDocumentoAdministrativo.objects.all(),
- empty_label='Selecione',
- )
-
- interessado = forms.CharField(label='Interessado', required=False)
-
- tipo_materia = forms.ModelChoiceField(
- label='Tipo de Matéria',
- required=False,
- queryset=TipoMateriaLegislativa.objects.all(),
- empty_label='Selecione',
- )
-
- autor = forms.ModelChoiceField(
- label='Autor',
- required=False,
- queryset=Autor.objects.all().order_by('tipo'),
- empty_label='Selecione',
- )
-
- assunto = forms.CharField(label='Assunto', required=False)
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('numero_protocolo', 6),
- ('ano', 6)])
-
- row2 = sapl.layout.to_row(
- [('inicial', 6),
- ('final', 6)])
-
- row3 = sapl.layout.to_row(
- [('tipo_documento', 4),
- ('tipo_protocolo', 4),
- ('tipo_materia', 4)])
-
- row4 = sapl.layout.to_row(
- [('interessado', 4),
- ('autor', 4),
- ('assunto', 4)])
-
- row5 = sapl.layout.to_row(
- [('natureza_processo', 12)])
-
- self.helper = FormHelper()
- self.helper.layout = Layout(row1, row2, row3, row4, row5, form_actions(save_label='Pesquisar'))
- super(ProtocoloForm, self).__init__(
- *args, **kwargs)
-
-
class ProtocoloListView(FormMixin, ListView):
template_name = 'protocoloadm/protocolo_list.html'
context_object_name = 'protocolos'
@@ -303,41 +194,6 @@ class ProtocoloPesquisaView(FormMixin, GenericView):
return self.form_invalid(form)
-class AnularProcoloAdmForm(forms.Form):
-
- YEARS = get_range_anos()
-
- numero_protocolo = forms.CharField(
- label='Número de Protocolo', required=True)
- ano_protocolo = forms.ChoiceField(required=False,
- label='Ano',
- choices=YEARS,
- widget=forms.Select(
- attrs={'class': 'selector'}))
- justificativa_anulacao = forms.CharField(
- widget=forms.Textarea, label='Motivo', required=True)
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('numero_protocolo', 6),
- ('ano_protocolo', 6)])
- row2 = sapl.layout.to_row(
- [('justificativa_anulacao', 12)])
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset('Identificação do Protocolo',
- row1,
- row2,
- HTML(" "),
- form_actions(save_label='Anular')
- )
- )
- super(AnularProcoloAdmForm, self).__init__(
- *args, **kwargs)
-
-
def get_client_ip(request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
@@ -398,73 +254,6 @@ class AnularProtocoloAdmView(FormMixin, GenericView):
return self.form_invalid(form)
-class ProtocoloDocumentForm(forms.Form):
-
- NUMERACAO_CHOICES = [('1', 'Sequencial por Ano'),
- ('2', 'Sequencial Único')]
-
- numeracao = forms.ChoiceField(required=True,
- choices=NUMERACAO_CHOICES,
- widget=forms.RadioSelect(
- renderer=HorizontalRadioRenderer),
- label='')
-
- tipo_protocolo = forms.ChoiceField(required=True,
- label='Tipo de Protocolo',
- choices=TIPOS_PROTOCOLO[1:],
- widget=forms.RadioSelect(
- renderer=HorizontalRadioRenderer))
-
- tipo_documento = forms.ModelChoiceField(
- label='Tipo de Documento',
- required=False,
- queryset=TipoDocumentoAdministrativo.objects.all(),
- empty_label='Selecione',
- )
-
- num_paginas = forms.CharField(label='Núm. Páginas', required=True)
- assunto = forms.CharField(
- widget=forms.Textarea, label='Assunto', required=True)
-
- interessado = forms.CharField(required=True,
- label='Interessado')
-
- observacao = forms.CharField(required=True,
- widget=forms.Textarea, label='Observação')
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('numeracao', 12)])
- row2 = sapl.layout.to_row(
- [('tipo_protocolo', 12)])
- row3 = sapl.layout.to_row(
- [('tipo_documento', 6),
- ('num_paginas', 6)])
- row4 = sapl.layout.to_row(
- [('assunto', 12)])
- row5 = sapl.layout.to_row(
- [('interessado', 12)])
- row6 = sapl.layout.to_row(
- [('observacao', 12)])
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset('Protocolo - Opção de Numeração', row1),
- Fieldset('Identificação de Documento',
- row2,
- row3,
- row4,
- row5,
- row6,
- HTML(" "),
- form_actions(save_label='Protocolar Documento')
- )
- )
- super(ProtocoloDocumentForm, self).__init__(
- *args, **kwargs)
-
-
class ProtocoloDocumentoView(FormMixin, GenericView):
template_name = "protocoloadm/protocolar_documento.html"
@@ -513,75 +302,6 @@ class ProtocoloDocumentoView(FormMixin, GenericView):
return self.form_invalid(form)
-class ProtocoloMateriaForm(forms.Form):
-
- NUMERACAO_CHOICES = [('1', 'Sequencial por Ano'),
- ('2', 'Sequencial Único')]
-
- numeracao = forms.ChoiceField(required=True,
- choices=NUMERACAO_CHOICES,
- widget=forms.RadioSelect(
- renderer=HorizontalRadioRenderer),
- label='')
-
- tipo_protocolo = forms.ChoiceField(required=True,
- label='Tipo de Protocolo',
- choices=TIPOS_PROTOCOLO[1:],
- widget=forms.RadioSelect(
- renderer=HorizontalRadioRenderer))
-
- tipo_materia = forms.ModelChoiceField(
- label='Tipo de Matéria',
- required=False,
- queryset=TipoMateriaLegislativa.objects.all(),
- empty_label='Selecione',
- )
-
- num_paginas = forms.CharField(label='Núm. Páginas', required=True)
- ementa = forms.CharField(
- widget=forms.Textarea, label='Ementa', required=True)
-
- autor = forms.ModelChoiceField(
- label='Autor',
- required=False,
- queryset=Autor.objects.all().order_by('tipo'),
- empty_label='Selecione',
- )
-
- observacao = forms.CharField(required=True,
- widget=forms.Textarea,
- label='Observação')
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('numeracao', 12)])
- row2 = sapl.layout.to_row(
- [('tipo_materia', 6),
- ('num_paginas', 6)])
- row3 = sapl.layout.to_row(
- [('ementa', 12)])
- row4 = sapl.layout.to_row(
- [('autor', 12)])
- row5 = sapl.layout.to_row(
- [('observacao', 12)])
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset('Protocolo - Opção de Numeração', row1),
- Fieldset('Identificação da Matéria',
- row2,
- row3,
- row4,
- row5,
- HTML(" "),
- form_actions(save_label='Protocolar Matéria')
- )
- )
- super(ProtocoloMateriaForm, self).__init__(
- *args, **kwargs)
-
-
class ProtocoloMostrarView(TemplateView):
template_name = "protocoloadm/protocolo_mostrar.html"
@@ -678,35 +398,6 @@ class ProposicoesIncorporadasView(ListView):
status='I')
-class ProposicaoSimpleForm(forms.Form):
-
- tipo = forms.CharField(label='Tipo',
- widget=forms.TextInput(
- attrs={'readonly': 'readonly'}))
- materia = forms.CharField(label='Matéria',
- widget=forms.TextInput(
- attrs={'readonly': 'readonly'}))
- data_envio = forms.DateField(label='Data Envio',
- widget=forms.DateInput(
- format='%d/%m/%Y',
- attrs={'readonly': 'readonly'}))
- data_recebimento = forms.DateField(label='Data Recebimento',
- widget=forms.DateInput(
- format='%d/%m/%Y',
- attrs={'readonly': 'readonly'}))
-
- descricao = forms.CharField(label='Descrição',
- widget=forms.TextInput(
- attrs={'readonly': 'readonly'}))
-
- numero_proposicao = forms.CharField(label='Número',
- widget=forms.TextInput(
- attrs={'readonly': 'readonly'}))
- # ano = forms.CharField(label='Ano',
- # widget = forms.TextInput(
- # attrs={'readonly':'readonly'}))
-
-
class ProposicaoView(TemplateView):
template_name = "protocoloadm/proposicoes.html"
@@ -860,44 +551,11 @@ class DetailDocumentoAdministrativo(DetailView):
return reverse('pesq_doc_adm')
-class ModelFormDocumentoAcessorioAdministrativo(ModelForm):
-
- data = forms.DateField(label=u'Data', input_formats=['%d/%m/%Y'],
- required=False,
- widget=forms.DateInput(format='%d/%m/%Y'))
-
- class Meta:
- model = DocumentoAcessorioAdministrativo
- fields = ['tipo',
- 'nome',
- 'data',
- 'autor',
- 'arquivo',
- 'assunto']
-
- def __init__(self, *args, **kwargs):
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset(
- 'Incluir Documento Acessório',
- 'tipo',
- 'nome',
- 'data',
- 'autor',
- 'arquivo',
- 'assunto',
- form_actions()
- )
- )
- super(ModelFormDocumentoAcessorioAdministrativo, self).__init__(
- *args, **kwargs)
-
-
class DocumentoAcessorioAdministrativoView(FormMixin, GenericView):
template_name = "protocoloadm/documento_acessorio_administrativo.html"
def get(self, request, *args, **kwargs):
- form = ModelFormDocumentoAcessorioAdministrativo()
+ form = DocumentoAcessorioAdministrativoForm()
doc = DocumentoAdministrativo.objects.get(
id=kwargs['pk'])
doc_ace_null = ''
@@ -915,7 +573,7 @@ class DocumentoAcessorioAdministrativoView(FormMixin, GenericView):
'form': form})
def post(self, request, *args, **kwargs):
- form = ModelFormDocumentoAcessorioAdministrativo(request.POST)
+ form = DocumentoAcessorioAdministrativoForm(request.POST)
if form.is_valid():
doc_acessorio = DocumentoAcessorioAdministrativo()
doc_acessorio.tipo = form.cleaned_data['tipo']
@@ -951,59 +609,6 @@ class TramitacaoAdmView(FormMixin, GenericView):
'tramitacoes': tramitacoes})
-class TramitacaoAdmForm(ModelForm):
-
- data_tramitacao = forms.DateField(label=u'Data Tramitação',
- input_formats=['%d/%m/%Y'],
- required=False,
- widget=forms.DateInput(
- format='%d/%m/%Y',
- attrs={'class': 'dateinput'}))
-
- data_encaminhamento = forms.DateField(label=u'Data Encaminhamento',
- input_formats=['%d/%m/%Y'],
- required=False,
- widget=forms.DateInput(
- format='%d/%m/%Y',
- attrs={'class': 'dateinput'}))
-
- data_fim_prazo = forms.DateField(label=u'Data Fim Prazo',
- input_formats=['%d/%m/%Y'],
- required=False,
- widget=forms.DateInput(
- format='%d/%m/%Y',
- attrs={'class': 'dateinput'}))
-
- class Meta:
- model = TramitacaoAdministrativo
- fields = ['data_tramitacao',
- 'unidade_tramitacao_local',
- 'status',
- 'unidade_tramitacao_destino',
- 'data_encaminhamento',
- 'data_fim_prazo',
- 'texto',
- 'documento',
- ]
-
- def __init__(self, *args, **kwargs):
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset('Incluir Tramitação',
- 'data_tramitacao',
- 'unidade_tramitacao_local',
- 'status',
- 'unidade_tramitacao_destino',
- 'data_encaminhamento',
- 'data_fim_prazo',
- 'texto'),
- Field('documento', type="hidden"),
- form_actions()
- )
- super(TramitacaoAdmForm, self).__init__(
- *args, **kwargs)
-
-
class TramitacaoAdmIncluirView(FormMixin, GenericView):
template_name = "protocoloadm/tramitacao_incluir.html"
diff --git a/relatorios/views.py b/relatorios/views.py
index 9d16e48fb..5de742afb 100644
--- a/relatorios/views.py
+++ b/relatorios/views.py
@@ -3,8 +3,8 @@ from datetime import datetime
from bs4 import BeautifulSoup
from django.http import HttpResponse
+from base.forms import ESTADOS
from base.models import CasaLegislativa
-from base.views import ESTADOS
from comissoes.models import Comissao
from materia.models import (Autor, Autoria, MateriaLegislativa, Numeracao,
Tramitacao, UnidadeTramitacao)
diff --git a/sessao/forms.py b/sessao/forms.py
new file mode 100644
index 000000000..c437a7cff
--- /dev/null
+++ b/sessao/forms.py
@@ -0,0 +1,159 @@
+from crispy_forms.helper import FormHelper
+from crispy_forms.layout import Column, Fieldset, Layout
+from django import forms
+from django.forms import ModelForm
+
+import sapl
+from sapl.layout import form_actions
+
+from .models import AcompanharMateria, SessaoPlenaria
+
+
+class PresencaForm(forms.Form):
+ presenca = forms.CharField(required=False, initial=False)
+ parlamentar = forms.CharField(required=False, max_length=20)
+
+
+class VotacaoNominalForm(forms.Form):
+ pass
+
+
+class ListMateriaForm(forms.Form):
+ error_message = forms.CharField(required=False, label='votacao_aberta')
+
+
+class MateriaOrdemDiaForm(forms.Form):
+ data_sessao = forms.CharField(required=True, label='Data da Sessão')
+ numero_ordem = forms.IntegerField(required=True, label='Número Ordem')
+ tipo_votacao = forms.IntegerField(required=True, label='Tipo Votação')
+ tipo_sessao = forms.IntegerField(required=True, label='Tipo da Sessão')
+ ano_materia = forms.IntegerField(required=True, label='Ano Matéria')
+ numero_materia = forms.IntegerField(required=True, label='Número Matéria')
+ tipo_materia = forms.IntegerField(required=True, label='Tipo Matéria')
+ observacao = forms.CharField(required=False, label='Ementa')
+ error_message = forms.CharField(required=False, label='Matéria')
+
+
+class OradorForm(forms.Form):
+ numero_ordem = forms.IntegerField(
+ required=True,
+ label='Ordem de pronunciamento')
+ parlamentar = forms.CharField(required=False, max_length=20)
+ url_discurso = forms.CharField(required=False, max_length=100)
+
+
+class OradorDeleteForm(forms.Form):
+ pass
+
+
+class MesaForm(forms.Form):
+ parlamentar = forms.IntegerField(required=True)
+ cargo = forms.IntegerField(required=True)
+
+
+class ExpedienteForm(forms.Form):
+ conteudo = forms.CharField(required=False, widget=forms.Textarea)
+
+
+class VotacaoForm(forms.Form):
+ votos_sim = forms.CharField(required=True, label='Sim')
+ votos_nao = forms.CharField(required=True, label='Não')
+ abstencoes = forms.CharField(required=True, label='Abstenções')
+ total_votos = forms.CharField(required=False, label='total')
+
+
+class VotacaoEditForm(forms.Form):
+ pass
+
+
+class AcompanharMateriaForm(ModelForm):
+
+ class Meta:
+ model = AcompanharMateria
+ fields = ['email']
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row([('email', 10)])
+
+ row1.append(
+ Column(form_actions(save_label='Cadastrar'), css_class='col-md-2')
+ )
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset(
+ 'Acompanhamento de Matéria por e-mail', row1
+ )
+ )
+ super(AcompanharMateriaForm, self).__init__(*args, **kwargs)
+
+
+class SessaoForm(ModelForm):
+
+ hora_inicio = forms.CharField(label='Horário Inicio',
+ required=True,
+ widget=forms.TextInput(
+ attrs={'class': 'hora'}))
+
+ hora_fim = forms.CharField(label='Horário Fim',
+ required=True,
+ widget=forms.TextInput(
+ attrs={'class': 'hora'}))
+
+ class Meta:
+ model = SessaoPlenaria
+ fields = ['numero',
+ 'tipo',
+ 'legislatura',
+ 'sessao_legislativa',
+ 'data_inicio',
+ 'hora_inicio',
+ 'iniciada',
+ 'data_fim',
+ 'hora_fim',
+ 'finalizada',
+ 'upload_pauta',
+ 'upload_ata',
+ 'url_audio',
+ 'url_video']
+
+ def __init__(self, *args, **kwargs):
+
+ row1 = sapl.layout.to_row(
+ [('numero', 3),
+ ('tipo', 3),
+ ('legislatura', 3),
+ ('sessao_legislativa', 3)])
+
+ row2 = sapl.layout.to_row(
+ [('data_inicio', 4),
+ ('hora_inicio', 4),
+ ('iniciada', 4)])
+
+ row3 = sapl.layout.to_row(
+ [('data_fim', 4),
+ ('hora_fim', 4),
+ ('finalizada', 4)])
+
+ row4 = sapl.layout.to_row(
+ [('upload_pauta', 6),
+ ('upload_ata', 6)])
+
+ row5 = sapl.layout.to_row(
+ [('url_audio', 6),
+ ('url_video', 6)])
+
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset(
+ 'Dados Básicos',
+ row1,
+ row2,
+ row3,
+ row4,
+ row5,
+ form_actions()
+ )
+ )
+ super(SessaoForm, self).__init__(*args, **kwargs)
diff --git a/sessao/views.py b/sessao/views.py
index 86e1cf05f..d7a0a9c21 100644
--- a/sessao/views.py
+++ b/sessao/views.py
@@ -1,12 +1,8 @@
from datetime import datetime
from re import sub
-from crispy_forms.helper import FormHelper
-from crispy_forms.layout import Column, Fieldset, Layout
-from django import forms
from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse
-from django.forms import ModelForm
from django.forms.util import ErrorList
from django.utils.html import strip_tags
from django.utils.translation import ugettext_lazy as _
@@ -20,9 +16,12 @@ from materia.models import (Autoria, DocumentoAcessorio,
from norma.models import NormaJuridica
from parlamentares.models import Parlamentar
from sapl.crud import build_crud
-from sapl.layout import form_actions
from sessao.serializers import SessaoPlenariaSerializer
+from .forms import (AcompanharMateriaForm, ExpedienteForm, ListMateriaForm,
+ MateriaOrdemDiaForm, MesaForm, OradorDeleteForm,
+ OradorForm, PresencaForm, SessaoForm, VotacaoEditForm,
+ VotacaoForm, VotacaoNominalForm)
from .models import (AcompanharMateria, CargoMesa, ExpedienteMateria,
ExpedienteSessao, IntegranteMesa, MateriaLegislativa,
Orador, OradorExpediente, OrdemDia, PresencaOrdemDia,
@@ -104,11 +103,6 @@ registro_votacao_crud = build_crud(
])
-class PresencaForm(forms.Form):
- presenca = forms.CharField(required=False, initial=False)
- parlamentar = forms.CharField(required=False, max_length=20)
-
-
class PresencaView(FormMixin, sessao_crud.CrudDetailView):
template_name = 'sessao/presenca.html'
form_class = PresencaForm
@@ -219,10 +213,6 @@ class PresencaOrdemDiaView(FormMixin, sessao_crud.CrudDetailView):
return reverse('sessaoplenaria:presencaordemdia', kwargs={'pk': pk})
-class ListMateriaForm(forms.Form):
- error_message = forms.CharField(required=False, label='votacao_aberta')
-
-
class ListMateriaOrdemDiaView(sessao_crud.CrudDetailView):
template_name = 'sessao/materia_ordemdia_list.html'
form_class = ListMateriaForm
@@ -426,18 +416,6 @@ class ListExpedienteOrdemDiaView(sessao_crud.CrudDetailView):
return self.get(self, request, args, kwargs)
-class MateriaOrdemDiaForm(forms.Form):
- data_sessao = forms.CharField(required=True, label='Data da Sessão')
- numero_ordem = forms.IntegerField(required=True, label='Número Ordem')
- tipo_votacao = forms.IntegerField(required=True, label='Tipo Votação')
- tipo_sessao = forms.IntegerField(required=True, label='Tipo da Sessão')
- ano_materia = forms.IntegerField(required=True, label='Ano Matéria')
- numero_materia = forms.IntegerField(required=True, label='Número Matéria')
- tipo_materia = forms.IntegerField(required=True, label='Tipo Matéria')
- observacao = forms.CharField(required=False, label='Ementa')
- error_message = forms.CharField(required=False, label='Matéria')
-
-
class MateriaOrdemDiaView(FormMixin, sessao_crud.CrudDetailView):
template_name = 'sessao/materia_ordemdia.html'
form_class = MateriaOrdemDiaForm
@@ -761,18 +739,6 @@ class EditExpedienteOrdemDiaView(FormMixin, sessao_crud.CrudDetailView):
kwargs={'pk': pk})
-class OradorForm(forms.Form):
- numero_ordem = forms.IntegerField(
- required=True,
- label='Ordem de pronunciamento')
- parlamentar = forms.CharField(required=False, max_length=20)
- url_discurso = forms.CharField(required=False, max_length=100)
-
-
-class OradorDeleteForm(forms.Form):
- pass
-
-
class OradorExpedienteDelete(FormMixin, sessao_crud.CrudDetailView):
template_name = 'sessao/delete_orador.html'
form_class = OradorDeleteForm
@@ -928,11 +894,6 @@ class OradorExpedienteView(FormMixin, sessao_crud.CrudDetailView):
return reverse('sessaoplenaria:oradorexpediente', kwargs={'pk': pk})
-class MesaForm(forms.Form):
- parlamentar = forms.IntegerField(required=True)
- cargo = forms.IntegerField(required=True)
-
-
class MesaView(FormMixin, sessao_crud.CrudDetailView):
template_name = 'sessao/mesa.html'
form_class = MesaForm
@@ -1198,10 +1159,6 @@ class ResumoView(FormMixin, sessao_crud.CrudDetailView):
return self.render_to_response(context)
-class ExpedienteForm(forms.Form):
- conteudo = forms.CharField(required=False, widget=forms.Textarea)
-
-
class ExpedienteView(FormMixin, sessao_crud.CrudDetailView):
template_name = 'sessao/expediente.html'
form_class = ExpedienteForm
@@ -1419,17 +1376,6 @@ class ExplicacaoEdit(FormMixin, sessao_crud.CrudDetailView):
return reverse('sessaoplenaria:explicacao', kwargs={'pk': pk})
-class VotacaoForm(forms.Form):
- votos_sim = forms.CharField(required=True, label='Sim')
- votos_nao = forms.CharField(required=True, label='Não')
- abstencoes = forms.CharField(required=True, label='Abstenções')
- total_votos = forms.CharField(required=False, label='total')
-
-
-class VotacaoEdit(forms.Form):
- pass
-
-
class VotacaoEditView(FormMixin, sessao_crud.CrudDetailView):
'''
@@ -1441,7 +1387,7 @@ class VotacaoEditView(FormMixin, sessao_crud.CrudDetailView):
def post(self, request, *args, **kwargs):
self.object = self.get_object()
- form = VotacaoEdit(request.POST)
+ form = VotacaoEditForm(request.POST)
materia_id = kwargs['oid']
ordem_id = kwargs['mid']
@@ -1621,10 +1567,6 @@ class VotacaoView(FormMixin, sessao_crud.CrudDetailView):
kwargs={'pk': pk})
-class VotacaoNominalForm(forms.Form):
- pass
-
-
class VotacaoNominalView(FormMixin, sessao_crud.CrudDetailView):
template_name = 'sessao/votacao/nominal.html'
@@ -1790,7 +1732,7 @@ class VotacaoNominalEditView(FormMixin, sessao_crud.CrudDetailView):
def post(self, request, *args, **kwargs):
self.object = self.get_object()
- form = VotacaoEdit(request.POST)
+ form = VotacaoEditForm(request.POST)
materia_id = kwargs['oid']
ordem_id = kwargs['mid']
@@ -1992,7 +1934,7 @@ class VotacaoNominalExpedienteEditView(FormMixin, sessao_crud.CrudDetailView):
def post(self, request, *args, **kwargs):
self.object = self.get_object()
- form = VotacaoEdit(request.POST)
+ form = VotacaoEditForm(request.POST)
materia_id = kwargs['oid']
expediente_id = kwargs['mid']
@@ -2208,7 +2150,7 @@ class VotacaoExpedienteEditView(FormMixin, sessao_crud.CrudDetailView):
def post(self, request, *args, **kwargs):
self.object = self.get_object()
- form = VotacaoEdit(request.POST)
+ form = VotacaoEditForm(request.POST)
materia_id = kwargs['oid']
expediente_id = kwargs['mid']
@@ -2347,76 +2289,6 @@ class PautaSessaoDetailView(sessao_crud.CrudDetailView):
return self.render_to_response(context)
-class SessaoForm(ModelForm):
-
- hora_inicio = forms.CharField(label='Horário Inicio',
- required=True,
- widget=forms.TextInput(
- attrs={'class': 'hora'}))
-
- hora_fim = forms.CharField(label='Horário Fim',
- required=True,
- widget=forms.TextInput(
- attrs={'class': 'hora'}))
-
- class Meta:
- model = SessaoPlenaria
- fields = ['numero',
- 'tipo',
- 'legislatura',
- 'sessao_legislativa',
- 'data_inicio',
- 'hora_inicio',
- 'iniciada',
- 'data_fim',
- 'hora_fim',
- 'finalizada',
- 'upload_pauta',
- 'upload_ata',
- 'url_audio',
- 'url_video']
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row(
- [('numero', 3),
- ('tipo', 3),
- ('legislatura', 3),
- ('sessao_legislativa', 3)])
-
- row2 = sapl.layout.to_row(
- [('data_inicio', 4),
- ('hora_inicio', 4),
- ('iniciada', 4)])
-
- row3 = sapl.layout.to_row(
- [('data_fim', 4),
- ('hora_fim', 4),
- ('finalizada', 4)])
-
- row4 = sapl.layout.to_row(
- [('upload_pauta', 6),
- ('upload_ata', 6)])
-
- row5 = sapl.layout.to_row(
- [('url_audio', 6),
- ('url_video', 6)])
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset(
- 'Dados Básicos',
- row1,
- row2,
- row3,
- row4,
- row5,
- form_actions()
- )
- )
- super(SessaoForm, self).__init__(*args, **kwargs)
-
-
class SessaoCadastroView(FormMixin, sessao_crud.CrudDetailView):
template_name = "sessao/sessao_cadastro.html"
@@ -2492,29 +2364,6 @@ class PautaOrdemDetail(sessao_crud.CrudDetailView):
'tramitacao': tramitacao})
-class AcompanharMateriaForm(ModelForm):
-
- class Meta:
- model = AcompanharMateria
- fields = ['email']
-
- def __init__(self, *args, **kwargs):
-
- row1 = sapl.layout.to_row([('email', 10)])
-
- row1.append(
- Column(form_actions(save_label='Cadastrar'), css_class='col-md-2')
- )
-
- self.helper = FormHelper()
- self.helper.layout = Layout(
- Fieldset(
- 'Acompanhamento de Matéria por e-mail', row1
- )
- )
- super(AcompanharMateriaForm, self).__init__(*args, **kwargs)
-
-
class AcompanharMateriaView(FormMixin, sessao_crud.CrudDetailView):
template_name = "sessao/pauta/acompanhar_materia.html"