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

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.