Version de développement
Cette documentation décrit la version « next » (develop), non encore publiée. Pour la version stable, basculez sur « v5 » dans l'en-tête.
Personnalisation

Administration système

Désactiver ou réactiver une application installée sur un site, sans perdre ses données, et comprendre ce qui s'arrête.

Administration système

Vous pouvez désactiver une application installée sur un site sans la désinstaller. Ses tables et ses données restent dans la base. L'application cesse d'agir sur le site jusqu'à sa réactivation.

Cette possibilité sert à suspendre une application, à isoler un problème ou à tester le site sans elle.

Prérequis

  • Avoir le rôle Responsable système.
  • L'application ne doit pas être frappe. Dodock ne peut pas être désactivé.

Désactiver une application depuis le bureau

  1. Ouvrez la recherche (Ctrl+K) et saisissez « Applications installées ».
  2. Dans le tableau, ouvrez la ligne de l'application.
  3. Cliquez sur Désactiver l'application.
  4. Confirmez. Dokos affiche : « Désactiver {application} sur ce site ? Ses données seront conservées, mais elle n'aura plus d'effet. »

La case Désactivé de la ligne est alors cochée. Pour réactiver l'application, ouvrez la même ligne et cliquez sur Activer l'application.

Désactiver une application en ligne de commande

bench --site <site> disable-app <application>
bench --site <site> enable-app <application>

La réactivation ne resynchronise pas le schéma de l'application. Lancez bench --site <site> migrate si l'application a été mise à jour entre-temps.

Dépendances

ActionContrôle
DésactiverRefusée si une autre application active dépend de celle-ci : « L'application {0} est une dépendance de {1}. Désactivez d'abord {1}. »
ActiverRefusée si une dépendance de l'application est désactivée : « L'application {0} dépend de {1}. Activez d'abord {1}. »

Désactivez d'abord les applications qui dépendent d'une autre. Réactivez dans l'ordre inverse.

Ce qui s'arrête

Élément de l'applicationComportement quand l'application est désactivée
Types de documentsPlus aucune permission. Ils n'apparaissent plus dans les recherches ni les listes.
Modules, espaces de travail, icônes du bureau, barres latéralesMasqués dans le bureau.
Formats d'impression, notifications, formulaires web, scripts client et serveur de ses modulesMasqués dans les listes.
Méthodes appelables (API)Refusées avec le message « L'application {0} est désactivée sur ce site ».
Hooks (hooks.py)Plus exécutés.
Tâches planifiéesPlus exécutées. Leur fiche ne peut plus être modifiée.
Recherche globaleLes types de documents de l'application sont exclus.
Invitations d'utilisateursL'application n'est plus proposée.

Les modules créés sur le site (modules personnalisés) restent visibles, même s'ils sont rattachés à l'application.

Pendant une installation, une migration, un import ou l'assistant de configuration, Dokos ne masque rien. Après une migration, Dokos exécute à nouveau les hooks before_disable des applications désactivées.

Personnalisations posées par l'application

Une application peut ajouter des champs personnalisés, des propriétés personnalisées ou des permissions personnalisées sur les types de documents d'une autre application. Dokos ne les masque pas tout seul. L'application doit le faire dans son hook before_disable.

Pour les développeurs : hooks de désactivation

Déclarez les hooks dans le hooks.py de l'application, sous forme de chemins vers des fonctions. Dokos les appelle sans argument.

HookMoment
before_disableAvant la désactivation. Aussi après chaque migration, tant que l'application est désactivée.
after_disableAprès la désactivation.
before_enableAvant la réactivation.
after_enableAprès la réactivation.

Une exception dans un hook annule toute l'opération.

# mon_app/hooks.py
before_disable = "mon_app.app_state.hide"
before_enable = "mon_app.app_state.show"
# mon_app/app_state.py
from frappe.custom import hide_customizations, unhide_customizations

CUSTOMIZATIONS = {
    "Custom Field": [{"dt": "Address", "fieldname": "custom_code_tournee"}],
}


def hide():
    hide_customizations(CUSTOMIZATIONS)


def show():
    unhide_customizations(CUSTOMIZATIONS)

before_disable peut s'exécuter plusieurs fois. Écrivez-le pour qu'il donne le même résultat à chaque appel.

Exemple

Exemple fictif : un site utilise l'application webshop, mais la boutique en ligne ferme pour trois mois.

  1. Vous ouvrez Applications installées, puis la ligne webshop.
  2. Vous cliquez sur Désactiver l'application et confirmez.
  3. Les espaces de travail et les types de documents de la boutique disparaissent du bureau. Ses tâches planifiées s'arrêtent.
  4. Trois mois plus tard, vous cliquez sur Activer l'application. Les données de la boutique sont intactes.

Pour suivre et arrêter une tâche planifiée précise, voir Tâches planifiées.