aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlban Gruin2019-06-09 19:41:38 +0200
committerAlban Gruin2019-06-09 20:00:55 +0200
commitc2a2f5aac817d4255c30c447808ec08faecda036 (patch)
treed4dcfba688e99e8f1843599446bc89fab0f36e8a
parent09a5b8cb97769853ac8a3982bcb340c4c1422498 (diff)
api: ajout d’un paramètre pour activer ou non l’APIag/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 <alban at pa1ch dot fr>
-rw-r--r--Documentation/usage/installation.rst58
-rw-r--r--Documentation/usage/rest.rst3
-rw-r--r--urls.py15
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 <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 <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 <http://www.gnu.org/licenses/>.
+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"),