Frappe Framework
bench execute
Succès : commit et valeur en JSON. Erreur : rollback et code de sortie. N’importe quelle fonction part, pas seulement celles en liste blanche.
Usage
bench --site [site-name] execute [path.to.method] prépare la base et le framework, puis appelle la fonction. Utile pour une tâche isolée, un diagnostic ou un script. L’aide-mémoire est dans Commandes bench.
frappe.clear_cache ne renvoie rien d’affiché si le retour est None. frappe.utils.get_site_info imprime son résultat.
Arguments
Après le chemin : frappe.get_doc User Administrator appelle get_doc("User", "Administrator"). frappe.db.get_value DocType User name lit le champ name. Les arguments sont parsés en JSON quand c’est possible. "Administrator" reste une chaîne. 123 true false deviennent l’entier 123 et les booléens True et False.
Un nom précédé de -- est un argument nommé. get_value --doctype User --filters '{"name":"Administrator"}' --fieldname email passe doctype, filters (objet) et fieldname. Un drapeau sans valeur vaut True : get_list User --ignore_permissions. On mélange : get_list User --limit 5.
Une expression entre guillemets s’exécute : frappe.db.count('User'), ou frappe.get_doc('User', 'Administrator').reload().
Autres exemples publiés : clear_cache --doctype "Sales Order", get_doc User Administrator, frappe.db.count User, une méthode d’application --param1 value1 --param2 value2, exists User guest, frappe.conf.get developer_mode, get_fullname() et add_roles('System Manager') sur l’Administrator.
Profil et sites
--profile affiche le haut des appels, triés par temps cumulé. L’exemple get_list de Sales Order, limite 1000, annonce les 50 % les plus coûteux : 42084 appels en 0,094 s, liste réduite de 801 à 401. Le tableau publié s’arrête sur get_db_table_columns.
--site all vise tous les sites. Plusieurs --site en vise plusieurs, par exemple site1.local et site2.local, tous deux sur clear_cache.
Ancien format
--args et --kwargs ne sont plus encouragés. Ils sont du Python entre guillemets, passés à eval(), pas du JSON. Liste : --args "['User', 'Administrator', 'email']". Dictionnaire : set_value avec doctype User, name Administrator, fieldname enabled, value 1. Les deux se combinent : args ['User', 'Administrator'] et kwargs {'fieldname': 'email'}.
Points d’attention
Un succès est commité, une erreur est annulée, avec le code de sortie et la pile complète. Les valeurs de retour s’impriment en JSON. None n’imprime rien. N’importe quelle fonction Python part, pas seulement une méthode en liste blanche.
