diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py index d9e540f6a..4d247adfa 100644 --- a/sapl/protocoloadm/forms.py +++ b/sapl/protocoloadm/forms.py @@ -299,13 +299,6 @@ class AnularProcoloAdmForm(ModelForm): class ProtocoloDocumentForm(ModelForm): - NUMERACAO_CHOICES = [('1', _('Sequencial por Ano')), - ('2', _('Sequencial Único'))] - - numeracao = forms.ChoiceField(required=True, - choices=NUMERACAO_CHOICES, - label='') - tipo_protocolo = forms.ChoiceField(required=True, label=_('Tipo de Protocolo'), choices=TIPOS_PROTOCOLO,) @@ -329,8 +322,7 @@ class ProtocoloDocumentForm(ModelForm): class Meta: model = Protocolo - fields = ['numeracao', - 'tipo_protocolo', + fields = ['tipo_protocolo', 'tipo_documento', 'num_paginas', 'assunto', @@ -341,28 +333,25 @@ class ProtocoloDocumentForm(ModelForm): def __init__(self, *args, **kwargs): row1 = to_row( - [(InlineRadios('numeracao'), 12)]) - row2 = to_row( [(InlineRadios('tipo_protocolo'), 12)]) - row3 = to_row( + row2 = to_row( [('tipo_documento', 6), ('num_paginas', 6)]) - row4 = to_row( + row3 = to_row( [('assunto', 12)]) - row5 = to_row( + row4 = to_row( [('interessado', 12)]) - row6 = to_row( + row5 = to_row( [('observacao', 12)]) self.helper = FormHelper() self.helper.layout = Layout( - Fieldset(_('Protocolo - Opção de Numeração'), row1), Fieldset(_('Identificação de Documento'), + row1, row2, row3, row4, row5, - row6, HTML(" "), form_actions(save_label=_('Protocolar Documento')) ) @@ -373,13 +362,6 @@ class ProtocoloDocumentForm(ModelForm): class ProtocoloMateriaForm(ModelForm): - NUMERACAO_CHOICES = [('1', 'Sequencial por Ano'), - ('2', 'Sequencial Único')] - - numeracao = forms.ChoiceField(required=True, - choices=NUMERACAO_CHOICES, - label='') - tipo_protocolo = forms.ChoiceField(required=True, label='Tipo de Protocolo', choices=TIPOS_PROTOCOLO,) @@ -398,8 +380,7 @@ class ProtocoloMateriaForm(ModelForm): class Meta: model = Protocolo - fields = ['numeracao', - 'tipo_protocolo', + fields = ['tipo_protocolo', 'tipo_materia', 'numero_paginas', 'autor', @@ -408,10 +389,9 @@ class ProtocoloMateriaForm(ModelForm): def __init__(self, *args, **kwargs): row1 = to_row( - [(InlineRadios('numeracao'), 12)]) + [(InlineRadios('tipo_protocolo'), 12)]) row2 = to_row( [('tipo_materia', 4), - (InlineRadios('tipo_protocolo'), 4), ('numero_paginas', 4)]) row3 = to_row( [('autor', 0), @@ -426,8 +406,8 @@ class ProtocoloMateriaForm(ModelForm): self.helper = FormHelper() self.helper.layout = Layout( - Fieldset(_('Protocolo - Opção de Numeração'), row1), Fieldset(_('Identificação da Matéria'), + row1, row2, HTML(autor_label), HTML(autor_modal), diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index c6595f5fc..ae25eaa8e 100644 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -2,6 +2,7 @@ import json from datetime import date, datetime from braces.views import FormValidMessageMixin +from django.contrib import messages from django.contrib.auth.mixins import PermissionRequiredMixin from django.core.exceptions import ObjectDoesNotExist from django.core.urlresolvers import reverse @@ -13,6 +14,8 @@ from django.views.generic import CreateView, DetailView, FormView, ListView from django.views.generic.base import TemplateView from django_filters.views import FilterView +from sapl.base.models import AppConfig + import sapl.crud.base from sapl.crud.base import (Crud, CrudBaseMixin, CrudCreateView, CrudDeleteView, CrudListView, CrudUpdateView, @@ -206,18 +209,26 @@ class ProtocoloDocumentoView(PermissionRequiredMixin, def form_valid(self, form): f = form.save(commit=False) - if form.cleaned_data['numeracao'] == '1': - numeracao = Protocolo.objects.filter( + try: + numeracao = AppConfig.objects.last().sequencia_numeracao + except AttributeError: + msg = _('É preciso definir a sequencia de ' + + 'numeração na tabelas auxiliares!') + messages.add_message(self.request, messages.ERROR, msg) + return self.render_to_response(self.get_context_data()) + + if numeracao == 'A': + numero = Protocolo.objects.filter( ano=date.today().year).aggregate(Max('numero')) - elif form.cleaned_data['numeracao'] == '2': - numeracao = Protocolo.objects.all().aggregate(Max('numero')) + elif numeracao == 'U': + numero = Protocolo.objects.all().aggregate(Max('numero')) - if numeracao['numero__max'] is None: - numeracao['numero__max'] = 0 + if numero['numero__max'] is None: + numero['numero__max'] = 0 f.tipo_processo = '0' # TODO validar o significado f.anulado = False - f.numero = numeracao['numero__max'] + 1 + f.numero = numero['numero__max'] + 1 f.ano = datetime.now().year f.data = datetime.now().strftime('%Y-%m-%d') f.hora = datetime.now().strftime('%H:%M') @@ -319,18 +330,26 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView): return reverse('sapl.protocoloadm:protocolo') def form_valid(self, form): - if self.request.POST['numeracao'] == '1': - numeracao = Protocolo.objects.filter( + try: + numeracao = AppConfig.objects.last().sequencia_numeracao + except AttributeError: + msg = _('É preciso definir a sequencia de ' + + 'numeração na tabelas auxiliares!') + messages.add_message(self.request, messages.ERROR, msg) + return self.render_to_response(self.get_context_data()) + + if numeracao == 'A': + numero = Protocolo.objects.filter( ano=date.today().year).aggregate(Max('numero')) - else: - numeracao = Protocolo.objects.all().aggregate(Max('numero')) + elif numeracao == 'U': + numero = Protocolo.objects.all().aggregate(Max('numero')) if numeracao is None: - numeracao['numero__max'] = 0 + numero['numero__max'] = 0 protocolo = Protocolo() - protocolo.numero = numeracao['numero__max'] + 1 + protocolo.numero = numero['numero__max'] + 1 protocolo.ano = datetime.now().year protocolo.data = datetime.now().strftime("%Y-%m-%d") protocolo.hora = datetime.now().strftime("%H:%M")