Browse Source

Mudando sistema de auditoria de protocolos para o já existente

pull/2960/head
ulyssesBML 6 years ago
parent
commit
4f1c67960f
  1. 2
      requirements/test-requirements.txt
  2. 29
      sapl/protocoloadm/migrations/0026_auditoriaprotocolo.py
  3. 9
      sapl/protocoloadm/models.py
  4. 18
      sapl/protocoloadm/views.py
  5. 2
      sapl/rules/map_rules.py
  6. 6
      sapl/templates/protocoloadm/deleta_todos_protocolos.html

2
requirements/test-requirements.txt

@ -3,7 +3,7 @@ coverage==4.1
django-webtest==1.7.8
flake8==2.6.2
isort==4.2.5
model-mommy==1.6.0
model-mommy==1.2.6
pep8==1.7.0
pytest==2.9.2
pytest-cov==2.3.0

29
sapl/protocoloadm/migrations/0026_auditoriaprotocolo.py

@ -1,29 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-10-03 18:19
from __future__ import unicode_literals
from django.conf import settings
import django.contrib.postgres.fields
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('protocoloadm', '0025_auto_20191001_1115'),
]
operations = [
migrations.CreateModel(
name='AuditoriaProtocolo',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('data', models.DateTimeField(default=django.utils.timezone.now)),
('info', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=12), size=None)),
('usuario', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
]

9
sapl/protocoloadm/models.py

@ -1,9 +1,7 @@
from django.db import models
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User
from model_utils import Choices
from django.contrib.postgres.fields import ArrayField
import reversion
from sapl.base.models import Autor
@ -410,10 +408,3 @@ class AcompanhamentoDocumento(models.Model):
'email': self.email,
'data': str(self.data_cadastro.strftime('%d/%m/%Y'))
}
class AuditoriaProtocolo(models.Model):
usuario = models.ForeignKey(User, on_delete=models.CASCADE)
data = models.DateTimeField(default=timezone.now)
info = ArrayField(
models.CharField(max_length=12)
)

18
sapl/protocoloadm/views.py

@ -34,7 +34,7 @@ from sapl.crud.base import (Crud, CrudAux, MasterDetailCrud, make_pagination,
from sapl.materia.models import MateriaLegislativa, TipoMateriaLegislativa, UnidadeTramitacao
from sapl.materia.views import gerar_pdf_impressos
from sapl.parlamentares.models import Legislatura, Parlamentar
from sapl.protocoloadm.models import Protocolo, AuditoriaProtocolo, DocumentoAdministrativo
from sapl.protocoloadm.models import Protocolo, DocumentoAdministrativo
from sapl.relatorios.views import relatorio_doc_administrativos
from sapl.utils import (create_barcode, get_base_url, get_client_ip,
get_mime_type_from_file_extension, lista_anexados,
@ -1613,7 +1613,7 @@ class TramitacaoEmLoteAdmView(PrimeiraTramitacaoEmLoteAdmView):
'documento_id', flat=True)
def apaga_protocolos(user, ano):
def apaga_protocolos(request, ano):
all_protocolos = Protocolo.objects.filter(ano__in=ano)
for doc in DocumentoAdministrativo.objects.filter(protocolo__in=all_protocolos):
@ -1624,18 +1624,20 @@ def apaga_protocolos(user, ano):
ml.numero_protocolo = None
ml.save()
info = ["%s/%s" % (p.numero, p.ano) for p in all_protocolos]
for deleted_object in all_protocolos:
post_delete_signal.send(sender=None,
instance=deleted_object,
operation='D',
request=request
)
auditoria = AuditoriaProtocolo(usuario=user,info=info)
auditoria.save()
all_protocolos.delete()
@staff_member_required
def apaga_protocolos_view(request):
if request.method == "GET":
if Protocolo.objects.exists():
ano_minimo = Protocolo.objects.all().order_by('ano').first().ano
intervalo_data = range(ano_minimo, datetime.now().year)
intervalo_data = Protocolo.objects.all().distinct('ano').values_list('ano', flat=True).order_by('-ano')
else:
intervalo_data = None
return render(request,"protocoloadm/deleta_todos_protocolos.html",{'intervalo_data':intervalo_data})
@ -1645,7 +1647,7 @@ def apaga_protocolos_view(request):
valid = request.user.check_password(password)
if valid:
anos = [int(i) for i in request.POST.getlist('ano')]
apaga_protocolos(request.user, anos)
apaga_protocolos(request, anos)
return JsonResponse({'type':'success','msg':''})
else:
return JsonResponse({'type':'error','msg':'Senha Incorreta'})

2
sapl/rules/map_rules.py

@ -63,8 +63,6 @@ rules_group_administrativo = {
(protocoloadm.Anexado, __base__, set()),
(protocoloadm.DocumentoAcessorioAdministrativo, __base__, set()),
(protocoloadm.TramitacaoAdministrativo, __base__, set()),
(protocoloadm.AuditoriaProtocolo, __base__, set()),
]
}

6
sapl/templates/protocoloadm/deleta_todos_protocolos.html

@ -47,6 +47,9 @@
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancelar</button>
<button id="apagar-protocolos" type="button" class="btn btn-danger">Apagar protocolos</button>
<div id="spinner-id" style="margin-left:20px" class="spinner-border text-danger" role="status">
<span class="sr-only">Loading...</span>
</div>
</div>
</div>
</div>
@ -75,7 +78,9 @@
<script>
$('#content-block-2').hide();
$('#spinner-id').hide();
$('#apagar-protocolos').click( () => {
$('#spinner-id').show();
$.ajax({
data: {senha:$('#password').val(),ano:$("#id_ano").val()},
type: 'POST',
@ -94,6 +99,7 @@
});
$('#content-block-2').show("slow");
}
$('#spinner-id').hide();
},
});
})

Loading…
Cancel
Save