Commit bb4aa9aa authored by Daniel Stan's avatar Daniel Stan

page dons: répare js et adapte view do_transfert

La page dons est remplie en fond avec une variable contenant son propre idbde
en emetteur. On modifie également la déclaration du form (bon préfixe) pour
faire marcher le js de transfert.

Côté view (ajaj), on adapte do_transfert pour gérer également les dons
(premier paramètre de la requête).
parent 235da6f6
......@@ -210,6 +210,7 @@ def do_credit_retrait(request, action):
@csrf_exempt
def do_transfert(request):
"""Gestion de la requête AJAJ pour un transfert."""
# On appelle la fonction standard
success, sock_ou_response, variables_standard = utilities.get_varsock(request, socket=True)
if success:
......@@ -221,10 +222,12 @@ def do_transfert(request):
transfertdata = json.loads(transfertdata)
except ValueError:
return HttpResponse("Failed to decode JSON object.", status=500)
if not( isinstance(transfertdata, list) and len(transfertdata) == 4 and
[type(i) for i in transfertdata] == [list, list, unicode, unicode]):
return HttpResponse("Bad parameter", status=500)
emetteurs, destinataires, montant, commentaire = transfertdata
if not( isinstance(transfertdata, list) and
[type(i) for i in transfertdata] == [bool, list, list, unicode, unicode]):
return HttpResponse("Bad parameter %r" % [type(i) for i in transfertdata], status=500)
is_don, emetteurs, destinataires, montant, commentaire = transfertdata
# Formattage des champs
try:
montant = float(montant)
except ValueError:
......@@ -234,9 +237,21 @@ def do_transfert(request):
if destinataires == []:
return HttpResponse(json.dumps({"retcode" : 1113, "msg" : None, "errmsg" : "Transfert impossible : pas de destinataires."}))
montant = int(round(montant * 100))
paquet = ["transferts", [emetteurs, destinataires, montant, commentaire]]
# Sanity check: si don, alors emetteurs devrait être
if is_don and set(emetteurs) != {request.session["whoami"]["idbde"]}:
return HttpResponse("emetteurs invalide pour dons", status=403)
# Forgeons le paquet à envoyer
if is_don:
paquet = ["dons", [destinataires, montant, commentaire]]
else:
paquet = ["transferts", [emetteurs, destinataires, montant, commentaire]]
# Et on envoie le tout
sock.write(json.dumps(paquet))
out = nk.full_read(sock)
return HttpResponse(json.dumps(out))
else:
return HttpResponse(u'"Erreur"')
......@@ -185,7 +185,7 @@ def dons(request, sock, kwargs):
"""La page des dons"""
variables = {}
# Le formulaire de Don
variables["don_form"] = forms.TransfertForm(label_suffix=" :")
variables["don_form"] = forms.TransfertForm(prefix='transfert_form', label_suffix=" :")
return (variables, "note/dons.html")
@standard_page
......
......@@ -237,6 +237,7 @@ function put_note(itself, affiche, idbde, nom, prenom, secondstack,solde,time_ne
idbde_field = document.getElementById("id_" + target + "_form-idbde");
idbde_field.value = idbde;
}
}
/* Si on est en mode single_stack,
on recopie le nom de note dans l'onglet de transfert
et on peuple les variables transfert_from et transfert_to */
......@@ -248,7 +249,7 @@ function put_note(itself, affiche, idbde, nom, prenom, secondstack,solde,time_ne
transfert_to = idbde;
}
else {
else if( !page_dons ) {
//Si il contient déjà quelque chose, alors on remplit le FROM
var note_emetteur = document.getElementById("transfert_emetteur");
......@@ -256,7 +257,6 @@ function put_note(itself, affiche, idbde, nom, prenom, secondstack,solde,time_ne
transfert_from = idbde;
}
}
}
}
/* fonction appelée quand on clique sur une note déjà dans le stack */
......@@ -975,7 +975,7 @@ function transferer() {
};
xhr.open("POST", NOTE_ROOT_URL + "do_transfert/", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var transfertdata = [emetteurs, destinataires, montant_field.value, commentaire_field.value];
var transfertdata = [page_dons, emetteurs, destinataires, montant_field.value, commentaire_field.value];
transfertdata = JSON.stringify(transfertdata);
var post_data = "transfertdata=" + encodeURIComponent(transfertdata);
xhr.send(post_data);
......
......@@ -11,6 +11,7 @@
<script type="text/javascript">
/* Sur la page de dons, il y a certaines données auxquelles on n'a pas accès (le solde, la photo) */
page_dons = true;
transfert_from = {{ request.session.whoami.idbde }};
</script>
{% endblock %}
......@@ -50,6 +51,10 @@ page_dons = true;
<div id="tab-content">
<div class="forms">
<form onsubmit="transferer(); return false;">
<legend>Transfert d'argent
vers <span class="transfert_conso_double">
<span id="transfert_destinataire">#??#</span></span>
</legend>
<legend>Combien ? :</legend>
{{ don_form.as_p }}
<input type="submit" class="btn btn-primary" value="Transférer"/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment