Frappe Framework
Créer un DocType
Quatrième étape du tutoriel : création du DocType Article dans le bureau (Desk), puis tour d’horizon de ce que Frappe génère automatiquement (table, vues, code).
Qu’est-ce qu’un DocType
Un DocType est l’équivalent d’un modèle (Model) dans d’autres frameworks. En plus de définir les propriétés du modèle, il en définit aussi le comportement.
Activer le mode développeur
Avant de créer des DocTypes, il faut activer le mode développeur (developer mode) sur le bench. Ainsi, Frappe génère le code de base (boilerplate) à la création de chaque DocType, et ces fichiers peuvent être suivis dans le gestionnaire de versions avec votre app.
Dans votre terminal, arrêtez le serveur bench s’il tourne, puis lancez les commandes suivantes depuis le dossier frappe-bench :
bench set-config -g developer_mode true
bench startCréer un DocType
Dans le bureau (Desk), ouvrez la liste des DocTypes (DocType List) à l’aide de la barre de recherche Awesomebar. Cette liste regroupe les DocTypes fournis avec le framework, ceux des apps Frappe installées et les DocTypes personnalisés (custom), que vous pouvez créer pour chaque site.
Le premier DocType à créer s’appelle Article. Cliquez sur New, puis :
- Saisissez
Articlecomme nom. - Sélectionnez
Library Managementdans le champ Module. - Ajoutez les champs suivants dans la table Fields :
| Libellé du champ | Type | Remarque |
|---|---|---|
| Article Name | Data | Obligatoire (Mandatory) |
| Image | Attach Image | |
| Author | Data | |
| Description | Text Editor | |
| ISBN | Data | |
| Status | Select | Deux options : Issued et Available (tapez Issued, appuyez sur Entrée, puis tapez Available) |
| Publisher | Data |
La documentation officielle illustre cette étape par une animation.
Une fois les champs ajoutés, cliquez sur Save.
Un bouton Go to Article List apparaît en haut à droite du formulaire. Cliquez dessus pour ouvrir la liste des articles. Elle est vide, car la table ne contient encore aucun enregistrement.
Créons quelques enregistrements. Il faut d’abord vider le cache du bureau : ouvrez le menu déroulant Settings à droite de la barre de navigation et cliquez sur Reload.
Le bouton New s’affiche maintenant. Cliquez dessus pour ouvrir la vue formulaire (Form) du DocType Article. Remplissez le formulaire et cliquez sur Save : vous venez de créer votre premier document Article. Revenez à la vue liste, vous devez y voir un enregistrement.
Que s’est-il passé à la création du DocType Article ?
1. Table de base de données
Une table nommée tabArticle a été créée avec les champs indiqués dans la table Fields. Vous pouvez le vérifier depuis la console MariaDB :
bench --site library.localhost mariadb
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2445938
Server version: 10.4.13-MariaDB Homebrew
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [_ad03fa1a016ca1c4]> desc tabArticle;
+--------------+--------------+------+-----+-----------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+-----------+-------+
| name | varchar(140) | NO | PRI | NULL | |
| creation | datetime(6) | YES | | NULL | |
| modified | datetime(6) | YES | MUL | NULL | |
| modified_by | varchar(140) | YES | | NULL | |
| owner | varchar(140) | YES | | NULL | |
| docstatus | int(1) | NO | | 0 | |
| parent | varchar(140) | YES | MUL | NULL | |
| parentfield | varchar(140) | YES | | NULL | |
| parenttype | varchar(140) | YES | | NULL | |
| idx | int(8) | NO | | 0 | |
| article_name | varchar(140) | YES | | NULL | |
| image | text | YES | | NULL | |
| author | varchar(140) | YES | | NULL | |
| description | longtext | YES | | NULL | |
| isbn | varchar(140) | YES | | NULL | |
| status | varchar(140) | YES | | Available | |
| publisher | varchar(140) | YES | | NULL | |
| _user_tags | text | YES | | NULL | |
| _comments | text | YES | | NULL | |
| _assign | text | YES | | NULL | |
| _liked_by | text | YES | | NULL | |
+--------------+--------------+------+-----+-----------+-------+
21 rows in set (0.002 sec)
MariaDB [_ad03fa1a016ca1c4]>Les libellés saisis en casse de titre (Title Case) ont été convertis automatiquement en snake_case et servent de noms de colonnes : par exemple article_name, image, author et description.
D’autres colonnes ont aussi été créées, comme name, creation, modified et modified_by. Ce sont des champs standard, présents dans tous les DocTypes. name est la clé primaire.
Si vous avez créé un enregistrement via le formulaire, une requête select classique permet de le retrouver :
MariaDB [_ad03fa1a016ca1c4]> select * from tabArticle;
+------------+----------------------------+----------------------------+---------------+---------------+-----------+--------+-------------+------------+-----+-----------------------------+--
| name | creation | modified | modified_by | owner | docstatus | parent | parentfield | parenttype | idx | article_name | i
+------------+----------------------------+----------------------------+---------------+---------------+-----------+--------+-------------+------------+-----+-----------------------------+--
| bd514646b9 | 2020-10-10 16:24:43.033457 | 2020-10-10 16:24:43.033457 | Administrator | Administrator | 0 | NULL | NULL | NULL | 0 | The Girl with all the Gifts | N
+------------+----------------------------+----------------------------+---------------+---------------+-----------+--------+-------------+------------+-----+-----------------------------+--
MariaDB [_ad03fa1a016ca1c4]>2. Vues du bureau
Plusieurs vues ont été créées pour le DocType. La liste des articles (Article List) est la vue liste qui affiche les enregistrements de la table. La vue formulaire (Form) s’affiche pour créer un nouveau document ou consulter un document existant.
3. Mise en page du formulaire
Les champs sont disposés dans le formulaire dans l’ordre défini dans la table Fields : Article Name en premier, puis Image, puis Author. Les étapes suivantes du tutoriel montrent comment personnaliser davantage cette mise en page.
4. Code de base généré
> [!NOTE] > Vérifiez que la case Custom? est décochée dans la configuration du DocType. Sinon, les fichiers décrits ci-dessous ne sont pas générés. Une explication est donnée sur le forum.
Si vous regardez les changements dans votre app, vous constaterez que plusieurs fichiers ont été créés. Depuis le dossier frappe-bench, lancez :
$ cd apps/library_management
$ git status -u
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
library_management/library_management/doctype/__init__.py
library_management/library_management/doctype/article/__init__.py
library_management/library_management/doctype/article/article.js
library_management/library_management/doctype/article/article.json
library_management/library_management/doctype/article/article.py
library_management/library_management/doctype/article/test_article.py
nothing added to commit but untracked files present (use "git add" to track)| Fichier | Rôle |
|---|---|
article.json | Fichier JSON qui définit les attributs du DocType |
article.js | Contrôleur côté client pour la vue formulaire |
article.py | Contrôleur Python du DocType Article |
test_article.py | Squelette de test unitaire Python |
Un DocType décrit donc beaucoup de choses sur le modèle : non seulement la table et les noms de colonnes, mais aussi la façon dont il s’affiche dans les différentes vues du bureau.
Bravo d’avoir suivi le tutoriel jusqu’ici. Continuons !
Étape suivante : Fonctionnalités d’un DocType.
