diff --git a/apps/member/forms.py b/apps/member/forms.py index 5517f1ff..4d03764e 100644 --- a/apps/member/forms.py +++ b/apps/member/forms.py @@ -44,6 +44,9 @@ class MembershipForm(forms.ModelForm): class Meta: model = Membership fields = ('user','roles','date_start') + # Le champ d'utilisateur est remplacé par un champ d'auto-complétion. + # Quand des lettres sont tapées, une requête est envoyée sur l'API d'auto-complétion + # et récupère les noms d'utilisateur valides widgets = { 'user': autocomplete.ModelSelect2(url='member:user_autocomplete', attrs={ diff --git a/apps/member/urls.py b/apps/member/urls.py index d57541c2..e534cf47 100644 --- a/apps/member/urls.py +++ b/apps/member/urls.py @@ -18,5 +18,7 @@ urlpatterns = [ path('user/',views.UserListView.as_view(),name="user_list"), path('user/',views.UserDetailView.as_view(),name="user_detail"), path('user//update',views.UserUpdateView.as_view(),name="user_update_profile"), + + # API for the user autocompleter path('user/user-autocomplete',views.UserAutocomplete.as_view(),name="user_autocomplete"), ] diff --git a/apps/member/views.py b/apps/member/views.py index 608e3dee..29b9fe20 100644 --- a/apps/member/views.py +++ b/apps/member/views.py @@ -117,9 +117,14 @@ class UserListView(LoginRequiredMixin,SingleTableView): class UserAutocomplete(autocomplete.Select2QuerySetView): """ - Auto complete note by aliases + Auto complete users by usernames """ + def get_queryset(self): + """ + Quand une personne cherche un utilisateur par pseudo, une requête est envoyée sur l'API dédiée à l'auto-complétion. + Cette fonction récupère la requête, et renvoie la liste filtrée des utilisateurs par pseudos. + """ qs = User.objects.all() if self.q: diff --git a/apps/note/forms.py b/apps/note/forms.py index 34d00487..1e45ac0c 100644 --- a/apps/note/forms.py +++ b/apps/note/forms.py @@ -9,6 +9,9 @@ class TransactionTemplateForm(forms.ModelForm): model = TransactionTemplate fields ='__all__' + # Le champ de destination est remplacé par un champ d'auto-complétion. + # Quand des lettres sont tapées, une requête est envoyée sur l'API d'auto-complétion + # et récupère les aliases valides widgets = { 'destination': autocomplete.ModelSelect2(url='note:note_autocomplete', attrs={ @@ -23,6 +26,7 @@ class TransactionForm(forms.ModelForm): model = Transaction fields = ('destination', 'reason', 'amount',) + # Voir ci-dessus widgets = { 'source': autocomplete.ModelSelect2(url='note:note_autocomplete', attrs={ diff --git a/apps/note/urls.py b/apps/note/urls.py index d4e390a1..91829901 100644 --- a/apps/note/urls.py +++ b/apps/note/urls.py @@ -13,5 +13,7 @@ urlpatterns = [ path('buttons/create/',views.TransactionTemplateCreateView.as_view(),name='template_create'), path('buttons/update//',views.TransactionTemplateUpdateView.as_view(),name='template_update'), path('buttons/',views.TransactionTemplateListView.as_view(),name='template_list'), + + # API for the note autocompleter path('note-autocomplete/', views.NoteAutocomplete.as_view(model=Note),name='note_autocomplete'), ] diff --git a/apps/note/views.py b/apps/note/views.py index 716d16ff..625d4f98 100644 --- a/apps/note/views.py +++ b/apps/note/views.py @@ -34,7 +34,12 @@ class NoteAutocomplete(autocomplete.Select2QuerySetView): """ Auto complete note by aliases """ + def get_queryset(self): + """ + Quand une personne cherche un alias, une requête est envoyée sur l'API dédiée à l'auto-complétion. + Cette fonction récupère la requête, et renvoie la liste filtrée des notes par aliases. + """ qs = Note.objects.all() if self.q: