Bonjour,
je sais que cette question a été posée à mainte reprises mais je ne trouve pas dans les réponses une solution à mon problème
je suis newbie en développement et travaille en Django/Python depuis 2 mois
Je développe actuellement une solution Django avec une application "randomisation"
j'ai différents profils utilisateurs dont les droits sont liés à leur site de rattachement
pour faire simple j'ai 2 statuts "International" et "Site"
le statut "Site" donne des droits au site de l'utilisateur uniquement
le statut "International" donne des droits sur l'ensemble des sites
lorsque un utilisateur 'International" se connecte, il peut sélectionner différents sites et les données liées à ce site sont appliquées
cela entraine notamment l'apparition de message d'alerte et le 'masquage' du sous-menu "Randomization" (capture 1 - flèche rouge)
pour mettre en place cette gestion de droits, j'ai utilisé :
- un middleware qui initialise et met à jour les données à chaque requête ; je stocke ces données dans des variables de session pour pouvoir y avoir accès dans toutes mes vues
- un context_processoir pour avoir accès à ces variables dans l'ensemble des templates
J'ai également mis en place une requete ajax qui mets à jour les droits en fonction du site sélectionné
çà fonctionne
mais je souhaite également mettre à jour une autre liste déroulante en ajax en fonction du site sélectionné (capture 2) et là je galère depuis 2 jours
je pensais que ce serait simple mais quelque chose doit m'échapper
en résumé, si l'utilisateur click sur "Reallocate a treatment", le formulaire "Reallocation form" s'ouvre (capture 2) sur lequel on peut sélectionner un patient parmi une liste de patients
je veux que cette liste soit restreinte à la liste des patients du site sélectionné et que cette liste se mette à jour si l'utilisateur modifie le site sur cette page sans recharger la page (donc en ajax)
je pensais donc ajouter une requête ajax sur le même évènement mais çà ne fonctionne pas et je m'y perd
si quelqu'un peut me guider un peu...
capture 1
capture 2
script.js
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 $(document).ready(function() { var prevent = false; function getCookie(name) { var cookieValue = null; if (document.cookie && document.cookie !== '') { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i].trim(); // Does this cookie string begin with the name we want? if (cookie.substring(0, name.length + 1) === (name + '=')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; } $("#site").on("change", function(event){ var csrftoken = getCookie('csrftoken'); $.ajax({ type: "POST", url: $("#site").data("randomization-url"), data: { csrfmiddlewaretoken: csrftoken, 'site' : $(this).val(), }, dataType: 'html', success: function (data) { if (data.includes("Insufficient")) { $("#alerte").html(data); $("#randomize").children().remove(); } else { $("#alerte").children().remove(); $("#randomize").html(data); } } }); }); });
Partager