Browse Source

Autocomplétion pour le champ membre dans la déclaration d'un emprunt.

Fixe le nombre de caractères nécessaire avant de lancer l'autocomplétion à 4.
Ceci, afin qu'un utilisateur qui n'est pas superuser ne puisse pas récupérer la liste des membres facilement (dans la perspective d'une utilisation de Coin avec des permissions).
SimonBoulier 7 years ago
parent
commit
69dd3634dc
2 changed files with 10 additions and 5 deletions
  1. 8 5
      coin/members/autocomplete_light_registry.py
  2. 2 0
      hardware_provisioning/admin.py

+ 8 - 5
coin/members/autocomplete_light_registry.py

@@ -10,8 +10,11 @@ autocomplete_light.register(Member,
                             search_fields=[
                                 '^first_name', 'last_name', 'organization_name',
                                 'username', 'nickname'],
-                            # This will actually data-minimum-characters which
-                            # will set widget.autocomplete.minimumCharacters.
-                            autocomplete_js_attributes={
-                                'placeholder': 'Other model name ?', },
-                            )
+                            attrs={
+                                # This will set the input placeholder attribute:
+                                'placeholder': 'Nom/Prénom/Pseudo (min 4 caractères)',
+                                # Nombre minimum de caractères à saisir avant de compléter.
+                                # Fixé à 4 pour ne pas qu'on puisse avoir accès à la liste de tous les membres facilement quand on n'est pas superuser. Peut-être que 3 serait plus convénient.
+                                'data-autocomplete-minimum-characters': 4,
+                            },
+)

+ 2 - 0
hardware_provisioning/admin.py

@@ -7,6 +7,7 @@ from django.contrib import admin
 from django.contrib.auth import get_user_model
 from django.forms import ModelChoiceField
 from django.utils import timezone
+import autocomplete_light
 
 from .models import ItemType, Item, Loan, Storage
 import coin.members.admin
@@ -143,6 +144,7 @@ class LoanAdmin(admin.ModelAdmin):
             loan_date_end=datetime.now())
     end_loan.short_description = 'Mettre fin au prêt'
 
+    form = autocomplete_light.modelform_factory(Loan, fields='__all__')
 
     def formfield_for_foreignkey(self, db_field, request, **kwargs):
         if db_field.name == 'item':