force close working
This commit is contained in:
parent
5694e4b9bc
commit
8e7b9e2fd3
7 changed files with 112 additions and 48 deletions
|
@ -593,7 +593,8 @@ class GlobalPermissions(models.Model):
|
||||||
('order_to_inventory', "Générer un inventaire à partir d'une commande"),
|
('order_to_inventory', "Générer un inventaire à partir d'une commande"),
|
||||||
('edit_balance_account', "Modifier la balance d'un compte"),
|
('edit_balance_account', "Modifier la balance d'un compte"),
|
||||||
('change_account_password', "Modifier le mot de passe d'une personne de l'équipe"),
|
('change_account_password', "Modifier le mot de passe d'une personne de l'équipe"),
|
||||||
('special_add_account', "Créer un compte avec une balance initiale")
|
('special_add_account', "Créer un compte avec une balance initiale"),
|
||||||
|
('can_close_kfet', "Peut fermer manuelement la K-Fêt"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
function kfet_open(init_date, init_satus) {
|
function kfet_open(init_date, init_satus, init_force_close, force_close_url, force_open_url) {
|
||||||
// VARIABLES
|
// VARIABLES
|
||||||
var kfet_open_bullet = $('#kfet-open');
|
var kfet_open_bullet = $('#kfet-open');
|
||||||
var open_status = $('#open_status');
|
var open_status = $('#open_status');
|
||||||
|
var force_close_button = $('#force_close_button');
|
||||||
// bullet
|
// bullet
|
||||||
var open_color = "#73C252";
|
var open_color = "#73C252";
|
||||||
var closed_color = "#B42B26";
|
var closed_color = "#B42B26";
|
||||||
|
@ -13,16 +14,25 @@ function kfet_open(init_date, init_satus) {
|
||||||
|
|
||||||
var kfet_open_date = init_date;
|
var kfet_open_date = init_date;
|
||||||
var kfet_open = init_status;
|
var kfet_open = init_status;
|
||||||
|
var force_close = init_force_close;
|
||||||
|
|
||||||
|
// EVENT
|
||||||
|
force_close_button.click(function() {
|
||||||
|
if (force_close) {
|
||||||
|
$.get(force_open_url, function(data) {});
|
||||||
|
} else {
|
||||||
|
$.get(force_close_url, function(data) {});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// INITIALISAITION
|
// INITIALISAITION
|
||||||
update_open_bullet();
|
update_open();
|
||||||
update_open_status();
|
update_force_button();
|
||||||
|
|
||||||
// On recherge toute les 30sec
|
// On recherge toute les 30sec
|
||||||
// (dans le cas où le statut deviendrait inconn)
|
// (dans le cas où le statut deviendrait inconn)
|
||||||
setInterval(function() {
|
setInterval(function() {
|
||||||
update_open_bullet();
|
update_open();
|
||||||
update_open_status();
|
|
||||||
}, 30 * 1000); // 60 * 1000 milsec
|
}, 30 * 1000); // 60 * 1000 milsec
|
||||||
|
|
||||||
// FONCTIONS
|
// FONCTIONS
|
||||||
|
@ -39,32 +49,43 @@ function kfet_open(init_date, init_satus) {
|
||||||
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
function update_open_bullet() {
|
function do_kfet_close() {
|
||||||
nb_min = nb_min_diff();
|
|
||||||
console.log("BULLET | K-Fêt ouverte : " + kfet_open);
|
|
||||||
console.log(nb_min + " minute(s) depuis la dernière mise à jour");
|
|
||||||
if (nb_min > 15) {
|
|
||||||
kfet_open_bullet.css({'background-color': unknown_color});
|
|
||||||
} else if (kfet_open){
|
|
||||||
kfet_open_bullet.css({'background-color': open_color});
|
|
||||||
} else {
|
|
||||||
kfet_open_bullet.css({'background-color': closed_color});
|
kfet_open_bullet.css({'background-color': closed_color});
|
||||||
}
|
open_status.parent().css({'background-color': closed_color_status});
|
||||||
}
|
|
||||||
function update_open_status() {
|
|
||||||
nb_min = nb_min_diff();
|
|
||||||
console.log("STATUS | K-Fêt ouverte : " + kfet_open);
|
|
||||||
console.log(nb_min + " minute(s) depuis la dernière mise à jour");
|
|
||||||
if (nb_min > 15) {
|
|
||||||
open_status.parent().css({'background-color': unknown_color});
|
|
||||||
open_status.html("?????");
|
|
||||||
} else if (kfet_open){
|
|
||||||
open_status.parent().css({'background-color': open_color});
|
|
||||||
open_status.html("OUVERTE");
|
|
||||||
} else {
|
|
||||||
open_status.parent().css({'background-color': closed_color});
|
|
||||||
open_status.html("FERMÉE");
|
open_status.html("FERMÉE");
|
||||||
}
|
}
|
||||||
|
function do_kfet_open() {
|
||||||
|
kfet_open_bullet.css({'background-color': open_color});
|
||||||
|
open_status.parent().css({'background-color': open_color_status});
|
||||||
|
open_status.html("OUVERTE");
|
||||||
|
}
|
||||||
|
function do_kfet_unknown() {
|
||||||
|
kfet_open_bullet.css({'background-color': unknown_color});
|
||||||
|
open_status.parent().css({'background-color': unknown_color_status});
|
||||||
|
open_status.html("?????");
|
||||||
|
}
|
||||||
|
function update_open() {
|
||||||
|
nb_min = nb_min_diff();
|
||||||
|
console.log("K-Fêt ouverte : " + (kfet_open&&(!force_close)));
|
||||||
|
console.log(nb_min + " minute(s) depuis la dernière mise à jour");
|
||||||
|
if (force_close) {
|
||||||
|
do_kfet_close();
|
||||||
|
} else {
|
||||||
|
if (nb_min > 15) {
|
||||||
|
do_kfet_unknown();
|
||||||
|
} else if (kfet_open){
|
||||||
|
do_kfet_open();
|
||||||
|
} else {
|
||||||
|
do_kfet_close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function update_force_button() {
|
||||||
|
if (force_close) {
|
||||||
|
force_close_button.html('Réouvrir la K-Fêt');
|
||||||
|
} else {
|
||||||
|
force_close_button.html('Fermer manuellement');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// SYNCHRONIZATION
|
// SYNCHRONIZATION
|
||||||
websocket_msg_default = {'last_op': 0}
|
websocket_msg_default = {'last_op': 0}
|
||||||
|
@ -76,12 +97,21 @@ function kfet_open(init_date, init_satus) {
|
||||||
|
|
||||||
socket.onmessage = function(e) {
|
socket.onmessage = function(e) {
|
||||||
var data = $.extend({}, websocket_msg_default, JSON.parse(e.data));
|
var data = $.extend({}, websocket_msg_default, JSON.parse(e.data));
|
||||||
console.log("Message reçu de la part de la porte.");
|
|
||||||
|
|
||||||
kfet_open_date = new Date(data['kfet_open_date']);
|
if (data['door_action']) {
|
||||||
kfet_open = data['kfet_open'];
|
console.log("* Message reçu de la part de la porte.");
|
||||||
|
|
||||||
update_open_bullet();
|
kfet_open_date = new Date(data['door_action']['kfet_open_date']);
|
||||||
update_open_status();
|
kfet_open = data['door_action']['kfet_open'];
|
||||||
|
|
||||||
|
update_open();
|
||||||
|
}
|
||||||
|
if (data['force_action']) {
|
||||||
|
force_close = data['force_action']['force_close'];
|
||||||
|
console.log("* Message reçu de la part d'un-e utilisat-rice-eur. Close = " + force_close);
|
||||||
|
|
||||||
|
update_open();
|
||||||
|
update_force_button();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,26 @@
|
||||||
<script type="text/javascript" src="{% static 'kfet/js/kfet_open.js' %}"></script>
|
<script type="text/javascript" src="{% static 'kfet/js/kfet_open.js' %}"></script>
|
||||||
<script type="text/javascript" src="{% static 'kfet/js/reconnecting-websocket.js' %}"></script>
|
<script type="text/javascript" src="{% static 'kfet/js/reconnecting-websocket.js' %}"></script>
|
||||||
|
|
||||||
|
{# K-Fêt open #}
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function () {
|
||||||
|
$('#genericteam').on('click', function () {
|
||||||
|
setTimeout(function () { location.reload() }, 1000);
|
||||||
|
});
|
||||||
|
init_date = new Date("{{ kfet_open_date.isoformat }}");
|
||||||
|
init_status = {{ kfet_open | yesno:"true,false"}};
|
||||||
|
init_force_close = {{ kfet_force_close | yesno:"true,false"}};
|
||||||
|
force_close_url = "{% url 'kfet.force_close' %}?close";
|
||||||
|
force_open_url = "{% url 'kfet.force_close' %}";
|
||||||
|
kfet_open(init_date,
|
||||||
|
init_status,
|
||||||
|
init_force_close,
|
||||||
|
force_close_url,
|
||||||
|
force_open_url);
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
{% block extra_head %}{% endblock %}
|
{% block extra_head %}{% endblock %}
|
||||||
|
|
||||||
{# Vieux IE pas comprendre HTML5 et Media Queries #}
|
{# Vieux IE pas comprendre HTML5 et Media Queries #}
|
||||||
|
|
|
@ -57,15 +57,3 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
$(document).ready(function () {
|
|
||||||
$('#genericteam').on('click', function () {
|
|
||||||
setTimeout(function () { location.reload() }, 1000);
|
|
||||||
});
|
|
||||||
init_date = new Date("{{ kfet_open_date.isoformat }}");
|
|
||||||
init_status = {{ kfet_open | yesno:"true,false"}};
|
|
||||||
kfet_open(init_date, init_status);
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
|
@ -20,8 +20,8 @@
|
||||||
<div class="line line-big" id="open_status">?????</div>
|
<div class="line line-big" id="open_status">?????</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<a class="btn btn-primary btn-lg" href="#TODO">
|
<a class="btn btn-primary btn-lg" id="force_close_button">
|
||||||
Ouvrir manuellement
|
Fermer manuellement
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -211,7 +211,10 @@ urlpatterns = [
|
||||||
|
|
||||||
url('^kfet_open/$',
|
url('^kfet_open/$',
|
||||||
views.UpdateKfetOpen.as_view(),
|
views.UpdateKfetOpen.as_view(),
|
||||||
name='kfet.settings.kfet_open'),
|
name='kfet.kfet_open'),
|
||||||
|
url('^force_close/$',
|
||||||
|
views.UpdateForceClose.as_view(),
|
||||||
|
name='kfet.force_close'),
|
||||||
|
|
||||||
# -----
|
# -----
|
||||||
# Transfers urls
|
# Transfers urls
|
||||||
|
|
|
@ -94,15 +94,37 @@ class UpdateKfetOpen(View):
|
||||||
cache.set('KFET_OPEN_DATE', timezone.now())
|
cache.set('KFET_OPEN_DATE', timezone.now())
|
||||||
|
|
||||||
# Websocket
|
# Websocket
|
||||||
websocket_data = {}
|
websocket_data = {
|
||||||
websocket_data['kfet_open'] = is_open
|
'door_action': {
|
||||||
websocket_data['kfet_open_date'] = timezone.now()
|
'kfet_open': is_open,
|
||||||
|
'kfet_open_date': timezone.now(),
|
||||||
|
},
|
||||||
|
}
|
||||||
consumers.KfetOpen.group_send('kfet.is_open', websocket_data)
|
consumers.KfetOpen.group_send('kfet.is_open', websocket_data)
|
||||||
|
|
||||||
(is_open_get, time) = KFET_OPEN()
|
(is_open_get, time) = KFET_OPEN()
|
||||||
return HttpResponse("%r at %s" % (is_open_get, time.isoformat()))
|
return HttpResponse("%r at %s" % (is_open_get, time.isoformat()))
|
||||||
|
|
||||||
|
|
||||||
|
class UpdateForceClose(View):
|
||||||
|
def get(self, request, *args, **kwargs):
|
||||||
|
force_close = "close" in request.GET
|
||||||
|
cache.set('KFET_FORCE_CLOSE', force_close)
|
||||||
|
|
||||||
|
# Websocket
|
||||||
|
websocket_data = {
|
||||||
|
'force_action': {
|
||||||
|
'force_close': force_close,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
consumers.KfetOpen.group_send('kfet.is_open', websocket_data)
|
||||||
|
|
||||||
|
force_close_get = KFET_FORCE_CLOSE()
|
||||||
|
time = timezone.now()
|
||||||
|
return HttpResponse("closed : %r at %s" % (force_close_get,
|
||||||
|
time.isoformat()))
|
||||||
|
|
||||||
|
|
||||||
@teamkfet_required
|
@teamkfet_required
|
||||||
def login_genericteam(request):
|
def login_genericteam(request):
|
||||||
# Check si besoin de déconnecter l'utilisateur de CAS
|
# Check si besoin de déconnecter l'utilisateur de CAS
|
||||||
|
|
Loading…
Reference in a new issue