|
@ -34,10 +34,10 @@ from sapl.materia.models import MateriaLegislativa, TipoMateriaLegislativa, Unid |
|
|
from sapl.materia.views import gerar_pdf_impressos |
|
|
from sapl.materia.views import gerar_pdf_impressos |
|
|
from sapl.parlamentares.models import Legislatura, Parlamentar |
|
|
from sapl.parlamentares.models import Legislatura, Parlamentar |
|
|
from sapl.protocoloadm.models import Protocolo |
|
|
from sapl.protocoloadm.models import Protocolo |
|
|
|
|
|
from sapl.relatorios.views import relatorio_doc_administrativos |
|
|
from sapl.utils import (create_barcode, get_base_url, get_client_ip, |
|
|
from sapl.utils import (create_barcode, get_base_url, get_client_ip, |
|
|
get_mime_type_from_file_extension, lista_anexados, |
|
|
get_mime_type_from_file_extension, lista_anexados, |
|
|
show_results_filter_set, mail_service_configured) |
|
|
show_results_filter_set, mail_service_configured) |
|
|
from sapl.relatorios.views import relatorio_doc_administrativos |
|
|
|
|
|
|
|
|
|
|
|
from .forms import (AcompanhamentoDocumentoForm, AnularProtocoloAdmForm, |
|
|
from .forms import (AcompanhamentoDocumentoForm, AnularProtocoloAdmForm, |
|
|
DocumentoAcessorioAdministrativoForm, |
|
|
DocumentoAcessorioAdministrativoForm, |
|
@ -957,6 +957,7 @@ class PesquisarDocumentoAdministrativoView(DocumentoAdministrativoMixin, |
|
|
else: |
|
|
else: |
|
|
return self.render_to_response(context) |
|
|
return self.render_to_response(context) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AnexadoCrud(MasterDetailCrud): |
|
|
class AnexadoCrud(MasterDetailCrud): |
|
|
model = Anexado |
|
|
model = Anexado |
|
|
parent_field = 'documento_principal' |
|
|
parent_field = 'documento_principal' |
|
@ -1026,13 +1027,15 @@ class DocumentoAnexadoEmLoteView(PermissionRequiredMixin, FilterView): |
|
|
context['object_list'] = [] |
|
|
context['object_list'] = [] |
|
|
for obj in context['temp_object_list']: |
|
|
for obj in context['temp_object_list']: |
|
|
if not obj.pk == int(context['root_pk']): |
|
|
if not obj.pk == int(context['root_pk']): |
|
|
documento_principal = DocumentoAdministrativo.objects.get(id=context['root_pk']) |
|
|
documento_principal = DocumentoAdministrativo.objects.get( |
|
|
|
|
|
id=context['root_pk']) |
|
|
documento_anexado = obj |
|
|
documento_anexado = obj |
|
|
is_anexado = Anexado.objects.filter(documento_principal=documento_principal, |
|
|
is_anexado = Anexado.objects.filter(documento_principal=documento_principal, |
|
|
documento_anexado=documento_anexado).exists() |
|
|
documento_anexado=documento_anexado).exists() |
|
|
if not is_anexado: |
|
|
if not is_anexado: |
|
|
ciclico = False |
|
|
ciclico = False |
|
|
anexados_anexado = Anexado.objects.filter(documento_principal=documento_anexado) |
|
|
anexados_anexado = Anexado.objects.filter( |
|
|
|
|
|
documento_principal=documento_anexado) |
|
|
|
|
|
|
|
|
while anexados_anexado and not ciclico: |
|
|
while anexados_anexado and not ciclico: |
|
|
anexados = [] |
|
|
anexados = [] |
|
@ -1101,7 +1104,8 @@ class DocumentoAnexadoEmLoteView(PermissionRequiredMixin, FilterView): |
|
|
msg = _('Documento(s) anexado(s).') |
|
|
msg = _('Documento(s) anexado(s).') |
|
|
messages.add_message(request, messages.SUCCESS, msg) |
|
|
messages.add_message(request, messages.SUCCESS, msg) |
|
|
|
|
|
|
|
|
success_url = reverse('sapl.protocoloadm:anexado_list', kwargs={'pk': kwargs['pk']}) |
|
|
success_url = reverse('sapl.protocoloadm:anexado_list', kwargs={ |
|
|
|
|
|
'pk': kwargs['pk']}) |
|
|
return HttpResponseRedirect(success_url) |
|
|
return HttpResponseRedirect(success_url) |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1149,7 +1153,8 @@ class TramitacaoAdmCrud(MasterDetailCrud): |
|
|
'-timestamp', |
|
|
'-timestamp', |
|
|
'-id').first() |
|
|
'-id').first() |
|
|
|
|
|
|
|
|
#TODO: Esta checagem foi inserida na issue #2027, mas é mesmo necessária? |
|
|
# TODO: Esta checagem foi inserida na issue #2027, mas é mesmo |
|
|
|
|
|
# necessária? |
|
|
if ultima_tramitacao: |
|
|
if ultima_tramitacao: |
|
|
if ultima_tramitacao.unidade_tramitacao_destino: |
|
|
if ultima_tramitacao.unidade_tramitacao_destino: |
|
|
context['form'].fields[ |
|
|
context['form'].fields[ |
|
@ -1237,7 +1242,6 @@ class TramitacaoAdmCrud(MasterDetailCrud): |
|
|
context['user'] = self.request.user |
|
|
context['user'] = self.request.user |
|
|
return context |
|
|
return context |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class DeleteView(MasterDetailCrud.DeleteView): |
|
|
class DeleteView(MasterDetailCrud.DeleteView): |
|
|
|
|
|
|
|
|
logger = logging.getLogger(__name__) |
|
|
logger = logging.getLogger(__name__) |
|
@ -1278,7 +1282,8 @@ class TramitacaoAdmCrud(MasterDetailCrud): |
|
|
if da.tramitacaoadministrativo_set.count() == 0: |
|
|
if da.tramitacaoadministrativo_set.count() == 0: |
|
|
da.tramitacao = False |
|
|
da.tramitacao = False |
|
|
da.save() |
|
|
da.save() |
|
|
TramitacaoAdministrativo.objects.filter(id__in=tramitacoes_deletar).delete() |
|
|
TramitacaoAdministrativo.objects.filter( |
|
|
|
|
|
id__in=tramitacoes_deletar).delete() |
|
|
|
|
|
|
|
|
return HttpResponseRedirect(url) |
|
|
return HttpResponseRedirect(url) |
|
|
|
|
|
|
|
@ -1471,7 +1476,6 @@ class PrimeiraTramitacaoEmLoteAdmView(PermissionRequiredMixin, FilterView): |
|
|
|
|
|
|
|
|
logger = logging.getLogger(__name__) |
|
|
logger = logging.getLogger(__name__) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_context_data(self, **kwargs): |
|
|
def get_context_data(self, **kwargs): |
|
|
context = super(PrimeiraTramitacaoEmLoteAdmView, |
|
|
context = super(PrimeiraTramitacaoEmLoteAdmView, |
|
|
self).get_context_data(**kwargs) |
|
|
self).get_context_data(**kwargs) |
|
@ -1524,23 +1528,24 @@ class PrimeiraTramitacaoEmLoteAdmView(PermissionRequiredMixin, FilterView): |
|
|
form.save() |
|
|
form.save() |
|
|
|
|
|
|
|
|
msg = _('Tramitação completa.') |
|
|
msg = _('Tramitação completa.') |
|
|
self.logger.info('user=' + user.username + '. Tramitação completa.') |
|
|
self.logger.info('user=' + user.username + |
|
|
|
|
|
'. Tramitação completa.') |
|
|
messages.add_message(request, messages.SUCCESS, msg) |
|
|
messages.add_message(request, messages.SUCCESS, msg) |
|
|
return self.get_success_url() |
|
|
return self.get_success_url() |
|
|
|
|
|
|
|
|
return self.form_invalid(form) |
|
|
return self.form_invalid(form) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_success_url(self): |
|
|
def get_success_url(self): |
|
|
return HttpResponseRedirect(reverse('sapl.protocoloadm:primeira_tramitacao_em_lote_docadm')) |
|
|
return HttpResponseRedirect(reverse('sapl.protocoloadm:primeira_tramitacao_em_lote_docadm')) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def form_invalid(self, form, *args, **kwargs): |
|
|
def form_invalid(self, form, *args, **kwargs): |
|
|
for key, erros in form.errors.items(): |
|
|
for key, erros in form.errors.items(): |
|
|
if not key == '__all__': |
|
|
if not key == '__all__': |
|
|
[messages.add_message(self.request, messages.ERROR, form.fields[key].label + ": " + e) for e in erros] |
|
|
[messages.add_message( |
|
|
|
|
|
self.request, messages.ERROR, form.fields[key].label + ": " + e) for e in erros] |
|
|
else: |
|
|
else: |
|
|
[messages.add_message(self.request, messages.ERROR, e) for e in erros] |
|
|
[messages.add_message(self.request, messages.ERROR, e) |
|
|
|
|
|
for e in erros] |
|
|
return self.get(self.request, kwargs, {'form': form}) |
|
|
return self.get(self.request, kwargs, {'form': form}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1569,21 +1574,18 @@ class TramitacaoEmLoteAdmView(PrimeiraTramitacaoEmLoteAdmView): |
|
|
|
|
|
|
|
|
return context |
|
|
return context |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def pega_ultima_tramitacao(self): |
|
|
def pega_ultima_tramitacao(self): |
|
|
return TramitacaoAdministrativo.objects.values( |
|
|
return TramitacaoAdministrativo.objects.values( |
|
|
'documento_id').annotate(data_encaminhamento=Max( |
|
|
'documento_id').annotate(data_encaminhamento=Max( |
|
|
'data_encaminhamento'), |
|
|
'data_encaminhamento'), |
|
|
id=Max('id')).values_list('id', flat=True) |
|
|
id=Max('id')).values_list('id', flat=True) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def filtra_tramitacao_status(self, status): |
|
|
def filtra_tramitacao_status(self, status): |
|
|
lista = self.pega_ultima_tramitacao() |
|
|
lista = self.pega_ultima_tramitacao() |
|
|
return TramitacaoAdministrativo.objects.filter( |
|
|
return TramitacaoAdministrativo.objects.filter( |
|
|
id__in=lista, |
|
|
id__in=lista, |
|
|
status=status).distinct().values_list('documento_id', flat=True) |
|
|
status=status).distinct().values_list('documento_id', flat=True) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def filtra_tramitacao_destino(self, destino): |
|
|
def filtra_tramitacao_destino(self, destino): |
|
|
lista = self.pega_ultima_tramitacao() |
|
|
lista = self.pega_ultima_tramitacao() |
|
|
return TramitacaoAdministrativo.objects.filter( |
|
|
return TramitacaoAdministrativo.objects.filter( |
|
@ -1591,7 +1593,6 @@ class TramitacaoEmLoteAdmView(PrimeiraTramitacaoEmLoteAdmView): |
|
|
unidade_tramitacao_destino=destino).distinct().values_list( |
|
|
unidade_tramitacao_destino=destino).distinct().values_list( |
|
|
'documento_id', flat=True) |
|
|
'documento_id', flat=True) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def filtra_tramitacao_destino_and_status(self, status, destino): |
|
|
def filtra_tramitacao_destino_and_status(self, status, destino): |
|
|
lista = self.pega_ultima_tramitacao() |
|
|
lista = self.pega_ultima_tramitacao() |
|
|
return TramitacaoAdministrativo.objects.filter( |
|
|
return TramitacaoAdministrativo.objects.filter( |
|
|