Commit 8ceb8da1 authored by Praibait's avatar Praibait

Merge branch 'InterfacePot'

parents 71618f05 4cf44a95
This diff is collapsed.
File added
......@@ -41,6 +41,30 @@ def quick_search(request, mode="basic"):
response = sock_ou_response
return HttpResponse(u'"Erreur"')
@csrf_exempt
def search_pot(request, idpot = None):
"""Renvoie l'objet JSON résultat d'une recherche pour les entrées d'un [Pot],
destiné à être chargé par javascript"""
if (request.method == "GET") or (request.session.get("logged", None) != "ok"):
return HttpResponse("Get the fuck out of here", status=444)
else:
try:
asked = request.POST["asked"]
idpot = int(idpot)
except:
return HttpResponse("")
success, sock_ou_response = nk.socket_still_alive(request)
if success:
sock = sock_ou_response
data = [asked, idpot]
sock.write(json.dumps(["search_pot", data]))
out = nk.full_read(sock)["msg"]
return HttpResponse(json.dumps(out))
else:
response = sock_ou_response
return HttpResponse(u'"Erreur"')
@csrf_exempt
def get_display_info(request):
"""Renvoie l'objet JSON résultat d'un get_display_info
......@@ -113,6 +137,29 @@ def search_readhesion(request):
return response
@csrf_exempt
def do_entree_pot(request):
"""Effectue l'entrée d'une personne dans un pot dans la BDD"""
if (request.method == "GET") or (request.session.get("logged", None) != "ok"):
return HttpResponse("Get the fuck out of here", status=444)
else:
try:
entree = request.POST["entree"]
entree = json.loads(entree)
except:
return HttpResponse(entree)
success, sock_ou_response = nk.socket_still_alive(request)
if success:
sock = sock_ou_response
sock.write(json.dumps(["do_entree_pot", entree]))
out = nk.full_read(sock)["msg"]
return HttpResponse(json.dumps(out))
else:
response = sock_ou_response
return response
@csrf_exempt
def get_boutons(request, flags=""):
"""Renvoie l'objet JSON résultat d'un get_boutons,
......@@ -252,7 +299,7 @@ def do_transfert(request):
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)
......
File added
......@@ -57,6 +57,13 @@ class InviteForm(BootstrapForm):
nom = forms.CharField(label=_(u"Nom"))
prenom = forms.CharField(label=_(u"Prénom"))
class EntreePotForm(forms.Form):
"""Formulaire pour le choix des pots à l'entrée"""
pot = forms.ChoiceField(label="Choix du [Pot] :")
class ToogleEtatPot(forms.Form):
""" Le formulaire est vide, cela permet seulement d'avoir accès à un bouton de manière simple !"""
class FrenchFloatField(forms.FloatField):
"""Un champ FloatField, mais qui accepte aussi la virgule comme séparateur"""
def to_python(self, raw_value):
......
......@@ -26,7 +26,7 @@ msgstr "Username"
#: forms.py:51
msgid "Ton pseudo note kfet"
msgstr "Your username 'note kfet'"
msgstr "Your note kfet username"
#: forms.py:52 templates/note/modifier_compte.html:150
msgid "Mot de passe"
......@@ -445,11 +445,11 @@ msgstr "Emergency contact name"
#: forms.py:534 forms.py:631
msgid "Téléphone de la personne à contacter en cas d'urgence"
msgstr "Emergency contact telephone number"
msgstr "Emergency contact phone number"
#: forms.py:535 forms.py:632
msgid "Années à l'ENS (année du WEI à venir incluse)"
msgstr "Years at ENS (year coming included)"
msgstr "Years at ENS (coming year included)"
#: forms.py:536 forms.py:633 templates/note/wei_monInscription.html:60
msgid "Département d'enseignement"
......@@ -457,7 +457,7 @@ msgstr "Teaching Department"
#: forms.py:537 forms.py:634
msgid "Mode de paiement"
msgstr "Mode of payment"
msgstr "Payment method"
#: forms.py:538 forms.py:635
msgid "Normalien, Prof, Directeur de département..."
......@@ -644,7 +644,7 @@ msgstr "Contact number in case of emergency"
#: forms.py:750
msgid "Département d'enseignement envisagé"
msgstr "Teaching Department desired"
msgstr "Planned teaching Department"
#: forms.py:752
msgid ""
......@@ -845,11 +845,11 @@ msgstr "Name of the WEI"
#: forms.py:819
msgid "Inscriptions 1A ouvertes"
msgstr "Registration 1Y available"
msgstr "1Y registration available"
#: forms.py:820
msgid "Inscriptions 2A+ ouvertes"
msgstr "Registration 2Y+ available"
msgstr "2Y+ registration available"
#: forms.py:821
msgid "Adresse de contact"
......@@ -886,7 +886,7 @@ msgstr "Remittance"
#: forms.py:876
msgid "Le montant d'un chèque doit être positif ou nul."
msgstr "The mount of a cheque muste be potivie or null."
msgstr "A cheque amount must be non-negative."
#: forms.py:905
msgid "Nom du client ou Raison sociale"
......@@ -1253,7 +1253,7 @@ msgid "Pulls"
msgstr "Hoodies"
#: templates/handler_base.html:56 templates/note/ask_regen_pw.html:7
#: templates/note/base.html:54 templates/note/login.html:4
#: templates/note/base.html:55 templates/note/login.html:4
#: templates/note/login.html:6 templates/note/regen_pw.html:7
msgid "Connexion"
msgstr "Log in"
......@@ -1376,7 +1376,16 @@ msgstr "There is currently no activity to which you can invite. "
#: templates/note/aliases.html:5
#, python-format
msgid "Gestion des alias du compte n°%(idbde)s"
msgstr "Management of aliases of account n°%(idbde)s"
msgstr "Account n°%(idbde)s - Aliases management"
#: templates/note/aliases.html:9 templates/note/comptes.html:4
#: templates/note/comptes.html.py:17 templates/note/historique_pseudo.html:9
#: templates/note/recherche_avancee.html:13
#: templates/note/search_historique_pseudo.html:35
#: templates/note/un_compte.html:9 templates/note/un_compte_photo.html:8
#: templates/note/une_readhesion.html:15
msgid "Comptes"
msgstr "Accounts"
#: templates/note/aliases.html:10
msgid "Gestion des alias"
......@@ -1747,7 +1756,7 @@ msgstr "(bold = right&over-right red = over-right only)"
msgid "Rien à afficher pour le moment."
msgstr "Nothing to display at the moment."
#: templates/note/login.html:14
#: templates/note/login.html:15
msgid ""
"\n"
" Si vous rencontrez des problèmes lors de la navigation dans la "
......@@ -2187,7 +2196,7 @@ msgstr "Billing"
#: templates/note/trez_base.html:12
msgid "Remboursement"
msgstr "Reimbursment"
msgstr "Rembursment"
#: templates/note/trez_base.html:18
msgid "Trez stuff..."
......@@ -2441,6 +2450,17 @@ msgstr "You do not have access to this page."
msgid "Consignes générales"
msgstr "General instructions"
#: templates/note/wei_accueil.html:29
#, python-format
msgid ""
"Vous pouvez ici vous inscrire au %(wei_name)s qui aura lieu <b class=\"text-"
"info\">du %(debut)s au %(fin)s</b> ou vérifier vos informations "
"d'inscription si cette dernière a déjà été enregistrée."
msgstr ""
"Here you can register to the %(wei_name)s that will take place <b class="
"\"text-info\">from %(debut)s to %(fin)s</b> or just check your informations "
"if you have already registered"
#: templates/note/wei_accueil.html:33
msgid "N'oubliez pas le moment venu d'apporter :"
msgstr "Do not forget to bring:"
......@@ -2473,6 +2493,22 @@ msgstr "A towel"
msgid "Une pièce d'identité"
msgstr "An ID"
#: templates/note/wei_accueil.html:45
msgid ""
"Il est fortement recommandé de <b class=\"text-danger\">ne rien apporter de "
"précieux (argent, portefeuille ...). "
msgstr ""
"It is highly recommended to <b class=\"text-danger\"> not bring anything "
"valuable (money, wallet ...). "
#: templates/note/wei_accueil.html:46
msgid ""
"Au moindre souci ou pour toute information, n'hésitez pas à contacter "
"l'équipe WEI à l'adresse"
msgstr ""
"If any problem occurs, or for any information, please contact the WEI team "
"at the adress"
#: templates/note/wei_admin.html:25
msgid "Administration de l'application WEI"
msgstr "Management of the WEI application"
......@@ -2658,7 +2694,7 @@ msgstr "Phone number"
#: templates/note/wei_monInscription.html:52
msgid "Numéro de la personne à contacter en cas d'urgence"
msgstr ""
msgstr "Phone number of emergency contact"
#: templates/note/wei_monInscription.html:56
msgid "Années depuis l'intégration (année du WEI à venir incluse)"
......
......@@ -68,6 +68,8 @@ SUCCMSG_DELACT = _(u"Activité supprimée avec succès.")
SUCCMSG_ADDACT = _(u"Activité ajoutée avec succès.")
SUCCMSG_VALIDACT = _(u"Activité validée avec succès.")
SUCCMSG_DEVALIDACT = _(u"Activité dévalidée avec succès.")
SUCCMSG_OUVRACT = _(u"Activité ouverte avec succès.")
SUCCMSG_FERMACT = _(u"Activité fermée avec succès.")
SUCCMSG_DELINV = _(u"Invité supprimé avec succès.")
SUCCMSG_ADDINV = _(u"Invité ajouté avec succès.")
......
File added
......@@ -270,9 +270,9 @@ _acl_restricted_weak = ["overforced", "transactions_admin", "chgpass", "comptes"
#: Dico recensant les masques de droits : ``keyword`` -> ``("nom à afficher", <masque>)``
#: ils seront proposés dans l'ordre des keywords
ACL_MASKS = {
'2_all': (_(u"Tous mes droits"), [[], [], False]),
'0_all': (_(u"Tous mes droits"), [[], [], False]),
'1_note': (_(u"Droits note seulement"), [_acl_restricted, _acl_restricted, True]),
'0_basic': (_(u"Droits basiques"), [_acl_restricted_weak, _acl_restricted_weak, True]),
'2_basic': (_(u"Droits basiques"), [_acl_restricted_weak, _acl_restricted_weak, True]),
}
_acl_masks_keys = ACL_MASKS.keys()
_acl_masks_keys.sort()
......@@ -305,6 +305,7 @@ def dummy():
_(u"Virements")
_(u"Trésorerie")
_(u"Wei")
_(u"Droits")
# Les noms des catégories des boutons
_(u"Alcool")
......
{% extends "note/base.html" %}
{% load note_templatetags %}
{% load i18n %}
{% load static %}
{% block title %}{{ nompot }}{% endblock %}
{% block additional_javascript %}
<script src="{% static 'js/jquery.color-2.1.2.js' %}"></script>
<script src="{% static 'js/custom/getXMLHttpRequest.js' %}"></script>
<script src="{% static 'js/custom/liste_dynamique_quick.js' %}"></script>
<script src="{% static 'js/custom/consos_double_stack.js' %}"></script>
<script src="{% static 'js/custom/consos_single_stack.js' %}"></script>
<script src="{% static 'js/custom/consos_base.js' %}"></script>
<script src="{% static 'js/custom/liste_dynamique_pot.js' %}"></script>
<script src="{% static 'js/custom/gestion_pot.js' %}"></script>
<script src="{% static 'js/custom/toggle_transactions.js' %}"></script>
{% endblock %}
{% block applets %}
<li role="presentation" class="active"><a onclick="set_conso(this)" class="entree">Entrées</a></li>
<li role="presentation"><a onclick="set_conso(this)" class="credit">Crédit</a></li>
<li role="presentation"><a onclick="set_conso(this)" class="transfert">Transfert</a></li>
<!--<li role="presentation"><a href="{{ NOTE_ROOT_URL }}pot/">Accueil</a></li>-->
{% endblock %}
{% block content %}
<h1 id="nompot" style="opacity: 0;">{{ nompot }}</h1>
<input type="hidden" id="idpot" name="idpot" value="{{ idpot }}"> <!-- Permet d'accéder facilement à l'id du pot dans le js-->
<h2 style="opacity: 0;">Entrées : <span id="compteur_entrees">0</span></h2>
<div id="tab-frame" class="row">
<!-- Tout ce qui concerne l'entrée -->
<div class="entree">
<div class="well center-block">
<div class="search2 search">
<input type="text" name="Recherche" id="id_search_field_pot" autocomplete="off" onkeyup="search_field_moved_pot()"/>
</div>
</div>
<div id="liste_comptes" class="panel panel-default table-responsive hidden">
<table class="table table-condensed table-bordered">
</table>
</div>
</div>
<!-- Tout ce qui concerne les transferts et credits -->
<div class="transfert credit hidden">
<!-- Quicksearch principale -->
<div id="note_container_1" class="note_container col-xs-offset-0 col-sm-offset-1 col-lg-offset-2 col-xs-3 col-sm-3 col-lg-2">
<div style="height:50px"></div>
<div class="stack_container">
<span id="stack_label" class="hidden">{% trans "Emetteurs :" %}</span>
<ul id="stack" class="list-unstyled">
<li></li>
</ul>
</div>
<div class="search">
<input type="text" name="Recherche" id="id_search_field" autofocus="autofocus" placeholder="{% trans "Chercher une note…" %}" onkeyup="search_field_moved();return(false);"/>
<ul class="liste_notes hidden" id="liste_notes">
</ul>
</div>
</div>
<div class="current_selection col-xs-5 col-sm-4 col-lg-4">
<!-- Panneau d'affichage des notes -->
<div class="curr well">
<p>{% trans "Sélection :" %}</p>
<p id="current_selection"></p>
</div>
<!-- Formulaire de transferts -->
<div class="transfert hidden">
<div id="transfert">
<button class="btn btn-primary transfert_conso_double hidden" onClick="transfert_switch_notes();">{% trans "Inverser" %}</button>
<form onsubmit="transfert_pot(); return false;">
<div class="col-xs-12 col-lg-9">
<legend class="hidden">
<span class="transfert_conso_double">
<span id="transfert_emetteur"></span>
<span id="transfert_destinataire"></span>
</span>
</legend>
{{ transfert_form.as_p }}
</div>
<div style="height:20px"></div>
<input type="submit" class="btn btn-primary col-lg-2" value="{% trans "Ok" %}"/>
</form>
</div>
</div>
</div>
<!-- Deuxième quicksearch pour les transferts -->
<div class="transfert hidden">
<div id="note_container_2" class="note_container col-xs-3 col-sm-3 col-lg-2">
<div style="height:50px"></div>
<div class="stack_container" id="stack_container_2">
<span id="stack_label_2" class="hidden">{% trans "Destinataires :" %}</span>
<ul id="stack_2" class="list-unstyled">
</ul>
</div>
<div class="search" id ="search_2">
<input type="text" name="Recherche" id="id_search_field_2" placeholder="{% trans "Chercher une note…" %}" onkeyup="search_field_moved(true);return(false);"/>
<ul class="liste_notes hidden" id="liste_notes_2">
</ul>
</div>
</div>
</div>
<!-- Formulaire de crédit -->
<div class="credit hidden">
<div id="credit" class="col-xs-4 col-sm-4 col-lg-4">
<form onsubmit="crediter_ou_retirer(true); return false;" > {# true = crédit #}
<legend class="hidden">{% trans "créditer" %}<span id="credit_pseudo"><span></span></span>{% trans " :" %}</legend>
{{ credit_form.as_p }}
<input type="submit" class="btn btn-primary" value="{% trans "créditer" %}"/>
</form>
</div>
</div>
<!--Formulaire caché qui est là uniquement pour faire marcher le script js de base-->
<div id="retrait" class="tab-panel">
<form onsubmit="crediter_ou_retirer(false); return false;" class="col-lg-offset-1 col-lg-10"> {# false = retrait #}
<legend>{% trans "Retirer de l'argent à" %}<span id="retrait_pseudo"><span></span></span>{% trans " :" %}</legend>
{{ retrait_form.as_p }}
<input type="submit" class="btn btn-primary" value="{% trans "Retirer" %}"/>
</form>
</div>
</div>
</div>
<!-- L'historique des transactions ne concerne que les onglets transfert et credit -->
<div class="transfert credit hidden">
{% include "note/template_historique_pot.html" %}
</div>
{% endblock %}
......@@ -4,11 +4,12 @@
{% block title %}{% blocktrans with id=activite.id%}Gestion de l'activité n°{{ id }}{% endblocktrans %}{% endblock %}
{% block applets %}
<li role="presentation"{% if not isadmin %} class="active"{% endif %}><a href="{{ NOTE_ROOT_URL }}activites/">{% trans "Activités" %}</a></li>
<li role="presentation"{% if not hasadmin %} class="active"{% endif %}><a href="{{ NOTE_ROOT_URL }}activites/">{% trans "Activités" %}</a></li>
<li role="presentation"><a href="{{ NOTE_ROOT_URL }}mes_activites/">{% trans "Mes activités" %}</a></h5></li>
{% if hasadmin %}
<li role="presentation"{% if isadmin and not isold %} class="active"{% endif %}><a href="{{ NOTE_ROOT_URL }}activites/admin/">{% trans "Administration" %}</a></h5></li>
<li role="presentation"{% if isadmin and isold %} class="active"{% endif %}><a href="{{ NOTE_ROOT_URL }}activites/admin/old">{% trans "Activités passées" %}</a></li>
<li role="presentation"{% if hasadmin and not isold %} class="active"{% endif %}><a href="{{ NOTE_ROOT_URL }}activites/admin/">{% trans "Administration" %}</a></h5></li>
<li role="presentation"{% if hasadmin and isold %} class="active"{% endif %}><a href="{{ NOTE_ROOT_URL }}activites/admin/old">{% trans "Activités passées" %}</a></li>
<li role="presentation"><a href="{{ NOTE_ROOT_URL }}pot_gestion/">{% trans "Gestion des pots" %}</a></li>
{% endif %}
{% endblock %}
......
......@@ -3,11 +3,12 @@
{% block title %}{% blocktrans with id=activite.id %}Modification de l'activité n°{{ id }}{% endblocktrans %}{% endblock %}
{% block applets %}
<li role="presentation"{% if not isadmin %} class="active"{% endif %}><a href="{{ NOTE_ROOT_URL }}activites/">{% trans "Activités" %}</a></li>
<li role="presentation"{% if not hasadmin %} class="active"{% endif %}><a href="{{ NOTE_ROOT_URL }}activites/">{% trans "Activités" %}</a></li>
<li role="presentation"><a href="{{ NOTE_ROOT_URL }}mes_activites/">{% trans "Mes activités" %}</a></li>
{% if hasadmin %}
<li role="presentation"{% if isadmin and not isold %} class="active"{% endif %}><a href="{{ NOTE_ROOT_URL }}activites/admin/">{% trans "Administration" %}</a></li>
<li role="presentation"{% if isadmin and isold %} class="active"{% endif %}><a href="{{ NOTE_ROOT_URL }}activites/admin/old">{% trans "Activités Passées" %}</a></li>
<li role="presentation"{% if hasadmin and not isold %} class="active"{% endif %}><a href="{{ NOTE_ROOT_URL }}activites/admin/">{% trans "Administration" %}</a></li>
<li role="presentation"{% if hasadmin and isold %} class="active"{% endif %}><a href="{{ NOTE_ROOT_URL }}activites/admin/old">{% trans "Activités Passées" %}</a></li>
<li role="presentation"><a href="{{ NOTE_ROOT_URL }}pot_gestion/">{% trans "Gestion des pots" %}</a></li>
{% endif %}
{% endblock %}
......
......@@ -9,26 +9,32 @@
{% if hasadmin %}
<li role="presentation"{% if isadmin and not isold %} class="active"{% endif %}><a href="{{ NOTE_ROOT_URL }}activites/admin/">{% trans "Administration" %}</a></li>
<li role="presentation"{% if isadmin and isold %} class="active"{% endif %}><a href="{{ NOTE_ROOT_URL }}activites/admin/old">{% trans "Activités Passées" %}</a></li>
{% endif %}
<li role="presentation"><a href="{{ NOTE_ROOT_URL }}pot_gestion/">{% trans "Gestion des pots" %}</a></li>
{% endif %}
{% endblock %}
{% block content %}
<div class="page-header">
<h1>{% trans "Activités" %}</h1>
<h1>{% if isadmin and not isold %} {% trans "Administration des " %} {% endif %}
{% trans "Activités" %}
{% if isadmin and isold %} {% trans " passées" %} {% endif %}
</h1>
{% if not isadmin %}
<h1><small>{% trans "Bienvenue sur l'interface permettant d'inviter tes amis aux pots." %}</small></h1>
</div>
<div>
{% if activites %}
<div id="presentation">
{% blocktrans %}
<p>L'inscription de l'invité est <span class="text-danger">obligatoire</span>, et doit être réalisée <span class="text-danger">avant 20h le jour du pot.</span></p>
<p>Une participation de <span class="text-info">5 € par invité</span> (reversée à la section organisatrice) sera demandée à l'entrée du pot.</p>
<p>Attention, <span class="text-danger">une même personne ne pourra être invitée que 5 fois dans l'année</span>, et tu ne peux inviter que <span class="text-danger">3 personnes par pot.</span></p>
{% endblocktrans %}
{% endif %}
</div>
<div class="liste_activites">
{% if activites %}
<div class="liste_activites">
{% for act in activites %}
{% render_activite act isadmin=isadmin %}
{% render_activite act isadmin=isadmin hasnote=hasnote %}
{% endfor %}
</div>
{% else %}
......
......@@ -31,10 +31,11 @@
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">NK2015{% if DEV %}(dev){% elif not PROD %}(test){% endif %}</a>
<a class="navbar-brand" href="{{ NOTE_ROOT_URL }}index/">NK2015{% if DEV %}(dev){% elif not PROD %}(test){% endif %}</a>
</div>
<div class="collapse navbar-collapse" id="id-menu-items">
<ul class="nav navbar-nav navbar-left">
<li>
<form method="POST" action="{% url 'set_language' %}">
{% csrf_token %}
<input type="hidden" name="next" value="{{ request.get_full_path }}" />
......
......@@ -9,16 +9,20 @@
{% block additional_javascript %}
<script src="{% static 'js/custom/getXMLHttpRequest.js' %}"></script>
<script src="{% static 'js/custom/liste_dynamique_quick.js' %}"></script>
<script src="{% static 'js/custom/consos_base.js' %}"></script>
<script>
page_dons = false;
/* fonction appelée à la fin du timer (déclenché sur un onkeyup sur le champ de recherche) */
function getInfo() {
var search_field = document.getElementById("id_search_field");
var asked = search_field.value;
/* on ne fait la requête que si on a au moins un caractère pour chercher */
if (asked.length>=1) {
request(asked, readDataInvitation);
}
request("note", asked, readDataInvitation);
} else { // Sinon on cache la liste de notes
$('#liste_notes')[0].className = "hidden";
}
}
/* wraper de readData */
......@@ -32,6 +36,7 @@ function put_note(itself, affiche, idbde, _, __, ___) {
var hiddenfield = document.getElementById("id_output_idbde");
field.value=affiche;
hiddenfield.value=idbde;
$('#liste_notes')[0].className = "hidden";
}
</script>
{% endblock %}
......@@ -42,6 +47,8 @@ function put_note(itself, affiche, idbde, _, __, ___) {
<li role="presentation"><a href="{{ NOTE_ROOT_URL }}mes_activites/">{% trans "Mes activités" %}</a></li>
{% if hasadmin %}
<li role="presentation"{% if isadmin %} class="active"{% endif %}><a href="{{ NOTE_ROOT_URL }}activites/admin/">{% trans "Administration" %}</a></li>
<li role="presentation"><a href="{{ NOTE_ROOT_URL }}activites/admin/old">{% trans "Activités passées" %}</a></li>
<li role="presentation"><a href="{{ NOTE_ROOT_URL }}pot_gestion/">{% trans "Gestion des pots" %}</a></li>
{% endif %}
{% endblock %}
......@@ -110,31 +117,42 @@ function put_note(itself, affiche, idbde, _, __, ___) {
<div class="InviteForm">
<!-- Le formulaire d'invitation -->
<h2>{% trans "Nouvel invité" %}</h2>
<h3>{% trans "Nouvel invité" %}</h3>
{% if form %}
<form action="{{ NOTE_ROOT_URL }}activites/{{activite.id}}{% if isadmin %}/admin{% endif %}/" method="post" class="form-horizontal">{% csrf_token %}
{{ form.non_field_errors }}
<div class="form-group col-sm-10">
<div class="form-group col-sm-7">
{{ form.nom.errors }}
<label for="id_nom">{% trans "Nom :" %}</label> {{ form.nom }}
</div>
<div class="form-group col-sm-10">
<!--</div>
<div class="form-group col-sm-9">-->
{{ form.prenom.errors }}
<label for="id_prenom">{% trans "Prénom :" %}</label> {{ form.prenom }}
</div>
<div class="col-sm-1"></div>
{% if isadmin %}
{# L'admin doit en plus spécifier le responsable #}
{% trans "Responsable :" %} <input type="text" name="recherche" id="id_search_field" autocomplete="off" value="" onkeyup="search_field_moved();return(false);"/>
{% endif %}
{# On ajoute à la main le champ caché idrespo #}
<input type="hidden" name="idrespo" id="id_output_idbde" value="{{ whoami.idbde }}"/>
<button type="submit" class="btn btn-primary">{% trans "Inviter" %}</button>
{# L'admin doit en plus spécifier le responsable #}
<div class="form-group col-sm-3">
{% trans "Responsable :" %}
<div class="search">
<input type="text" name="recherche" id="id_search_field" autocomplete="off" value="" onkeyup="search_field_moved();return(false);"/>
<ul id="liste_notes" class="liste_notes hidden"></ul>
</div>
{% endif %}
</div>
{# On ajoute à la main le champ caché idrespo #}
<input type="hidden" name="idrespo" id="id_output_idbde" value="{{ whoami.idbde }}"/>
<div class="col-sm-1">
<div style="height: 50px"></div>
<button type="submit" class="btn btn-primary">{% trans "Inviter" %}</button>
</div>
</form>
{% endif %}
</div>
{% if isadmin %}
<div class="liste_notes liste_responsables">
<div class="liste_notes liste_responsables hidden">
<ul id="liste_notes">
</ul>
</div>
......
......@@ -9,6 +9,7 @@
{% if hasadmin %}
<li role="presentation"><a href="{{ NOTE_ROOT_URL }}activites/admin/">{% trans "Administration" %}</a></li>
<li role="presentation"{% if isadmin %} class="active"{% endif %}><a href="{{ NOTE_ROOT_URL }}activites/admin/old">{% trans "Activités Passées" %}</a></li>
<li role="presentation"><a href="{{ NOTE_ROOT_URL }}pot_gestion/">{% trans "Gestion des pots" %}</a></li>
{% endif %}
{% endblock %}
......@@ -35,3 +36,4 @@
</form>
</div>
{% endblock %}
{% extends "note/base.html" %}
{% load note_templatetags %}
{% load i18n %}
{% block title %}{% trans "Mes activités" %}{% endblock %}
{% block applets %}
<li role="presentation"><a href="{{ NOTE_ROOT_URL }}activites/">{% trans "Activités" %}</a></li>
<li role="presentation" class="active"><a href="{{ NOTE_ROOT_URL }}mes_activites/">{% trans "Mes activités" %}</a></li>
{% if hasadmin %}
<li role="presentation"><a href="{{ NOTE_ROOT_URL }}activites/admin/">{% trans "Administration" %}</a></li>
{% endif %}
{% endblock %}
{% block content %}
<div class="page-header">
<h1>{% trans "Activités" %}</h1>
<h1><small>{% trans "Gestion de tes activités" %}</small></h1>
</div>
{% if activites %}
<div class="liste_activites">
{% for act in activites %}
<p>
{% render_activite act ismine="true" %}
</p>
{% endfor %}
</div>
{% else %}
<p class="text-danger">{% trans "Tu n'as aucune activité pour le moment." %}</p>
{% endif %}
<div class="row">
<form method="post" action="" class="form-horizontal col-xs-12 col-lg-offset-2 col-lg-8">{% csrf_token %}
<legend>{% trans "Ajouter une activité :" %}</legend>
{% include "note/form_contents.html" %}
</form>
</div>
{% endblock %}
{% block additional_javascript %}
<script type="text/javascript">
function check () {
$(id_liste).checked = $(id_pot).checked
c
};
$(id_pot).change(check);
</script>
{% endblock %}
{% extends "note/base.html" %}
{% load note_templatetags %}
{% load i18n %}
{% block title %}Administration des [Pot]s{% endblock %}
{% block applets %}
<li role="presentation"><a href="{{ NOTE_ROOT_URL }}activites/">{% trans "Activités" %}</a></li>
<li role="presentation"><a href="{{ NOTE_ROOT_URL }}mes_activites/">{% trans "Mes activités" %}</a></li>
{% if hasadmin %}
<li role="presentation"><a href="{{ NOTE_ROOT_URL }}activites/admin/">{% trans "Administration" %}</a></li>
<li role="presentation"><a href="{{ NOTE_ROOT_URL }}activites/admin/old">{% trans "Activités passées" %}</a></li>
<li role="presentation" class="active"><a href="{{ NOTE_ROOT_URL }}pot_gestion/">{% trans "Gestion des pots" %}</a></li>
{% endif %}
{% endblock %}
{% block content %}
<h2>Bienvenue sur l'interface d'administration des [Pot]s</h2>
<br>
<h3>Zone de test des graphiques d'entrées</h3>
<div id="container" style="width:50%; height:400px;"></div>
<br>
<h2>Todo de l'interface [Pot]</h2>
<div style="text-align:left">
<p><h4 style="color:red"> BUGS </h4></p>
<ul>
</ul>
<br>
<p><h4 style="color:orange"> TODO : </h4></p>
<ol>
<li>Créer un droit pour la recherche en mode pot (on matche sur les nom/prenom donc les droits ne sont pas strictement les même que pour la quicksearch. Mettre ce droit dans l'alias note ?</li>
<li>Afficher dynamiquement le nombre de résultats affichés</li>
<li>Pouvoir switcher rapidement sur crédit si quelqu'un est en négatif et y inscrire automatiquement son pseudo (easy)</li>
<li>Possibilité d'avoir le droit de noter et de rechercher des non-à-jour par les même champs que les adhérents</li>
<li> Page d'aministration des [Pot]s :
<ul>
<li> Afficher des statistiques sur les [Pot]s : nombre d'entrées, nombre d'invités, graphique de l'affluence, etc..</li>
<li> Affichage et exportation de la liste des personnes rentrées : possibilité de ne voir que les invités, impression pdf, ...</li>
<li> Compte de l'argent liquide entré au cours de la soirée : possibilité de savoir combien y'a dans les caisses (mise à zéro quand remisage dans le coffre), savoir si quelqu'un va manquer de liquide, etc...</li>
</ul>
À voir par la suite comment fusionner ça avec l'administration des activités...--> bouton qui redirige vers la page ?</li>
</ol>
<p><h4 style="color:green"> DONE : </h4></p>
<ul>
<li>Page d'entrée d'un pot : <br>
<ul>
<li>Onglet de notage des entrées</li>
<ul>
<li>Recherche par quicksearch des adhérents (à jour) et des clubs sur : pseudo, alias, ancien pseudo, idbde (idbde renvoie aussi $
<li>Recherche des invités par nom, prénom et pseudo de l'inviteur (début du mot) (no regexp ?)</li>
<li>Affichage du type, nom, prénom, pseudo et si juste alias (or whatever) match sous la forme alias (pseudo)</li>
<li>Note des entrées par un clic sur la ligne dans la table entree_activites</li>
<li>Impossible de rentrer si (par ordre de vérification) : activité fermée, déjà rentrée, club, plus adhérent, ou négatif. Vérifi$
<li>Affichage du retour serveur</li>
<li>Panneau d'entrée d'un invité : info inviteur + paiement par note inviteur (bouton entrée pot) ou par l'invité (crédit invite$
</ul>
<li>Onglet de crédit</li>
<li>Onglet de transfert</li>
</ul>
</li>
</ul>