Dokos offre plusieurs possibilités pour personnaliser l'interface selon vos besoins spécifiques.
::: dokos
Avec la nouvelle intégration Drive, vous pouvez utiliser le hook after_file_upload pour personnaliser le comportement après l'upload d'un fichier :
# Exemple d'utilisation du hook after_file_upload
def after_file_upload(doc, method):
"""Exemple de hook pour ajouter des métadonnées après upload"""
# Ajouter une métadonnée personnalisée
doc.custom_metadata = {
"uploaded_by": frappe.session.user,
"upload_date": frappe.utils.nowdate()
}
doc.save()
# Déclencher un workflow personnalisé
if doc.attached_to_doctype == "Client":
frappe.enqueue("mon_app.mon_module.creer_tache_client",
fichier=doc.name)
Cas d'usage :
Pour implémenter ce hook :
hooks.py de votre application :# hooks.py
doc_events = {
"File": {
"after_insert": "mon_app.mon_module.after_file_upload"
}
}
:::
Pour des personnalisations plus avancées, vous pouvez créer des scripts clients :
Scénario : La société Maison Verte SARL souhaite que tous les fichiers uploadés pour leurs projets soient automatiquement tagués et qu'une notification soit envoyée à leur responsable de compte.
# hooks.py
doc_events = {
"File": {
"after_insert": "maison_verte.maison_verte.doctype.file_hooks.after_file_upload"
}
}
# file_hooks.py
def after_file_upload(doc, method):
if doc.attached_to_doctype == "Projet" and doc.attached_to_name:
projet = frappe.get_doc("Projet", doc.attached_to_name)
# Ajouter un tag si le projet est pour Maison Verte SARL
if projet.client == "Maison Verte SARL":
if not doc.tags:
doc.tags = "maison_verte"
else:
doc.tags += ", maison_verte"
doc.save()
# Envoyer une notification au responsable de compte
responsable = frappe.db.get_value("Client", "Maison Verte SARL", "account_manager")
if responsable:
frappe.sendmail(
recipients=[responsable],
subject=f"Nouveau fichier ajouté pour le projet {projet.name}",
message=f"Un nouveau fichier '{doc.file_name}' a été ajouté au projet {projet.name}."
)
::: tip Pour des personnalisations plus complexes, envisagez de créer une application dédiée plutôt que de modifier directement les fichiers du cœur de Dokos. :::