Commit bf88b062 authored by Mickaël Desfrênes's avatar Mickaël Desfrênes
Browse files

Update doc

parent 9c0e7eb2
Loading
Loading
Loading
Loading
+57 −4
Original line number Diff line number Diff line
@@ -156,8 +156,61 @@ Les enregistrements retournés correspondent aux collections Jama pour lesquelle
    >>> key.active = True
    >>> key.save()

## Applications "plugin"
## Étendre JAMA

JAMA_APPS peut contenir une liste (séparée par des virgules) de modules python à charger en tant 
qu'application Django. Si `[module].endpoint` est défini, alors `endpoint` est utilisé comme point 
de montage pour les urls définies dans l'application.
Les fonctionnalités de JAMA peuvent être étendues par le biais habituel des 
[applications Django](https://docs.djangoproject.com/fr/4.0/ref/applications/).

### Applications Django et ajout de vues

Afin de faciliter l'installation d'applications Django sans avoir besoin de toucher au fichier `jama/settings.py`, une
variable d'environnement `JAMA_APPS` peut contenir une liste (séparée par des virgules) de modules python à charger en tant 
qu'applications Django.

### Point de montage des URLs de l'application

Soit une application fictive `mon_application`, si la variable `endpoint` est définie dans le fichier
`mon_application/__init__.py`, alors `endpoint` est utilisé comme point de montage pour les URLs définies dans 
l'application Django (fichier `mon_application/urls.py`).

Exemple: 

Dans le fichier `mon_application/__init__.py`:

```
endpoint = "mon-appli/"
```

Dans `mon_application/urls.py`:

```
from django.urls import path
from . import views

urlpatterns = [
    path("test/", views.test),
]
```

La vue Django `test` sera accessible à l'URL `/mon-appli/test/`.

### Ajout de méthodes RPC

Il est possible d'ajouter des méthodes au point de montage RPC. Il suffit pour cela d'ajouter des fonctions dans un
module `mon_application/rpc.py`. Toute fonction déclarée dans ce fichier sera ajoutée à la liste des fonctions
RPC, à l'exception des fonctions dont le nom commence par `_`. 

Exemple, dans le fichier `mon_application/rpc.py`:

```
def test_from_my_app(user, test_string):
    return test_string
```

Le premier argument de la méthode RPC est __toujours__ une instance de 
[django.contrib.auth.models.User](https://docs.djangoproject.com/fr/4.0/ref/contrib/auth/#django.contrib.auth.models.User).

⚠️ Il est possible d'écraser une méthode définie précédemment. À votre charge d'assurer l'unicité du nom de votre méthode.
Une possibilité est de préfixer le nom de la méthode avec le nom de votre application.

⚠️ Le retour de la méthode RPC __doit__ être sérialisable par l'encodeur par défaut du module standard `json`.
 No newline at end of file