Commit 4ab81107 authored by Vincent Le gallic's avatar Vincent Le gallic

Validation/Dévalidation des transactions

parent 3fe6b4ca
......@@ -11,6 +11,7 @@ urlpatterns = patterns('note.views',
url(ur'^/logout/*$', 'logout'),
# consos
url(ur'^/consos(?P<double>-double)?/*$', 'consos'),
url(ur'^/consos(?P<double>-double)?/(?P<de>de)?valider_transaction/(?P<idtransaction>[^/]*)$', 'toggle_transaction'),
# les activités et invitations
url(ur'^/(?:activite|invitation)s?(?P<admin>/admin)?/*$', 'activites'),
url(ur'^/(?:activite|invitation)s?/(?P<idact>[^/]*)/gestion(?P<validation>/validate|/invalidate|/delete)?/*$', 'activite_gestion'),
......
......@@ -544,6 +544,11 @@ def _cast_as_preid(preid, request, fallback='%sinscriptions/' % (settings.NOTE_R
Renvoie dans tous les cas (<l'entier ou None>, <si None, un HttpResponseRedirect('<NOTE_ROOT_URL>/boutons/')>)"""
return _cast_as_int(preid, request, settings.ERRMSG_PREID_INVALID % (preid), fallback)
def _cast_as_idtransaction(idtransaction, request, fallback='%sconsos/' % (settings.NOTE_ROOT_URL,)):
"""Essaye de transformer idtransaction en entier.
Si échoue, ajoute un message d'erreur.
Renvoie dans tous les cas (<l'entier ou None>, <si None, un HttpResponseRedirect('<NOTE_ROOT_URL>/consos/')>)"""
return _cast_as_int(idtransaction, request, settings.ERRMSG_IDTRANSACTION_INVALID % (idtransaction), fallback)
"""Définitions des views"""
......@@ -968,20 +973,45 @@ def del_invite(request, idact=None, idinv=None, admin=None):
idinv, fallback_redirect = _cast_as_idinv(idinv, request, (idact, admin))
if fallback_redirect != None:
return fallback_redirect
if success:
sock = sock_ou_response
if idinv != -1:
# On demande toujours la suppression avec le flag "A",
# de toutes façons il est ignoré par le serveur si on n'a pas les droits
sock.write(json.dumps(["del_invite", [idinv, "A"]]))
out = full_read(sock)
if out["retcode"] == 404:
_add_error(request, settings.ERRMSG_IDINV_FAIL % (idinv))
elif _is_success_code(out["retcode"]):
_add_success(request, settings.SUCCMSG_DELINV)
else:
_add_error(request, out["errmsg"])
return HttpResponseRedirect(u"%sactivites/%s/%s" % (settings.NOTE_ROOT_URL, idact, "admin/" * admin))
if idinv != -1:
# On demande toujours la suppression avec le flag "A",
# de toutes façons il est ignoré par le serveur si on n'a pas les droits
sock.write(json.dumps(["del_invite", [idinv, "A"]]))
out = full_read(sock)
if out["retcode"] == 404:
_add_error(request, settings.ERRMSG_IDINV_FAIL % (idinv))
elif _is_success_code(out["retcode"]):
_add_success(request, settings.SUCCMSG_DELINV)
else:
_add_error(request, out["errmsg"])
return HttpResponseRedirect(u"%sactivites/%s/%s" % (settings.NOTE_ROOT_URL, idact, "admin/" * admin))
else:
response = sock_ou_response
return response
def toggle_transaction(request, double=None, de=None, idtransaction=None):
"""Valider/Dévalider une transaction"""
double = (double == "-double")
devalidate = (de == "de")
# On appelle la fonction standard
success, sock_ou_response, variables_standard = standard_page(request, socket=True)
if success:
sock = sock_ou_response
variables = {}
idtransaction, fallback_redirect = _cast_as_idtransaction(idtransaction, request)
if fallback_redirect != None:
return fallback_redirect
cmd = "%svalider_transaction" % ("de" if devalidate else "")
sock.write(json.dumps([cmd, idtransaction]))
out = full_read(sock)
if out["retcode"] == 404:
_add_error(request, settings.ERRMSG_IDTRANSACTION_FAIL % (idinv))
elif _is_success_code(out["retcode"]):
succmsg = settings.SUCCMSG_DEVALIDATE_TRANSACTION if devalidate else settings.SUCCMSG_VALIDATE_TRANSACTION
_add_success(request, succmsg)
else:
_add_error(request, out["errmsg"])
return HttpResponseRedirect(u"%sconsos%s/" % (settings.NOTE_ROOT_URL, "-double" * double))
else:
response = sock_ou_response
return response
......
......@@ -221,6 +221,9 @@ ERRMSG_IDBUTTON_INVALID = u'''"%s" n'est pas un identifiant de bouton valide.'''
ERRMSG_IDBUTTON_FAIL = u"Le bouton n°%s n'existe pas."
ERRMSG_PREID_INVALID = u'''"%s" n'est pas un identifiant de préinscription valide.'''
ERRMSG_PREID_FAIL = u"La préinscription n°%s n'existe pas."
ERRMSG_IDTRANSACTION_INVALID = u'''"%s" n'est pas un identifiant de transaction valide.'''
ERRMSG_IDTRANSACTION_FAIL = u"La transaction n°%s n'existe pas."
ERRMSG_DJANGO_SESSION_EXPIRED = u"Ta session Django a expiré, reconnecte-toi."
ERRMSG_NOSOCKET = u"La connexion avec le serveur NK2015 a été perdue, reconnecte-toi."
......@@ -248,3 +251,5 @@ SUCCMSG_DELBUTTON = u"Bouton supprimé avec succès."
SUCCMSG_PREINSCRIPTION_ADDED = u"Préinscription ajoutée avec succès."
SUCCMSG_PREINSCRIPTION_DELETED = u"Préinscription supprimée avec succès."
SUCCMSG_PHOTO_UPDATED = u"Photo modifiée avec succès."
SUCCMSG_VALIDATE_TRANSACTION = u"Transaction validée avec succès."
SUCCMSG_DEVALIDATE_TRANSACTION = u"Transaction dévalidée avec succès."
......@@ -132,7 +132,7 @@
<td>{{transaction.quantite}}</td>
<td>{% euro transaction.montant %}</td>
<td>{{transaction.description}}</td>
<td><a>{% render_booleen transaction.valide %}</a></td>
<td><a href="{{ NOTE_ROOT_URL }}consos/{% if transaction.valide %}de{% endif %}valider_transaction/{{ transaction.id }}">{% render_booleen transaction.valide %}</a></td>
</tr>
{% endfor %}
</tbody>
......
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