mirror of https://github.com/interlegis/sapl.git
Browse Source
Melhorando usabilidade Colocando privilegios de admin para acessar função de apagar protocolos Fix #2958 Filtrando anos a serem apagados #Fix 2958 Atualizando django mommy para aceitar ArrayFieldpull/2960/head
8 changed files with 207 additions and 3 deletions
@ -0,0 +1,29 @@ |
|||||
|
# -*- 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)), |
||||
|
], |
||||
|
), |
||||
|
] |
||||
@ -0,0 +1,114 @@ |
|||||
|
{% extends "base.html" %} |
||||
|
{% load i18n crispy_forms_tags %} |
||||
|
|
||||
|
{% block base_content %} |
||||
|
|
||||
|
<div class="card border-danger mb-3" style=""> |
||||
|
<div class="card-header">Cuidado</div> |
||||
|
<div class="container"> |
||||
|
<div class="row"> |
||||
|
<div class="col"> |
||||
|
|
||||
|
</div> |
||||
|
<div class="col-6 "> |
||||
|
<div class="card-body"> |
||||
|
<h1 class="card-title">Essa ação apagara todos os protocolos !!</h1> |
||||
|
<p class="card-text">Por questões de auditoria seu login será gravado como realizador dessa ação. Deseja continuar ?</p> |
||||
|
<button type="button" class="btn btn-danger" data-toggle="modal" data-target="#exampleModalCenter" >Sim, estou ciente e desejo continuar.</button> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- Modal --> |
||||
|
<div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true"> |
||||
|
<div class="modal-dialog modal-dialog-centered" role="document"> |
||||
|
<div class="modal-content"> |
||||
|
<div class="modal-header"> |
||||
|
<h5 class="modal-title" id="exampleModalLongTitle">Validação</h5> |
||||
|
</div> |
||||
|
<div id="content-block-1"> |
||||
|
{% if intervalo_data %} |
||||
|
<div class="modal-body"> |
||||
|
Digite o ano dos registro a serem apagados e a sua senha para confirmar essa operação. |
||||
|
<div class="form-row"> |
||||
|
<label style="margin-top:20px">Ano</label> |
||||
|
<select multiple id="id_ano" class="form-control"> |
||||
|
{% for ano in intervalo_data %} |
||||
|
<option>{{ano}}</option> |
||||
|
{% endfor %} |
||||
|
</select> |
||||
|
<label style="margin-top:20px">Senha</label> |
||||
|
<input type="password" class="form-control" id="password" placeholder="Senha" required> |
||||
|
<div id="feedback" class="invalid-feedback"></div> |
||||
|
<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> |
||||
|
</div> |
||||
|
</div> |
||||
|
{% else %} |
||||
|
<div class="modal-body"> |
||||
|
Não há registros de protocolos. |
||||
|
</div> |
||||
|
<div class="modal-footer"> |
||||
|
<a href="{% url 'sapl.base:sistema' %}" class="btn btn-secondary">Voltar para tabelas auxiliares.</a> |
||||
|
</div> |
||||
|
{% endif %} |
||||
|
</div> |
||||
|
|
||||
|
<div id="content-block-2"> |
||||
|
<div class="modal-body">Protocolos apagados com sucesso.</div> |
||||
|
<div class="modal-footer"> |
||||
|
<a href="{% url 'sapl.base:sistema' %}" class="btn btn-secondary">Voltar para tabelas auxiliares.</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
{% endblock base_content %} |
||||
|
|
||||
|
{% block extra_js %} |
||||
|
|
||||
|
<script> |
||||
|
$('#content-block-2').hide(); |
||||
|
$('#apagar-protocolos').click( () => { |
||||
|
$.ajax({ |
||||
|
data: {senha:$('#password').val(),ano:$("#id_ano").val()}, |
||||
|
type: 'POST', |
||||
|
url: "{% url 'sapl.protocoloadm:apaga_protocolos_view' %}", |
||||
|
traditional: true, |
||||
|
headers: { |
||||
|
'X-CSRFToken': getCookie('csrftoken') |
||||
|
}, |
||||
|
success: function(data){ |
||||
|
if (data['type'] == 'error'){ |
||||
|
$('#password').addClass('is-invalid') |
||||
|
$('#feedback').text(data['msg']) |
||||
|
} |
||||
|
else if(data['type'] == 'success'){ |
||||
|
$('#content-block-1').hide("", function() { |
||||
|
}); |
||||
|
$('#content-block-2').show("slow"); |
||||
|
} |
||||
|
}, |
||||
|
}); |
||||
|
}) |
||||
|
$('option').mousedown(function(e) { |
||||
|
e.preventDefault(); |
||||
|
var originalScrollTop = $(this).parent().scrollTop(); |
||||
|
$(this).prop('selected', $(this).prop('selected') ? false : true); |
||||
|
var self = this; |
||||
|
$(this).parent().focus(); |
||||
|
setTimeout(function() { |
||||
|
$(self).parent().scrollTop(originalScrollTop); |
||||
|
}, 0); |
||||
|
|
||||
|
return false; |
||||
|
}); |
||||
|
</script> |
||||
|
|
||||
|
{% endblock extra_js%} |
||||
Loading…
Reference in new issue