mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-04-30 10:31:32 +00:00
Update Apps/Droits
parent
fcf4c651d4
commit
d8b294f152
@ -20,28 +20,27 @@ Exception faite sur l'ajout d'objets : l'objet n'existant pas encore en base de
|
||||
|
||||
La requête est enregistrée sous un format JSON, puis est traduite en requête `Q` récursivement en appliquant certains paramètres (on note `about` la fonction de traduction) :
|
||||
|
||||
```
|
||||
* [] | {} -> Q(pk=F("pk")) # Une liste ou un objet vide représente tous les objets
|
||||
* ["AND", query, …] -> about(query) & … # Conjonction de requêtes
|
||||
* ["OR", query, …] -> about(query) | … # Disjonction de requêtes
|
||||
* ["NOT", query] -> ~about(query) # Négation d'une requête
|
||||
* {key: value, …} -> Q(key=value, …) # Liste de champs et de valeurs dans un objet Q
|
||||
* `key` est une chaîne de caractères,représentant le nom du champ
|
||||
* `value` peut être de plusieurs natures :
|
||||
* Un nombre, une chaîne de caractères, un booléen, `null` pour représenter des valeurs littérales
|
||||
* Si c'est une liste, c'est interprété comme un paramètre
|
||||
* Le premier argument de la liste représente le nom du paramètre. Ce peut être l'objet utilisateur `user`, l'objet club `club` ou des objets de classe (`Note`, ...).
|
||||
* S'il y a des arguments suivants dans la liste, ils vont être interprétés comme des sous-attributs du paramètre initial.
|
||||
* Si un argument est une liste, alors c'est interprété comme une fonction à appeler, dont les arguments sont donnés par les autres éléments de la liste. Si cette liste contient un dictionnaire, le dictionnaire est passé en argument à la fonction sous la forme de kwargs.
|
||||
* Les exemples seront plus clairs.
|
||||
* Si c'est un dictionnaire de la forme {"F": oper}, alors c'est interprété comme un objet `F`.
|
||||
* Si `oper` est un littéral, il est interprété tel quel.
|
||||
* Si `oper` = ["ADD", oper1, oper2, …], le résultat est la somme des objets `F` calculés d'après le reste de la liste.
|
||||
* Si `oper` = ["SUB", oper1, oper2,], le résultat est la différence des deux objets `F`.
|
||||
* Si `oper` = ["MUL", oper1, oper2, …], le résultat est le produit des objets `F` calculés d'après le reste de la liste.
|
||||
* Si `oper` = ["F", name], le résultat est F(name).
|
||||
* Dans les autres cas, `oper` est un paramètre calculé comme précédemment.
|
||||
```
|
||||
* `[] | {} -> Q(pk=F("pk"))` Une liste ou un objet vide représente tous les objets
|
||||
* `["AND", query, …] -> about(query) & … ` Conjonction de requêtes
|
||||
* `["OR", query, …] -> about(query) | … ` Disjonction de requêtes
|
||||
* `["NOT", query] -> ~about(query) ` Négation d'une requête
|
||||
* `{key: value, …} -> Q(key=value, …) ` Liste de champs et de valeurs dans un objet Q
|
||||
* `key` est une chaîne de caractères,représentant le nom du champ
|
||||
* `value` peut être de plusieurs natures :
|
||||
* Un nombre, une chaîne de caractères, un booléen, `null` pour représenter des valeurs littérales
|
||||
* Si c'est une liste, c'est interprété comme un paramètre
|
||||
* Le premier argument de la liste représente le nom du paramètre. Ce peut être l'objet utilisateur `user`, l'objet club `club` ou des objets de classe (`Note`, ...).
|
||||
* S'il y a des arguments suivants dans la liste, ils vont être interprétés comme des sous-attributs du paramètre initial.
|
||||
* Si un argument est une liste, alors c'est interprété comme une fonction à appeler, dont les arguments sont donnés par les autres éléments de la liste. Si cette liste contient un dictionnaire, le dictionnaire est passé en argument à la fonction sous la forme de kwargs.
|
||||
* Les exemples seront plus clairs.
|
||||
* Si c'est un dictionnaire de la forme {"F": oper}, alors c'est interprété comme un objet `F`.
|
||||
* Si `oper` est un littéral, il est interprété tel quel.
|
||||
* Si `oper = ["ADD", oper1, oper2, …]`, le résultat est la somme des objets `F` calculés d'après le reste de la liste.
|
||||
* Si `oper = ["SUB", oper1, oper2,]`, le résultat est la différence des deux objets `F`.
|
||||
* Si `oper = ["MUL", oper1, oper2, …]`, le résultat est le produit des objets `F` calculés d'après le reste de la liste.
|
||||
* Si `oper = ["F", name]`, le résultat est F(name).
|
||||
* Dans les autres cas, `oper` est un paramètre calculé comme précédemment.
|
||||
|
||||
|
||||
## Exemples
|
||||
|
Loading…
x
Reference in New Issue
Block a user