Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.

1. Paramètres du projet

Camille Masset edited this page Dec 30, 2015 · 2 revisions

Paramètres du projet (bars_django)

Dossier de paramètres

Les paramètres du projet ont été découpés en trois fichiers selon l'environnement d'utilisation : développement, production et tests.

Les paramètres de base ou communs aux trois environnements se trouvent dans le fichier settings/common.py.
On y définit par exemple la clé secrète du projet (SECRET_KEY), la liste des applications utilisées par le projet, les paramètres du REST Framework.

En particulier, nous n'utilisons pas le modèle User défini par défaut dans Django, et ceci est spécifié par l'option AUTH_USER_MODEL.

Pour une référence complète des réglages Django, voir la documentation officielle.

Routes

Les routes de l'API sont toutes définies dans le fichier urls.py. On utilise le routeur par défaut fourni par le REST Framework. On regroupe ainsi les routes par ViewSet.

Il y a également quelques routes liées à l'authentification et aux mots de passe.

Outils

Le fichier utils.py fournit des outils utilisés dans tout le projet.

Champ VirtualField

Dans le cadre d'une utilisation avec un client écrit en JavaScript, il était nécessaire d'identifier le type des ressources fournies par l'API. Par exemple, un objet User sera sérialisé et renvoyé avec un champ _type de type VirtualField ayant la valeur "User".

Logique de permission

permission_logic définit un décorateur à appliquer à un modèle, dans le but de spécifier la logique de permissions à employer sur ce modèle (par bar ou non, etc.).

Bar root

Pour gérer globalement l'application, on a recours à un bar "root" qui n'est pas associé à une section sportive.
On récupère ce bar dans le code à l'aide de la fonction get_root_bar().

Intergiciel

Les requêtes envoyées à l'API sont très souvent liées à un bar spécifique.
Pour réduire la répétition de code, chaque requête est interceptée par le BarMiddleware. Ce middleware vérifie si la requête contient un paramètre GET bar et attache, le cas échéant, l'instance du modèle Bar correspondant à la requête avant qu'elle ne suive son cycle de vie.

Utilisateur et bar courants

Il arrive régulièrement qu'un champ d'un modèle nouvellement créé doive être rempli avec l'utilisateur effectuant la requête ou le bar dans lequel la requête est effectuée.
On dispose de deux classes qui permettent de le faire simplement : CurrentUserCreateOnlyDefault et CurrentBarCreateOnlyDefault. Elles s'utilisent en général comme suit, dans un serializer :

user = serializers.PrimaryKeyRelatedField(read_only=True, default=CurrentUserCreateOnlyDefault())

IP du requêteur

Essentiellement utilisée pour loguer les connexions au site, la fonction get_client_ip(request) renvoie l'IP de la personne qui effectue la requête.