Moved static files and celery.py

This commit is contained in:
Raphael Michel
2017-01-04 21:59:31 +01:00
parent dd074a11d4
commit c639cd96f5
441 changed files with 453 additions and 15 deletions

View File

@@ -0,0 +1,60 @@
/*global $, waitingDialog, gettext */
var async_dl_url = null;
var async_dl_timeout = null;
function async_dl_check() {
"use strict";
$.ajax(
{
'type': 'GET',
'url': async_dl_url + '?ajax=1',
'success': async_dl_check_callback,
'error': async_dl_check_error,
'context': this,
}
);
}
function async_dl_check_callback(data, jqXHR, status) {
"use strict";
if (data == 1) {
$("body").data('ajaxing', false);
location.href = async_dl_url;
waitingDialog.hide();
return;
}
async_dl_timeout = window.setTimeout(async_dl_check, 250);
$("#loadingmodal p").text(gettext('Your request has been queued on the server and will now be ' +
'processed. If this takes longer than two minutes, please contact us or go ' +
'back in your browser and try again.'));
}
function async_dl_check_error(jqXHR, textStatus, errorThrown) {
"use strict";
$("body").data('ajaxing', false);
waitingDialog.hide();
var c = $(jqXHR.responseText).filter('.container');
if (c.length > 0) {
ajaxErrDialog.show(c.first().html());
} else if (jqXHR.status >= 400) {
alert(gettext('An error of type {code} occured.').replace(/\{code\}/, jqXHR.status));
}
}
$(function () {
"use strict";
$("body").on('click', 'a[data-asyncdownload]', function (e) {
e.preventDefault();
if ($("body").data('ajaxing')) {
return;
}
async_dl_url = $(this).attr("href");
$("body").data('ajaxing', true);
waitingDialog.show(gettext('We are processing your request …'));
$("#loadingmodal p").text(gettext('We are currently sending your request to the server. If this takes longer ' +
'than one minute, please check your internet connection and then reload ' +
'this page and try again.'));
async_dl_check();
});
});

View File

@@ -0,0 +1,121 @@
/*global $, waitingDialog, gettext */
var async_task_id = null;
var async_task_timeout = null;
var async_task_check_url = null;
function async_task_check() {
"use strict";
$.ajax(
{
'type': 'GET',
'url': async_task_check_url,
'success': async_task_check_callback,
'error': async_task_check_error,
'context': this,
'dataType': 'json'
}
);
}
function async_task_check_callback(data, jqXHR, status) {
"use strict";
if (data.ready && data.redirect) {
location.href = data.redirect;
return;
}
async_task_timeout = window.setTimeout(async_task_check, 250);
$("#loadingmodal p").text(gettext('Your request has been queued on the server and will now be ' +
'processed. If this takes longer than two minutes, please contact us or go ' +
'back in your browser and try again.'));
}
function async_task_check_error(jqXHR, textStatus, errorThrown) {
"use strict";
var c = $(jqXHR.responseText).filter('.container');
if (c.length > 0) {
$("body").data('ajaxing', false);
waitingDialog.hide();
ajaxErrDialog.show(c.first().html());
} else {
if (jqXHR.status >= 400 && jqXHR.status < 500) {
$("body").data('ajaxing', false);
waitingDialog.hide();
alert(gettext('An error of type {code} occured.').replace(/\{code\}/, jqXHR.status));
} else {
// 500 can be an application error or overload in some cases :(
$("#loadingmodal p").text(gettext('We currenctly cannot reach the server, but we keep trying.' +
' Last error code: {code}').replace(/\{code\}/, jqXHR.status));
async_task_timeout = window.setTimeout(async_task_check, 5000);
}
}
}
function async_task_callback(data, jqXHR, status) {
"use strict";
$("body").data('ajaxing', false);
if (data.redirect) {
location.href = data.redirect;
return;
}
async_task_id = data.async_id;
async_task_check_url = data.check_url;
async_task_timeout = window.setTimeout(async_task_check, 100);
$("#loadingmodal p").text(gettext('Your request has been queued on the server and will now be ' +
'processed. If this takes longer than two minutes, please contact us or go ' +
'back in your browser and try again.'));
if (location.href.indexOf("async_id") === -1) {
history.pushState({}, "Waiting", async_task_check_url.replace(/ajax=1/, ''));
}
}
function async_task_error(jqXHR, textStatus, errorThrown) {
"use strict";
$("body").data('ajaxing', false);
if (textStatus === "timeout") {
alert(gettext("The request took to long. Please try again."));
waitingDialog.hide();
} else if (jqXHR.responseText.indexOf('container') > 0) {
var c = $(jqXHR.responseText).filter('.container');
waitingDialog.hide();
ajaxErrDialog.show(c.first().html());
} else {
if (jqXHR.status >= 400 && jqXHR.status < 500) {
waitingDialog.hide();
alert(gettext('An error of type {code} occured.').replace(/\{code\}/, jqXHR.status));
} else {
waitingDialog.hide();
alert(gettext('We currenctly cannot reach the server. Please try again. ' +
'Error code: {code}').replace(/\{code\}/, jqXHR.status));
}
}
}
$(function () {
"use strict";
$("body").on('submit', 'form[data-asynctask]', function (e) {
e.preventDefault();
if ($("body").data('ajaxing')) {
return;
}
async_task_id = null;
$("body").data('ajaxing', true);
waitingDialog.show(gettext('We are processing your request …'));
$("#loadingmodal p").text(gettext('We are currently sending your request to the server. If this takes longer ' +
'than one minute, please check your internet connection and then reload ' +
'this page and try again.'));
$.ajax(
{
'type': 'POST',
'url': $(this).attr('action'),
'data': $(this).serialize() + '&ajax=1',
'success': async_task_callback,
'error': async_task_error,
'context': this,
'dataType': 'json',
'timeout': 60000,
}
);
});
});

View File

@@ -0,0 +1,37 @@
/*global $,gettext,ngettext */
var cart = {
_deadline: null,
_deadline_interval: null,
draw_deadline: function () {
var diff = Math.floor(cart._deadline.diff(moment()) / 1000 / 60);
if (diff < 0) {
$("#cart-deadline").text(gettext("The items in your cart are no longer reserved for you."));
window.clearInterval(cart._deadline_interval);
} else {
$("#cart-deadline").text(ngettext(
"The items in your cart are reserved for you for one minute.",
"The items in your cart are reserved for you for {num} minutes.",
diff
).replace(/\{num\}/g, diff));
}
},
init: function () {
"use strict";
cart._deadline = moment($("#cart-deadline").attr("data-expires"));
cart._deadline_interval = window.setInterval(cart.draw_deadline, 2000);
cart.draw_deadline();
}
};
$(function () {
"use strict";
moment.locale($("body").attr("data-locale").substr(0, 2));
if ($("#cart-deadline").length) {
cart.init();
}
});

View File

@@ -0,0 +1,106 @@
/*global $ */
function gettext(msgid) {
if (typeof django !== 'undefined' && typeof django.gettext !== 'undefined') {
return django.gettext(msgid);
}
return msgid;
}
function ngettext(singular, plural, count) {
if (typeof django !== 'undefined' && typeof django.ngettext !== 'undefined') {
return django.ngettext(singular, plural, count);
}
return plural;
}
$(function () {
"use strict";
$("input[data-toggle=radiocollapse]").change(function () {
$($(this).attr("data-parent")).find(".collapse.in").collapse('hide');
$($(this).attr("data-target")).collapse('show');
});
$(".js-only").removeClass("js-only");
$(".variations").hide();
$("a[data-toggle=variations]").click(function (e) {
$(this).parent().parent().parent().find(".variations").slideToggle();
e.preventDefault();
});
$(".collapsed").removeClass("collapsed").addClass("collapse");
$("#voucher-box").hide();
$("#voucher-toggle").show();
$("#voucher-toggle a").click(function () {
$("#voucher-box").slideDown();
$("#voucher-toggle").slideUp();
});
$("#ajaxerr").on("click", ".ajaxerr-close", ajaxErrDialog.hide);
// Copy answers
$(".js-copy-answers").click(function (e) {
e.preventDefault();
var idx = $(this).data('id');
copy_answers(idx);
});
});
function copy_answers(idx) {
var elements = $('*[data-idx="'+idx+'"] input, *[data-idx="'+idx+'"] select, *[data-idx="'+idx+'"] textarea');
var firstAnswers = $('*[data-idx="0"] input, *[data-idx="0"] select, *[data-idx="0"] textarea');
elements.each(function(index){
var input = $(this),
tagName = input.prop('tagName').toLowerCase(),
attributeType = input.attr('type');
switch (tagName) {
case "textarea":
input.val(firstAnswers.eq(index).val());
break;
case "select":
input.val(firstAnswers.eq(index).find(":selected").val()).change();
break;
case "input":
switch (attributeType) {
case "text":
case "number":
input.val(firstAnswers.eq(index).val());
break;
case "checkbox":
case "radio":
input.prop("checked", firstAnswers.eq(index).prop("checked"));
break;
default:
input.val(firstAnswers.eq(index).val());
}
break;
default:
input.val(firstAnswers.eq(index).val());
}
});
}
var waitingDialog = {
show: function (message) {
"use strict";
$("#loadingmodal").find("h1").html(message);
$("body").addClass("loading");
},
hide: function () {
"use strict";
$("body").removeClass("loading");
}
};
var ajaxErrDialog = {
show: function (c) {
"use strict";
$("#ajaxerr").html(c);
$("#ajaxerr .links").html("<a class='btn btn-default ajaxerr-close'>"
+ gettext("Close message") + "</a>");
$("body").addClass("ajaxerr");
},
hide: function () {
"use strict";
$("body").removeClass("ajaxerr");
}
};