mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-10-26 05:23:18 +01:00 
			
		
		
		
	Compare commits
	
		
			8 Commits
		
	
	
		
			beta
			...
			033ee010f8
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 033ee010f8 | ||
|  | e6f3084588 | ||
|  | 145e55da75 | ||
|  | d3ba95cdca | ||
|  | 8ffb0ebb56 | ||
|  | 5038af9e34 | ||
|  | 819b4214c9 | ||
|  | b8a93b0b75 | 
| @@ -38,6 +38,7 @@ SPDX-License-Identifier: GPL-3.0-or-later | |||||||
| </a> | </a> | ||||||
|  |  | ||||||
| <input id="alias" type="text" class="form-control" placeholder="Nom/note ..."> | <input id="alias" type="text" class="form-control" placeholder="Nom/note ..."> | ||||||
|  | <button id="trigger" class="btn btn-secondary">Click me !</button> | ||||||
|  |  | ||||||
| <hr> | <hr> | ||||||
|  |  | ||||||
| @@ -63,15 +64,46 @@ SPDX-License-Identifier: GPL-3.0-or-later | |||||||
|         refreshBalance(); |         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) { |     alias_obj.keyup(function(event) { | ||||||
|         let code = event.originalEvent.keyCode |         let code = event.originalEvent.keyCode | ||||||
|         if (65 <= code <= 122 || code === 13) { |         if (65 <= code <= 122 || code === 13) { | ||||||
|             debounce(reloadTable)() |             debounce(reloadTable)() | ||||||
|         } |         } | ||||||
|  |         if (code === 0) | ||||||
|  |             process_qrcode(); | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|     $(document).ready(init); |     $(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() { |     function init() { | ||||||
|         $(".table-row").click(function (e) { |         $(".table-row").click(function (e) { | ||||||
|             let target = e.target.parentElement; |             let target = e.target.parentElement; | ||||||
| @@ -168,4 +200,4 @@ SPDX-License-Identifier: GPL-3.0-or-later | |||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| </script> | </script> | ||||||
| {% endblock %} | {% endblock %} | ||||||
|   | |||||||
| @@ -60,7 +60,10 @@ | |||||||
| {% if user_object.pk == user.pk %} | {% if user_object.pk == user.pk %} | ||||||
|     <div class="text-center"> |     <div class="text-center"> | ||||||
|         <a class="small badge badge-secondary" href="{% url 'member:auth_token' %}"> |         <a class="small badge badge-secondary" href="{% url 'member:auth_token' %}"> | ||||||
|             <i class="fa fa-cogs"></i>{% trans 'API token' %} |             <i class="fa fa-cogs"></i> {% trans 'API token' %} | ||||||
|  |         </a> | ||||||
|  |         <a class="small badge badge-secondary" href="{% url 'member:qr_code' user_object.pk %}"> | ||||||
|  |             <i class="fa fa-qrcode"></i> {% trans 'QR Code' %} | ||||||
|         </a> |         </a> | ||||||
|     </div> |     </div> | ||||||
| {% endif %} | {% endif %} | ||||||
|   | |||||||
							
								
								
									
										36
									
								
								apps/member/templates/member/qr_code.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								apps/member/templates/member/qr_code.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | |||||||
|  | {% extends "base.html" %} | ||||||
|  | {% comment %} | ||||||
|  | SPDX-License-Identifier: GPL-3.0-or-later | ||||||
|  | {% endcomment %} | ||||||
|  | {% load i18n %} | ||||||
|  |  | ||||||
|  | {% block content %} | ||||||
|  | <div class="card bg-light"> | ||||||
|  |   	<h3 class="card-header text-center"> | ||||||
|  | 		{% trans "QR Code for" %} {{ user_object.username }} ({{ user_object.first_name }} {{user_object.last_name }}) | ||||||
|  |   	</h3> | ||||||
|  |   	<div class="text-center" id="qrcode"> | ||||||
|  |   	</div> | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | {% endblock %} | ||||||
|  |  | ||||||
|  | {% block extrajavascript %} | ||||||
|  | <script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js" integrity="sha512-CNgIRecGo7nphbeZ04Sc13ka07paqdeTu0WR1IM4kNcpmBAUSHSQX0FslNhTDadL4O5SAGapGt4FodqL8My0mA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> | ||||||
|  | <script> | ||||||
|  | 	var qrc = new QRCode(document.getElementById("qrcode"), { | ||||||
|  | 		text: "{{ user_object.pk }}\0", | ||||||
|  | 		width: 1024, | ||||||
|  | 		height: 1024 | ||||||
|  | 	}); | ||||||
|  | </script> | ||||||
|  | {% endblock %} | ||||||
|  |  | ||||||
|  | {% block extracss %} | ||||||
|  | <style> | ||||||
|  | img { | ||||||
|  |     width: 100% | ||||||
|  | } | ||||||
|  | </style> | ||||||
|  | {% endblock %} | ||||||
| @@ -25,4 +25,5 @@ urlpatterns = [ | |||||||
|     path('user/<int:pk>/aliases/', views.ProfileAliasView.as_view(), name="user_alias"), |     path('user/<int:pk>/aliases/', views.ProfileAliasView.as_view(), name="user_alias"), | ||||||
|     path('user/<int:pk>/trust', views.ProfileTrustView.as_view(), name="user_trust"), |     path('user/<int:pk>/trust', views.ProfileTrustView.as_view(), name="user_trust"), | ||||||
|     path('manage-auth-token/', views.ManageAuthTokens.as_view(), name='auth_token'), |     path('manage-auth-token/', views.ManageAuthTokens.as_view(), name='auth_token'), | ||||||
|  |     path('user/<int:pk>/qr_code/', views.QRCodeView.as_view(), name='qr_code'), | ||||||
| ] | ] | ||||||
|   | |||||||
| @@ -402,6 +402,14 @@ class ManageAuthTokens(LoginRequiredMixin, TemplateView): | |||||||
|         context['token'] = Token.objects.get_or_create(user=self.request.user)[0] |         context['token'] = Token.objects.get_or_create(user=self.request.user)[0] | ||||||
|         return context |         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               # | #              CLUB               # | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user