From c2a2f5aac817d4255c30c447808ec08faecda036 Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Sun, 9 Jun 2019 19:41:38 +0200 Subject: api: ajout d’un paramètre pour activer ou non l’API L’API devient optionnelle, et un paramètre, CS_ENABLE_API, est rajouté pour sélectionner son état (activé ou non). Par défaut, il est désactivé. La documentation est mise à jour pour refléter ces changements. Signed-off-by: Alban Gruin --- Documentation/usage/installation.rst | 58 ++++++++++++++++++++++++------------ Documentation/usage/rest.rst | 3 ++ urls.py | 15 ++++++++-- 3 files changed, 54 insertions(+), 22 deletions(-) diff --git a/Documentation/usage/installation.rst b/Documentation/usage/installation.rst index 75e0be1..92b3c5d 100644 --- a/Documentation/usage/installation.rst +++ b/Documentation/usage/installation.rst @@ -8,11 +8,14 @@ celcatsanitizer est écrit en Python 3. Il dépend des bibliothèques suivantes : - `Django 2.0`_ - - `Django REST Framework`_ - requests_, pour récupérer les emplois du temps en HTTP(S) - BeautifulSoup4_ et LXML_, pour parser les emplois du temps en XML - icalendar_, pour générer des fichiers ICS_. +Une dépendance est optionnelle : + + - `Django REST Framework`_, pour l’:doc:`API REST `. + celcatsanitizer requiert Python 3.4 au minimum, et marche avec les versions 3.5 et 3.6. Les versions antérieures de Python 3 n’ont pas étés testées, et les versions supérieures devraient fonctionner sans @@ -26,13 +29,13 @@ d’installer le module psycopg2_. Pour l’instant, l’installation doit passer par git_. .. _Django 2.0: https://www.djangoproject.com/ -.. _Django REST Framework: https://www.django-rest-framework.org/ .. _requests: http://docs.python-requests.org/en/master/ .. _BeautifulSoup4: https://www.crummy.com/software/BeautifulSoup/bs4/doc/ .. _LXML: https://lxml.de/ .. _icalendar: https://icalendar.readthedocs.io/en/latest/ .. _ICS: https://fr.wikipedia.org/wiki/ICalendar +.. _Django REST Framework: https://www.django-rest-framework.org/ .. _PostgreSQL: https://www.postgresql.org/ .. _psycopg2: http://initd.org/psycopg/docs/install.html .. _git: https://git-scm.com/ @@ -97,6 +100,13 @@ psycopg2 : $ pip install psycopg2-binary +Si vous souhaitez activer l’API REST, vous devez installer le module +Django Rest Framework : + +.. code:: shell + + $ pip install djangorestframework + Si vous êtes en production, il est recommandé d’utiliser gunicorn_ si vous n’utilisez pas le serveur Apache. Installez-le de la même manière : @@ -157,23 +167,6 @@ Si jamais vous utilisez Django en production, vous **devez impérativement** mettre la valeur de la variable ``DEBUG`` à ``False``. -Configuration de Django REST Framework -`````````````````````````````````````` -Ajoutez la chaîne de caractère ``rest_framework`` à la liste -``INSTALLED_APPS``. - -Libre à vous de configurer DRF de la manière dont vous le souhaitez. -`Les différents paramètres sont accessibles ici`__. Les plus -intéressants sont ``DEFAULT_PERMISSION_CLASSES``, -``DEFAULT_RENDERER_CLASSES``, ``DEFAULT_PAGINATION_CLASS`` et -``PAGE_SIZE``. - -__ https://www.django-rest-framework.org/api-guide/settings/ - -Cette étape est **obligatoire**, mais deviendra optionnelle dans le -futur. Dans le cas ou vous ne souhaiterez pas la faire, l’API REST ne -sera pas activée. - Ajout de celcatsanitizer à la liste des applications Django ``````````````````````````````````````````````````````````` Ajoutez la chaîne de caractère ``edt`` à la liste ``INSTALLED_APPS``. @@ -251,6 +244,33 @@ Ce paramètre est **optionnel**. __ https://docs.djangoproject.com/fr/2.0/topics/i18n/ +Activation de l’API REST et configuration de Django Rest Framework +`````````````````````````````````````````````````````````````````` +L’API REST permet à des outils tiers d’accéder facilement aux données +gérées par celcatsanitizer. Elle est optionnelle, et est basée sur +Django Rest Framework. :doc:`Plus d’informations sur la page de l’API +REST `. + +Si vous souhaitez l’activer, vous devez d’abord avoir installé Django +REST Framework, puis mettre la variable ``CS_ENABLE_API`` à ``True``. + +.. code:: Python + + CS_ENABLE_API = True + +Ajoutez ensuite la chaîne de caractère ``rest_framework`` à la liste +``INSTALLED_APPS``. + +Libre à vous de configurer DRF de la manière dont vous le souhaitez. +`Les différents paramètres sont accessibles ici`__. Les plus +intéressants sont ``DEFAULT_PERMISSION_CLASSES``, +``DEFAULT_RENDERER_CLASSES``, ``DEFAULT_PAGINATION_CLASS`` et +``PAGE_SIZE``. + +__ https://www.django-rest-framework.org/api-guide/settings/ + +Cette étape est **optionnelle**. + ``urls.py`` ----------- Dans le fichier ``celcatsanitizer/urls.py``, importez la fonction diff --git a/Documentation/usage/rest.rst b/Documentation/usage/rest.rst index 4908d8a..d18eaa5 100644 --- a/Documentation/usage/rest.rst +++ b/Documentation/usage/rest.rst @@ -10,6 +10,9 @@ Le point d’entrée se trouve à l’adresse ``api/`` de l’instance de celcatsanitizer. Il retourne la liste des autres points d’accès en JSON. +En fonction de la configuration de celcatsanitizer, l’API ne sera +peut-être pas disponible. + Années ====== diff --git a/urls.py b/urls.py index 5cd134e..a5f6b9b 100644 --- a/urls.py +++ b/urls.py @@ -13,14 +13,23 @@ # You should have received a copy of the GNU Affero General Public License # along with celcatsanitizer. If not, see . +from django.conf import settings from django.urls import include, path from . import feeds, views -from .api.urls import router urlpatterns = [ - path("", views.index, name="index"), - path("api/", include(router.urls)), + path("", views.index, name="index") +] + +if getattr(settings, "CS_ENABLE_API", False): + from .api.urls import router + + urlpatterns += [ + path("api/", include(router.urls)), + ] + +urlpatterns += [ path("pages/", include("django.contrib.flatpages.urls")), path("salles/", views.rooms, name="rooms"), path("salles/qsjps", views.qsjps, name="qsjps"), -- cgit v1.2.1