From 61eb694cd445fd5f17c4dc6ded0b1d1f5eccdf57 Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Tue, 5 Feb 2019 18:00:59 +0100 Subject: Documentation: correction de la doc de l’API Signed-off-by: Alban Gruin --- Documentation/usage/rest.rst | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Documentation/usage/rest.rst b/Documentation/usage/rest.rst index bcaada9..60c8d44 100644 --- a/Documentation/usage/rest.rst +++ b/Documentation/usage/rest.rst @@ -98,8 +98,8 @@ Exemple : Emplois du temps ================ -``api/timetables`` ------------------- +``api/timetables/`` +------------------- Liste les emplois du temps par ordre d’année (ID associé) puis de nom. :ref:`Le résultat peut être paginé `. @@ -688,10 +688,10 @@ paginés se trouvent dans ce genre de structure : ] } - - ``count`` représente le nombre d’éléments au total (et non pas sur - la page). - - ``next`` est le lien de la page de résultats suivants, si il y en a - une. - - ``previous`` est le lien de la page de résultats précédents, si il - y en a une. - - ``results`` est la liste des résultats, si il y en a. +- ``count`` représente le nombre d’éléments au total (et non pas sur + la page). +- ``next`` est le lien de la page de résultats suivants, si il y en a + une. +- ``previous`` est le lien de la page de résultats précédents, si il + y en a une. +- ``results`` est la liste des résultats, si il y en a. -- cgit v1.2.1 From 7b280f8e2a901297112bc15becb1704205e3e901 Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Tue, 5 Feb 2019 19:14:25 +0100 Subject: api/views: ajout de routes pour lister les cours d’une seule journée Signed-off-by: Alban Gruin --- api/views.py | 46 +++++++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/api/views.py b/api/views.py index f6aa620..b7b69e3 100644 --- a/api/views.py +++ b/api/views.py @@ -83,11 +83,7 @@ class CourseListGroupSet(viewsets.ReadOnlyModelViewSet): many=True) return self.get_paginated_response(courses_json.data) - @detail_route(methods=["get"], url_path="courses/weeks/current") - def current_week(self, request, pk): - obj = self.get_object() - start, end = get_week(*get_current_or_next_week()) - + def __get_courses(self, obj, start, end): courses = Course.objects.get_courses(obj, begin__gte=start, end__lt=end) \ .prefetch_related("groups") @@ -95,6 +91,37 @@ class CourseListGroupSet(viewsets.ReadOnlyModelViewSet): many=True) return self.get_paginated_response(courses_json.data) + @detail_route(methods=["get"], url_path="courses/days/current") + def current_day(self, request, pk): + obj = self.get_object() + start = datetime.date.today() + end = start + datetime.timedelta(days=1) + return self.__get_courses(obj, start, end) + + @detail_route(methods=["get"], url_path="courses/days/(?P\d+)/(?P\d+)/(?P\d+)") + def other_day(self, request, pk, year, month, day): + obj = self.get_object() + + try: + start = datetime.date(int(year), int(month), int(day)) + except ValueError as v: + errors = {} + message = v.args[0] + if message.split(" ")[0] == "month": + errors["month"] = "Rentrez un mois invalide" + else: + errors["day"] = "Numéro de jour invalide pour le mois" + return Response(errors, status=400) + + end = start + datetime.timedelta(days=1) + return self.__get_courses(obj, start, end) + + @detail_route(methods=["get"], url_path="courses/weeks/current") + def current_week(self, request, pk): + obj = self.get_object() + start, end = get_week(*get_current_or_next_week()) + return self.__get_courses(obj, start, end) + @detail_route(methods=["get"], url_path="courses/weeks/(?P\d+)/(?P\d+)") def other_week(self, request, pk, year, week): @@ -108,14 +135,7 @@ class CourseListGroupSet(viewsets.ReadOnlyModelViewSet): if errors: return Response(errors, status=400) - start, end = get_week(int(year), int(week)) - - courses = Course.objects.get_courses(obj, - begin__gte=start, end__lt=end) \ - .prefetch_related("groups") - courses_json = CourseSerializer(self.paginate_queryset(courses), - many=True) - return self.get_paginated_response(courses_json.data) + return self.__get_courses(obj, *get_week(int(year), int(week))) class GroupViewSet(CourseListGroupSet): -- cgit v1.2.1 From 09a5b8cb97769853ac8a3982bcb340c4c1422498 Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Tue, 5 Feb 2019 19:14:48 +0100 Subject: Documentation: ajout des nouvelles routes dans la doc et corrections Signed-off-by: Alban Gruin --- Documentation/usage/rest.rst | 71 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 62 insertions(+), 9 deletions(-) diff --git a/Documentation/usage/rest.rst b/Documentation/usage/rest.rst index 60c8d44..4908d8a 100644 --- a/Documentation/usage/rest.rst +++ b/Documentation/usage/rest.rst @@ -64,8 +64,8 @@ Exemple : "slug": "l3" } -``api/years//timetables`` ------------------------------ +``api/years//timetables/`` +------------------------------ Liste les emplois du temps associés à une année par ordre alphabétique de nom. :ref:`Le résultat peut être paginé `. @@ -398,6 +398,41 @@ Exemple : ] } +``api/groups//courses/days/current/`` +----------------------------------------- +Retourne la liste des cours du groupe et de ses parents d’un groupe +pendant le jour courant, par ordre de début. :ref:`Le résultat peut +être paginé `. Le format du résultat est identique à +celui de :ref:`api/groups/\/courses/ `. + +.. _ref-groups-courses-day-arg: + +``api/groups//courses/days////`` +------------------------------------------------------ +Retourne la liste des cours du groupe et de ses parents pendant le +jour spécifié, par ordre de début. Si l’année, le mois ou le jour ne +sont pas des nombres, un code 404 est renvoyé. Si la date est +invalide, une erreur 400 est renvoyée, et les erreurs rencontrées sont +renvoyées. :ref:`Le résultat peut être paginé `. Le +format du résultat est identique à celui de +:ref:`api/groups/\/courses/ `. + +Exemple d’erreur (``api/groups//courses/days/2018/111/22``) : +````````````````````````````````````````````````````````````````` +.. code:: json + + { + "month": "Rentrez un mois valide" + } + +Exemple d’erreur (``api/groups//courses/days/2018/11/33``) : +```````````````````````````````````````````````````````````````` +.. code:: json + + { + "day": "Numéro de jour invalide pour le mois" + } + ``api/groups//courses/weeks/`` ---------------------------------- Retourne la liste des semaines de cours d’un groupe. @@ -423,7 +458,7 @@ Le format du résultat est identique à celui de ``api/groups//courses/weeks///`` ------------------------------------------------ Retourne la liste des cours du groupe et de ses parents pendant la -semaine spécifiée, par ordre de début. Si l’année et la semaine ne +semaine spécifiée, par ordre de début. Si l’année ou la semaine ne sont pas des nombres, un code 404 est renvoyé. Si la semaine n’est pas comprise entre 1 et 53, une erreur 400 est renvoyée, et les erreurs rencontrées sont renvoyées. :ref:`Le résultat peut être @@ -473,8 +508,8 @@ Exemple : ] } -``api/rooms/`` ------------------- +``api/rooms//`` +------------------- Renvoie une seule salle. Exemple : @@ -494,6 +529,24 @@ début. :ref:`Le résultat peut être paginé `. Le format du résultat est identique à celui de :ref:`api/groups/\/courses/ `. +``api/rooms//courses/days/current/`` +---------------------------------------- +Retourne la liste des cours se déroulant dans une salle pendant le +jour courant, par ordre de début. :ref:`Le résultat peut être paginé +`. Le format du résultat est identique à celui de +:ref:`api/groups/\/courses/ `. + +``api/rooms//courses/days////`` +----------------------------------------------------- +Retourne la liste des cours se déroulant dans une salle pendant le +jour spécifié, par ordre de début. Si l’année, le mois ou le jour ne +sont pas des nombres, un code 404 est renvoyé. Si la date est +invalide, une erreur 400 est renvoyée, et les erreurs rencontrées sont +renvoyées. :ref:`Le résultat peut être paginé `. Le +format du résultat est identique à celui de +:ref:`api/groups/\/courses/days/\/\/\/ +`. + ``api/rooms//courses/weeks/current/`` ----------------------------------------- Renvoie la liste des cours se déroulant dans une salle pendant la @@ -505,12 +558,12 @@ format du résultat est identique à celui de ``api/rooms//courses/weeks///`` ----------------------------------------------- Renvoie la liste des cours se déroulant dans une salle pendant la -semaine spécifiée. Si l’année et la semaine ne sont pas des nombres, +semaine spécifiée. Si l’année ou la semaine ne sont pas des nombres, un code 404 est renvoyé. Si la semaine n’est pas comprise entre 1 et 53, une erreur 400 est renvoyée, et les erreurs rencontrées sont renvoyées. :ref:`Le résultat peut être paginé `. Le format du résultat est identique à celui de -:ref:`api/groups/\/courses/weeks/\/\ +:ref:`api/groups/\/courses/weeks/\/\/ `. ``api/rooms/qsjps////`` @@ -629,8 +682,8 @@ Exemple : ] } -``api/courses/`` --------------------- +``api/courses//`` +--------------------- Renvoie un seul cours. Exemple : -- cgit v1.2.1