diff --git a/apps/activity/templates/activity/activity_entry.html b/apps/activity/templates/activity/activity_entry.html index 0286bdb7..c5368c2d 100644 --- a/apps/activity/templates/activity/activity_entry.html +++ b/apps/activity/templates/activity/activity_entry.html @@ -38,6 +38,7 @@ SPDX-License-Identifier: GPL-3.0-or-later +
@@ -63,15 +64,46 @@ SPDX-License-Identifier: GPL-3.0-or-later refreshBalance(); } + function process_qrcode() { + let name = alias_obj.val(); + $.get("/api/note/note?search=" + name + "&format=json").done( + function (res) { + let note = res.results[0]; + $.post("/api/activity/entry/?format=json", { + csrfmiddlewaretoken: CSRF_TOKEN, + activity: {{ activity.id }}, + note: note.id, + guest: null + }).done(function () { + addMsg(interpolate(gettext( + "Entry made for %s whose balance is %s €"), + [note.name, note.balance / 100]), "success", 4000); + reloadTable(true); + }).fail(function (xhr) { + errMsg(xhr.responseJSON, 4000); + }); + }).fail(function (xhr) { + errMsg(xhr.responseJSON, 4000); + }); + } + alias_obj.keyup(function(event) { let code = event.originalEvent.keyCode if (65 <= code <= 122 || code === 13) { debounce(reloadTable)() } + if (code === 0) + process_qrcode(); }); $(document).ready(init); + alias_obj2 = document.getElementById("alias"); + $("#trigger").click(function (e) { + addMsg("Clicked", "success", 1000); + alias_obj.val(alias_obj.val() + "\0"); + alias_obj2.dispatchEvent(new KeyboardEvent('keyup')); + }) function init() { $(".table-row").click(function (e) { let target = e.target.parentElement; @@ -168,4 +200,4 @@ SPDX-License-Identifier: GPL-3.0-or-later }); } -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/apps/member/templates/member/includes/profile_info.html b/apps/member/templates/member/includes/profile_info.html index 3a927c9f..f6471bc4 100644 --- a/apps/member/templates/member/includes/profile_info.html +++ b/apps/member/templates/member/includes/profile_info.html @@ -60,7 +60,10 @@ {% if user_object.pk == user.pk %}
- {% trans 'API token' %} +  {% trans 'API token' %} + + +  {% trans 'QR Code' %}
{% endif %} diff --git a/apps/member/templates/member/qr_code.html b/apps/member/templates/member/qr_code.html new file mode 100644 index 00000000..00e1256c --- /dev/null +++ b/apps/member/templates/member/qr_code.html @@ -0,0 +1,36 @@ +{% extends "base.html" %} +{% comment %} +SPDX-License-Identifier: GPL-3.0-or-later +{% endcomment %} +{% load i18n %} + +{% block content %} +
+

+ {% trans "QR Code for" %} {{ user_object.username }} ({{ user_object.first_name }} {{user_object.last_name }}) +

+
+
+
+ + +{% endblock %} + +{% block extrajavascript %} + + +{% endblock %} + +{% block extracss %} + +{% endblock %} diff --git a/apps/member/urls.py b/apps/member/urls.py index 51d506ab..a052d03d 100644 --- a/apps/member/urls.py +++ b/apps/member/urls.py @@ -25,4 +25,5 @@ urlpatterns = [ path('user//aliases/', views.ProfileAliasView.as_view(), name="user_alias"), path('user//trust', views.ProfileTrustView.as_view(), name="user_trust"), path('manage-auth-token/', views.ManageAuthTokens.as_view(), name='auth_token'), + path('user//qr_code/', views.QRCodeView.as_view(), name='qr_code'), ] diff --git a/apps/member/views.py b/apps/member/views.py index ad0cc79f..e9b1a5d4 100644 --- a/apps/member/views.py +++ b/apps/member/views.py @@ -365,6 +365,14 @@ class ManageAuthTokens(LoginRequiredMixin, TemplateView): context['token'] = Token.objects.get_or_create(user=self.request.user)[0] return context +class QRCodeView(LoginRequiredMixin, DetailView): + """ + Affiche le QR Code + """ + model = User + context_object_name = "user_object" + template_name = "member/qr_code.html" + extra_context = {"title": _("QR Code")} # ******************************* # # CLUB #