mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-10-31 07:49:57 +01:00 
			
		
		
		
	Compare commits
	
		
			20 Commits
		
	
	
		
			78838b404c
			...
			fix_activi
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 0d0fdef363 | ||
|  | 821efbf78b | ||
|  | a209e0d366 | ||
|  | ef485e0628 | ||
|  | 1481aa0635 | ||
|  | 867bf9fd25 | ||
|  | 47fda0ea36 | ||
|  | 623290827a | ||
|  | a87ce625f3 | ||
|  | 3559787fa7 | ||
|  | bd6ed27ae5 | ||
|  | 43dc676747 | ||
|  | caaeab6b0b | ||
|  | 54ba786884 | ||
|  | 80e109114f | ||
|  | 787005e60d | ||
|  | 414e103686 | ||
|  | 942d887c2e | ||
|  | a63c34fe37 | ||
|  | 2be6133458 | 
| @@ -38,7 +38,6 @@ 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> | ||||||
|  |  | ||||||
| @@ -64,46 +63,15 @@ 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; | ||||||
| @@ -200,4 +168,4 @@ SPDX-License-Identifier: GPL-3.0-or-later | |||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| </script> | </script> | ||||||
| {% endblock %} | {% endblock %} | ||||||
| @@ -329,7 +329,7 @@ class ActivityEntryView(LoginRequiredMixin, SingleTableMixin, TemplateView): | |||||||
|         context["noteuser_ctype"] = ContentType.objects.get_for_model(NoteUser).pk |         context["noteuser_ctype"] = ContentType.objects.get_for_model(NoteUser).pk | ||||||
|         context["notespecial_ctype"] = ContentType.objects.get_for_model(NoteSpecial).pk |         context["notespecial_ctype"] = ContentType.objects.get_for_model(NoteSpecial).pk | ||||||
|  |  | ||||||
|         activities_open = Activity.objects.filter(open=True).filter( |         activities_open = Activity.objects.filter(open=True, activity_type__manage_entries=True).filter( | ||||||
|             PermissionBackend.filter_queryset(self.request, Activity, "view")).distinct().all() |             PermissionBackend.filter_queryset(self.request, Activity, "view")).distinct().all() | ||||||
|         context["activities_open"] = [a for a in activities_open |         context["activities_open"] = [a for a in activities_open | ||||||
|                                       if PermissionBackend.check_perm(self.request, |                                       if PermissionBackend.check_perm(self.request, | ||||||
|   | |||||||
| @@ -44,7 +44,8 @@ class ProfileForm(forms.ModelForm): | |||||||
|     """ |     """ | ||||||
|     A form for the extras field provided by the :model:`member.Profile` model. |     A form for the extras field provided by the :model:`member.Profile` model. | ||||||
|     """ |     """ | ||||||
|     report_frequency = forms.IntegerField(required=False, initial=0, label=_("Report frequency")) |     # Remove widget=forms.HiddenInput() if you want to use report frequency. | ||||||
|  |     report_frequency = forms.IntegerField(required=False, initial=0, label=_("Report frequency"), widget=forms.HiddenInput()) | ||||||
|  |  | ||||||
|     last_report = forms.DateTimeField(required=False, disabled=True, label=_("Last report date")) |     last_report = forms.DateTimeField(required=False, disabled=True, label=_("Last report date")) | ||||||
|  |  | ||||||
| @@ -76,7 +77,8 @@ class ProfileForm(forms.ModelForm): | |||||||
|     class Meta: |     class Meta: | ||||||
|         model = Profile |         model = Profile | ||||||
|         fields = '__all__' |         fields = '__all__' | ||||||
|         exclude = ('user', 'email_confirmed', 'registration_valid', ) |         # Remove ml_[asso]_registration from exclude if the concerned association uses nk20 to manage its mailing list. | ||||||
|  |         exclude = ('user', 'email_confirmed', 'registration_valid', 'ml_sport_registration', ) | ||||||
|  |  | ||||||
|  |  | ||||||
| class ImageForm(forms.Form): | class ImageForm(forms.Form): | ||||||
|   | |||||||
| @@ -60,10 +60,7 @@ | |||||||
| {% 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 %} | ||||||
|   | |||||||
| @@ -1,36 +0,0 @@ | |||||||
| {% 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,5 +25,4 @@ 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'), |  | ||||||
| ] | ] | ||||||
|   | |||||||
| @@ -388,14 +388,6 @@ 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               # | ||||||
|   | |||||||
| @@ -31,3 +31,4 @@ class RoleAdmin(admin.ModelAdmin): | |||||||
|     Admin customisation for Role |     Admin customisation for Role | ||||||
|     """ |     """ | ||||||
|     list_display = ('name', ) |     list_display = ('name', ) | ||||||
|  |     filter_horizontal = ('permissions',) | ||||||
|   | |||||||
| @@ -3800,6 +3800,38 @@ | |||||||
|             "description": "Voir les utilisateurs adhérents au club parent" |             "description": "Voir les utilisateurs adhérents au club parent" | ||||||
|         } |         } | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |         "model": "permission.permission", | ||||||
|  |         "pk": 242, | ||||||
|  |         "fields": { | ||||||
|  |             "model": [ | ||||||
|  |                 "note", | ||||||
|  |                 "transaction" | ||||||
|  |             ], | ||||||
|  |             "query": "[\"AND\", {\"destination\": [\"club\", \"note\"]}, [\"OR\", {\"source__balance__gte\": {\"F\": [\"SUB\", [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]], 2000]}}, {\"valid\": false}]]", | ||||||
|  |             "type": "add", | ||||||
|  |             "mask": 2, | ||||||
|  |             "field": "", | ||||||
|  |             "permanent": false, | ||||||
|  |             "description": "Créer une transaction vers la note d'un club" | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |         "model": "permission.permission", | ||||||
|  |         "pk": 243, | ||||||
|  |         "fields": { | ||||||
|  |             "model": [ | ||||||
|  |                 "member", | ||||||
|  |                 "profile" | ||||||
|  |             ], | ||||||
|  |             "query": "{\"user__memberships__club\": [\"club\"], \"user__memberships__date_start__lte\": [\"today\"],\"user__memberships__date_end__gte\": [\"today\"]}", | ||||||
|  |             "type": "view", | ||||||
|  |             "mask": 3, | ||||||
|  |             "field": "", | ||||||
|  |             "permanent": false, | ||||||
|  |             "description": "Voir les profils des membres du club" | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|         "model": "permission.role", |         "model": "permission.role", | ||||||
|         "pk": 1, |         "pk": 1, | ||||||
| @@ -4377,7 +4409,7 @@ | |||||||
|                 238 |                 238 | ||||||
|             ] |             ] | ||||||
|         } |         } | ||||||
|     }, |     },   | ||||||
|     { |     { | ||||||
|         "model": "wei.weirole", |         "model": "wei.weirole", | ||||||
|         "pk": 12, |         "pk": 12, | ||||||
|   | |||||||
| @@ -26,3 +26,5 @@ MAILTO=notekfet2020@lists.crans.org | |||||||
|  00  9     *   *   *     root   cd /var/www/note_kfet && env/bin/python manage.py refresh_highlighted_buttons -v 0 |  00  9     *   *   *     root   cd /var/www/note_kfet && env/bin/python manage.py refresh_highlighted_buttons -v 0 | ||||||
| # Vider les tokens Oauth2 | # Vider les tokens Oauth2 | ||||||
|  00  6     *   *   *     root   cd /var/www/note_kfet && env/bin/python manage.py cleartokens -v 0 |  00  6     *   *   *     root   cd /var/www/note_kfet && env/bin/python manage.py cleartokens -v 0 | ||||||
|  | # Envoyer la liste des abonnés à la NL BDA | ||||||
|  |  00  8     *   *   0     root   cd /var/www/note_kfet && env/bin/python manage.py extract_ml_registrations -t art -v 0 | ||||||
| @@ -159,11 +159,6 @@ SPDX-License-Identifier: GPL-3.0-or-later | |||||||
|     </nav> |     </nav> | ||||||
|     <div class="{% block containertype %}container{% endblock %} my-3"> |     <div class="{% block containertype %}container{% endblock %} my-3"> | ||||||
| 	<div id="messages"> | 	<div id="messages"> | ||||||
| 	    {% if user.is_authenticated %} |  | ||||||
| 		<div class="alert alert-info"> |  | ||||||
| 		    Venez au festival des Sens de l'Art du 2 au 7 décembre 🐘 ! |  | ||||||
| 		</div> |  | ||||||
| 	    {% endif %} |  | ||||||
|             {% if user.is_authenticated %} |             {% if user.is_authenticated %} | ||||||
|                 {% if not user|is_member:"BDE" %} |                 {% if not user|is_member:"BDE" %} | ||||||
|                     <div class="alert alert-danger"> |                     <div class="alert alert-danger"> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user