Erreur "fonction frappe.desk.search.search_link n'est pas en liste blanche" sur formulaire web publique avec Link Field

Bonjour bonjour :wave:

J’ai un problème avec une table enfant dans un formulaire web publique. Cette table comprend un champ de type « Lien Â» qui renvoit vers doctype que j’ai crĂ©e « Hosted Workshops Â».

SymptĂ´mes

  • La recherche fonctionne parfaitement quand je suis connectĂ©

  • Avec un utilisateur public (non connectĂ©), j’obtiens l’erreur : « La fonction frappe.desk.search.search_link n’est pas en liste blanche Â»

Contexte

  • La fonction search_link est bien dĂ©corĂ©e avec @frappe.whitelist() dans le code source
  • J’ai bien ajoutĂ© les permissions de lecture au rĂ´le « Guest Â» sur le doctype « Hosted Workshops Â» :

Avez-vous déjà rencontré ce problème ?

A plus,
Antoine.

Hello Antoine,

Tu as une option spéciale dans les champs de type lien des formulaires web:

Leur traitement est particulier pour ne pas exposer la liste au monde entier.

Bonne journée

1 « J'aime »

Ah oui en effet.

Par contre je ne trouve pas cette option. Que ce soit sur le doctype lié à mon formulaire ou alors sur mon formulaire en lui-même… :thinking:

C’est dans les lignes du formulaire web

Salut Charles-Henri,

Ok j’ai bien trouvĂ© le champ. En fait l’option est disponible pour les champs de type « Lien Â» mais pas pour les champs de type « Table Â» (ce qui est mon cas car j’ai un champ « Table Â» qui contient lui-mĂŞme un champ lien → la liste des ateliers proposĂ©s).

En fait l’erreur vient du fait qu’il faut utiliser le décorateur : @frappe.whitelist(allow_guest = True) au lieu de @frappe.whitelist()

En parallèle j’ai trouvĂ© une autre solution inspirĂ©e de cette vidĂ©o qui est d’utiliser un champ « Autocomplete Â» ce qui fonctionne au sein d’une table :partying_face: .

Pour résumer mon problème a 3 solutions

  • Option A: Faire un override de la fonction search_link pour rajouter le dĂ©corateur @frappe.whitelist(allow_guest = True) au lieu de @frappe.whitelist() mais avec un risque sur la sĂ©curitĂ© des donnĂ©es
  • Option B : Mettre un champ Autocomplete dans ma table et ajouter explicitement la liste des Ateliers en option du champ. Le plus simple mais plus difficile Ă  maintenir (il faut aller personnaliser le document Ă  chaque fois qu’on veut modifier la liste des ateliers)
  • Option C : Mettre un champ Autocomplete et une mĂ©thode dans le backend (sur une app) qui renvoi la liste des ateliers pour le remplir (ce qui est expliquĂ© dans la vidĂ©o ci-dessus). Probablement la solution la plus propre mais nĂ©cessite une app.

Je pense partir sur l’option C à terme car j’ai besoin d’une app pour ce projet de toute façon.

A plus,
Antoine.

1 « J'aime »