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)