From d8b294f1525fb604e86e83a9a66653c33f860581 Mon Sep 17 00:00:00 2001 From: Pierre-antoine Comby Date: Sat, 21 Mar 2020 18:36:12 +0100 Subject: [PATCH] Update Apps/Droits --- Droits.md => Apps/Droits.md | 43 ++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 22 deletions(-) rename Droits.md => Apps/Droits.md (64%) diff --git a/Droits.md b/Apps/Droits.md similarity index 64% rename from Droits.md rename to Apps/Droits.md index eff2599..faf41a9 100644 --- a/Droits.md +++ b/Apps/Droits.md @@ -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