summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-01-16 11:06:21 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-01-16 11:06:21 +0100
commitd7a01334b49e6d3358bd33990c27c828021400c6 (patch)
treea18bf76379e6aa20b472c8aafa391ecab5856c87
parentc591e3524714fdc170536f6caa47401d8d93ebf6 (diff)
downloadIshtar-d7a01334b49e6d3358bd33990c27c828021400c6.tar.bz2
Ishtar-d7a01334b49e6d3358bd33990c27c828021400c6.zip
Sheets: fix reload after rollback - fix display of the last history version
-rw-r--r--ishtar_common/models.py6
-rw-r--r--ishtar_common/static/js/ishtar.js3
-rw-r--r--ishtar_common/templates/ishtar/blocks/window_nav.html6
-rw-r--r--ishtar_common/views_item.py15
4 files changed, 20 insertions, 10 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index c241b4fad..71868cb63 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -1518,6 +1518,12 @@ class BaseHistorizedItem(DocumentItem, FullSearch, Imported, JsonData,
self.save()
return external_id
+ def get_last_history_date(self):
+ q = self.history.values("history_date").order_by('-history_date')
+ if not q.count():
+ return
+ return q.all()[0]['history_date']
+
def get_previous(self, step=None, date=None, strict=True):
"""
Get a "step" previous state of the item
diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js
index 9fb138ff2..c3fadd7bb 100644
--- a/ishtar_common/static/js/ishtar.js
+++ b/ishtar_common/static/js/ishtar.js
@@ -627,13 +627,14 @@ function hide_window(window_id){
update_window_menu();
}
-function load_url(url){
+function load_url(url, callback){
$('.modal-progress').modal('show');
$.ajax({
url: url,
cache: false,
success:function(html){
close_wait();
+ if (callback) callback();
},
error:function(XMLHttpRequest, textStatus, errorThrows){
close_wait();
diff --git a/ishtar_common/templates/ishtar/blocks/window_nav.html b/ishtar_common/templates/ishtar/blocks/window_nav.html
index 62caff142..30e364ae5 100644
--- a/ishtar_common/templates/ishtar/blocks/window_nav.html
+++ b/ishtar_common/templates/ishtar/blocks/window_nav.html
@@ -6,7 +6,7 @@
{% if previous %}
<button type="button" class="btn btn-secondary"
data-toggle="tooltip" data-placement="bottom"
- title="{{previous}}"
+ title="{{previous|date}} {{previous|time:'H:i'}}"
onclick='load_window("{% url histo_url item.pk previous|date:"c"%}");$("#{{window_id}}").hide();return false;'>
<i class="fa fa-step-backward"></i>
</button>
@@ -14,14 +14,14 @@
{% if next %}
<button type="button" class="btn btn-secondary"
data-toggle="tooltip" data-placement="bottom"
- onclick='if(confirm("{%trans 'Are you sure to restore to this version? All changes made since this version will be lost.' %}")){load_url("{% url revert_url item.pk item.history_date|date:"c"%}");closeAllWindows();load_window("{% url show_url item.pk None %}");}'
+ onclick='if(confirm("{%trans 'Are you sure to restore to this version? All changes made since this version will be lost.' %}")){load_url("{% url revert_url item.pk item.history_date|date:"c"%}", function(){closeAllWindows();load_window("{% url show_url item.pk None %}");});}'
title="{% trans 'Restore this version' %}">
<i class="fa fa-history"></i>
</button>
<button type="button" class="btn btn-secondary"
data-toggle="tooltip" data-placement="bottom"
onclick='load_window("{% url histo_url item.pk next|date:"c" %}");$("#{{window_id}}").hide();return false;'
- title="{{next}}">
+ title="{{next|date}} {{next|time:'H:i'}}">
<i class="fa fa-step-forward"></i>
</button>
{% endif %}
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py
index c2fab5bde..fbac512cd 100644
--- a/ishtar_common/views_item.py
+++ b/ishtar_common/views_item.py
@@ -203,13 +203,16 @@ def show_item(model, name, extra_dct=None, model_for_perms=None):
try:
date = datetime.datetime.strptime(date,
'%Y-%m-%dT%H:%M:%S.%f')
- item = item.get_previous(date=date)
- assert item is not None
+ if item.get_last_history_date() != date:
+ item = item.get_previous(date=date)
+ assert item is not None
+ dct['previous'] = item._previous
+ dct['next'] = item._next
+ else:
+ date = None
except (ValueError, AssertionError):
- return HttpResponse(None, content_type='text/plain')
- dct['previous'] = item._previous
- dct['next'] = item._next
- else:
+ return HttpResponse('', content_type='text/plain')
+ if not date:
historized = item.history.all()
if historized:
item.history_date = historized[0].history_date