Browse Source

Refatora protocolar documento e adiciona campo para buscar autor

pull/258/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
6ad41b1ed8
  1. 119
      protocoloadm/forms.py
  2. 9
      protocoloadm/views.py
  3. 12
      templates/protocoloadm/protocolo_list.html

119
protocoloadm/forms.py

@ -1,5 +1,7 @@
from datetime import date
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Field, Fieldset, Layout, Submit from crispy_forms.layout import HTML, Button, Field, Fieldset, Layout, Submit
from django import forms from django import forms
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.forms import ModelForm from django.forms import ModelForm
@ -7,6 +9,7 @@ from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
import crispy_layout_mixin import crispy_layout_mixin
import sapl
from crispy_layout_mixin import form_actions from crispy_layout_mixin import form_actions
from materia.models import TipoMateriaLegislativa from materia.models import TipoMateriaLegislativa
from sapl.utils import RANGE_ANOS from sapl.utils import RANGE_ANOS
@ -22,6 +25,11 @@ NATUREZA_PROCESSO = [('0', 'Administrativo'),
('', 'Ambos')] ('', 'Ambos')]
def get_range_anos():
return [('', 'Selecione')] \
+ [(year, year) for year in range(date.today().year, 1960, -1)]
class HorizontalRadioRenderer(forms.RadioSelect.renderer): class HorizontalRadioRenderer(forms.RadioSelect.renderer):
def render(self): def render(self):
@ -30,39 +38,41 @@ class HorizontalRadioRenderer(forms.RadioSelect.renderer):
class ProtocoloForm(forms.Form): class ProtocoloForm(forms.Form):
YEARS = get_range_anos()
tipo_protocolo = forms.ChoiceField(required=False, tipo_protocolo = forms.ChoiceField(required=False,
label=_('Tipo de Protocolo'), label='Tipo de Protocolo',
choices=TIPOS_PROTOCOLO, choices=TIPOS_PROTOCOLO,
widget=forms.Select( widget=forms.Select(
attrs={'class': 'selector'})) attrs={'class': 'selector'}))
numero_protocolo = forms.CharField( numero_protocolo = forms.CharField(
label=_('Número de Protocolo'), required=False) label='Número de Protocolo', required=False)
ano = forms.ChoiceField(required=False, ano = forms.ChoiceField(required=False,
label='Ano', label='Ano',
choices=RANGE_ANOS, choices=YEARS,
widget=forms.Select( widget=forms.Select(
attrs={'class': 'selector'})) attrs={'class': 'selector'}))
inicial = forms.DateField(label=_('Data Inicial'), inicial = forms.DateField(label='Data Inicial',
required=False, required=False,
widget=forms.TextInput( widget=forms.TextInput(
attrs={'class': 'dateinput'})) attrs={'class': 'dateinput'}))
final = forms.DateField(label=_('Data Final'), required=False, final = forms.DateField(label='Data Final', required=False,
widget=forms.TextInput( widget=forms.TextInput(
attrs={'class': 'dateinput'})) attrs={'class': 'dateinput'}))
natureza_processo = forms.ChoiceField(required=False, natureza_processo = forms.ChoiceField(required=False,
label=_('Natureza Processo'), label='Natureza Processo',
choices=NATUREZA_PROCESSO, choices=[
# widget=forms.RadioSelect( ('0', 'Administrativo'),
# renderer=HorizontalRadioRenderer) ('1', 'Legislativo'),
('', 'Ambos')])
)
tipo_documento = forms.ModelChoiceField( tipo_documento = forms.ModelChoiceField(
label=_('Tipo de Documento'), label='Tipo de Documento',
required=False, required=False,
queryset=TipoDocumentoAdministrativo.objects.all(), queryset=TipoDocumentoAdministrativo.objects.all(),
empty_label='Selecione', empty_label='Selecione',
@ -71,18 +81,13 @@ class ProtocoloForm(forms.Form):
interessado = forms.CharField(label='Interessado', required=False) interessado = forms.CharField(label='Interessado', required=False)
tipo_materia = forms.ModelChoiceField( tipo_materia = forms.ModelChoiceField(
label=_('Tipo de Matéria'), label='Tipo de Matéria',
required=False, required=False,
queryset=TipoMateriaLegislativa.objects.all(), queryset=TipoMateriaLegislativa.objects.all(),
empty_label='Selecione', empty_label='Selecione',
) )
autor = forms.ModelChoiceField( autor = forms.CharField(widget=forms.HiddenInput(), required=False)
label='Autor',
required=False,
queryset=Autor.objects.all().order_by('tipo'),
empty_label='Selecione',
)
assunto = forms.CharField(label='Assunto', required=False) assunto = forms.CharField(label='Assunto', required=False)
@ -102,17 +107,30 @@ class ProtocoloForm(forms.Form):
('tipo_materia', 4)]) ('tipo_materia', 4)])
row4 = crispy_layout_mixin.to_row( row4 = crispy_layout_mixin.to_row(
[('interessado', 4), [('interessado', 6),
('autor', 4), ('assunto', 6)])
('assunto', 4)])
row5 = crispy_layout_mixin.to_row( row5 = crispy_layout_mixin.to_row(
[('autor', 0),
(Button('pesquisar',
'Pesquisar Autor',
css_class='btn btn-primary btn-sm'), 2),
(Button('limpar',
'Limpar Autor',
css_class='btn btn-primary btn-sm'), 10)])
row6 = crispy_layout_mixin.to_row(
[('natureza_processo', 12)]) [('natureza_processo', 12)])
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout(row1, row2, self.helper.layout = Layout(Fieldset(_('Pesquisar Protocolo'),
row1, row2,
row3, row4, row3, row4,
row5, form_actions(save_label='Pesquisar')) HTML(sapl.utils.autor_label),
HTML(sapl.utils.autor_modal),
row5,
row6,
form_actions(save_label='Pesquisar')))
super(ProtocoloForm, self).__init__( super(ProtocoloForm, self).__init__(
*args, **kwargs) *args, **kwargs)
@ -203,7 +221,7 @@ class ProtocoloDocumentForm(ModelForm):
tipo_protocolo = forms.ChoiceField(required=True, tipo_protocolo = forms.ChoiceField(required=True,
label=_('Tipo de Protocolo'), label=_('Tipo de Protocolo'),
choices=TIPOS_PROTOCOLO[1:], choices=TIPOS_PROTOCOLO,
widget=forms.RadioSelect( widget=forms.RadioSelect(
renderer=HorizontalRadioRenderer)) renderer=HorizontalRadioRenderer))
@ -268,10 +286,10 @@ class ProtocoloDocumentForm(ModelForm):
*args, **kwargs) *args, **kwargs)
class ProtocoloMateriaForm(ModelForm): class ProtocoloMateriaForm(forms.Form):
NUMERACAO_CHOICES = [('1', _('Sequencial por Ano')), NUMERACAO_CHOICES = [('1', 'Sequencial por Ano'),
('2', _('Sequencial Único'))] ('2', 'Sequencial Único')]
numeracao = forms.ChoiceField(required=True, numeracao = forms.ChoiceField(required=True,
choices=NUMERACAO_CHOICES, choices=NUMERACAO_CHOICES,
@ -280,44 +298,28 @@ class ProtocoloMateriaForm(ModelForm):
label='') label='')
tipo_protocolo = forms.ChoiceField(required=True, tipo_protocolo = forms.ChoiceField(required=True,
label=_('Tipo de Protocolo'), label='Tipo de Protocolo',
choices=TIPOS_PROTOCOLO[1:], choices=TIPOS_PROTOCOLO,
widget=forms.RadioSelect( widget=forms.RadioSelect(
renderer=HorizontalRadioRenderer)) renderer=HorizontalRadioRenderer))
tipo_materia = forms.ModelChoiceField( tipo_materia = forms.ModelChoiceField(
label=_('Tipo de Matéria'), label='Tipo de Matéria',
required=False, required=False,
queryset=TipoMateriaLegislativa.objects.all(), queryset=TipoMateriaLegislativa.objects.all(),
empty_label='Selecione', empty_label='Selecione',
) )
num_paginas = forms.CharField(label=_('Núm. Páginas'), required=True) num_paginas = forms.CharField(label='Núm. Páginas', required=True)
ementa = forms.CharField( ementa = forms.CharField(
widget=forms.Textarea, label='Ementa', required=True) widget=forms.Textarea, label='Ementa', required=True)
autor = forms.ModelChoiceField( autor = forms.CharField(widget=forms.HiddenInput(), required=False)
label='Autor',
required=False,
queryset=Autor.objects.all().order_by('tipo'),
empty_label='Selecione',
)
observacao = forms.CharField(required=True, observacao = forms.CharField(required=True,
widget=forms.Textarea, widget=forms.Textarea,
label='Observação') label='Observação')
class Meta:
model = Protocolo
fields = ['numeracao',
'tipo_protocolo',
'tipo_materia',
'num_paginas',
'ementa',
'autor',
'observacao',
]
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
row1 = crispy_layout_mixin.to_row( row1 = crispy_layout_mixin.to_row(
@ -327,22 +329,29 @@ class ProtocoloMateriaForm(ModelForm):
('tipo_protocolo', 4), ('tipo_protocolo', 4),
('num_paginas', 4)]) ('num_paginas', 4)])
row3 = crispy_layout_mixin.to_row( row3 = crispy_layout_mixin.to_row(
[('ementa', 12)]) [('autor', 0),
(Button('pesquisar',
'Pesquisar Autor',
css_class='btn btn-primary btn-sm'), 2),
(Button('limpar',
'limpar Autor',
css_class='btn btn-primary btn-sm'), 2)])
row4 = crispy_layout_mixin.to_row( row4 = crispy_layout_mixin.to_row(
[('autor', 12)])
row5 = crispy_layout_mixin.to_row(
[('observacao', 12)]) [('observacao', 12)])
row5 = crispy_layout_mixin.to_row(
[('ementa', 12)])
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
Fieldset(_('Protocolo - Opção de Numeração'), row1), Fieldset(_('Protocolo - Opção de Numeração'), row1),
Fieldset(_('Identificação da Matéria'), Fieldset(_('Identificação da Matéria'),
row2, row2,
HTML(sapl.utils.autor_label),
HTML(sapl.utils.autor_modal),
row3, row3,
row4, row4,
row5, row5,
HTML(" "), form_actions(save_label='Protocolar Matéria')
form_actions(save_label=_('Protocolar Matéria'))
) )
) )

9
protocoloadm/views.py

@ -279,12 +279,14 @@ class ProtocoloMateriaView(FormView):
form_class = ProtocoloMateriaForm form_class = ProtocoloMateriaForm
form_valid_message = _('Matéria cadastrada com sucesso!') form_valid_message = _('Matéria cadastrada com sucesso!')
def get_success_url(self):
return reverse('protocolo')
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
form = ProtocoloMateriaForm(request.POST) form = ProtocoloMateriaForm(request.POST)
if form.is_valid(): if form.is_valid():
if request.POST['numeracao'] == '1': if request.POST['numeracao'] == '1':
numeracao = Protocolo.objects.filter( numeracao = Protocolo.objects.filter(
ano=date.today().year).aggregate(Max('numero')) ano=date.today().year).aggregate(Max('numero'))
@ -310,16 +312,13 @@ class ProtocoloMateriaView(FormView):
protocolo.numero_paginas = request.POST['num_paginas'] protocolo.numero_paginas = request.POST['num_paginas']
protocolo.observacao = sub( protocolo.observacao = sub(
' ', ' ', strip_tags(request.POST['observacao'])) ' ', ' ', strip_tags(request.POST['observacao']))
protocolo.save() protocolo.save()
return self.form_valid(form) return self.form_valid(form)
else: else:
return self.form_invalid(form) return self.form_invalid(form)
# TODO: move to Proposicao app
# TODO: move to Proposicao app
class ProposicaoReceberView(TemplateView): class ProposicaoReceberView(TemplateView):
template_name = "protocoloadm/proposicao_receber.html" template_name = "protocoloadm/proposicao_receber.html"

12
templates/protocoloadm/protocolo_list.html

@ -4,7 +4,7 @@
{% load static %} {% load static %}
{% block detail_content %} {% block detail_content %}
{% if protocolos %} {% if protocolos %}
<table> <table>
<tr><td><h2>Resultados</h2></td> <tr><td><h2>Resultados</h2></td>
</tr> </tr>
@ -23,10 +23,10 @@
<strong>Data Protocolo:</strong> {{ p.data|date:"d/m/Y" }} - Horário: {{ p.timestamp|date:"H:m:s" }}</br> <strong>Data Protocolo:</strong> {{ p.data|date:"d/m/Y" }} - Horário: {{ p.timestamp|date:"H:m:s" }}</br>
<strong>Interessado:</strong> {{ p.interessado }}</br> <strong>Interessado:</strong> {{ p.interessado }}</br>
<strong>Natureza do Processo:</strong> <strong>Natureza do Processo:</strong>
{% if p.tipo_protocolo == 0 %} {% if p.tipo_processo == 0 %}
Administrativo Administrativo
{% elif p.tipo_protocolo == 1 %} {% elif p.tipo_processo == 1 %}
Matéria Legislativa Matéria Legislativa
{% endif %}</br> {% endif %}</br>
<strong>Classificação:</strong> {{ p.tipo_documento }} </br> <strong>Classificação:</strong> {{ p.tipo_documento }} </br>
<p></p> <p></p>
@ -38,4 +38,4 @@
{% else %} {% else %}
<h2>Nenhum Registro recuperado</h2> <h2>Nenhum Registro recuperado</h2>
{% endif %} {% endif %}
{% endblock detail_content %} {% endblock detail_content %}

Loading…
Cancel
Save