Projet

Général

Profil

Development #47337

API de création d'événement

Ajouté par Frédéric Péters il y a plus de 3 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Catégorie:
-
Version cible:
-
Début:
05 octobre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Dans l'idée qu'une proposition d'événement arrive dans w.c.s., soit relue validée et que ça l'ajoute au lot des événements annoncés pour un agenda.


Fichiers

workflow-ajouts-evenements.wcs (2,32 ko) workflow-ajouts-evenements.wcs Nicolas Roche (absent jusqu'au 3 avril), 08 décembre 2020 22:37
0001-api-add-a-Publik-api-to-add-events-47337.patch (9,4 ko) 0001-api-add-a-Publik-api-to-add-events-47337.patch Nicolas Roche (absent jusqu'au 3 avril), 08 décembre 2020 22:39
0001-api-add-add-event-endpoint-47337.patch (5,99 ko) 0001-api-add-add-event-endpoint-47337.patch Nicolas Roche (absent jusqu'au 3 avril), 09 décembre 2020 13:39
0001-api-add-add-event-endpoint-47337.patch (6,89 ko) 0001-api-add-add-event-endpoint-47337.patch Nicolas Roche (absent jusqu'au 3 avril), 20 septembre 2021 17:01
0001-api-add-add-event-endpoint-47337.patch (7,82 ko) 0001-api-add-add-event-endpoint-47337.patch Nicolas Roche (absent jusqu'au 3 avril), 20 septembre 2021 18:49
0001-api-add-add-event-endpoint-47337.patch (8,23 ko) 0001-api-add-add-event-endpoint-47337.patch Nicolas Roche (absent jusqu'au 3 avril), 22 septembre 2021 18:24
0001-api-add-add-event-endpoint-47337.patch (12,9 ko) 0001-api-add-add-event-endpoint-47337.patch Nicolas Roche (absent jusqu'au 3 avril), 23 septembre 2021 15:37
0001-api-add-add-event-endpoint-47337.patch (15,6 ko) 0001-api-add-add-event-endpoint-47337.patch Nicolas Roche (absent jusqu'au 3 avril), 23 septembre 2021 17:35

Demandes liées

Dupliqué par Chrono - Support #48870: Création d'un événement dans un workflowFermé26 novembre 2020

Actions

Révisions associées

Révision 9bf248a0 (diff)
Ajouté par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 2 ans

api: add add-event endpoint (#47337)

Historique

#3

Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 3 ans

  • Assigné à mis à Nicolas Roche (absent jusqu'au 3 avril)
#7

Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 3 ans

#9

Mis à jour par Frédéric Péters il y a plus de 2 ans

  • Statut changé de Solution proposée à En cours
  • Patch proposed changé de Oui à Non

(vraisemblablement à rebaser)

#11

Mis à jour par Frédéric Péters il y a plus de 2 ans

  • Dupliqué par Support #48870: Création d'un événement dans un workflow ajouté
#12

Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 2 ans

Re-basé.

#13

Mis à jour par Frédéric Péters il y a plus de 2 ans

Je dirais d'intégrer dès maintenant les champs supplémentaires permettant de gérer la récurrence.

#14

Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 2 ans

Il y a une liste de jours à passer pour ajouter des événements récurrents :

recurrence_days = ArrayField(
        models.IntegerField(choices=WEEKDAY_CHOICES),
        verbose_name=_('Recurrence days'),
        blank=True,
        null=True,
    )

Du coup ça ne pourra pas être utilisable depuis WCS.

form_workflow_data_ajout_error_response_errors_recurrence_days : ['Attendait une liste d\'éléments mais a reçu "str".']

Est-ce que je le fait quand même ?

#15

Mis à jour par Frédéric Péters il y a plus de 2 ans

Il faut faire quelque chose d'exploitable; de manière pratique ici ça serait qu'en alternative (ou pas) accepter une chaine type "0,3,5" (pour [lundi, mercredi, vendredi]).

#16

Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 2 ans

accepter une chaine type "0,3,5" (pour [lundi, mercredi, vendredi]).

Fait.

#17

Mis à jour par Valentin Deniaud il y a plus de 2 ans

        event = Event.objects.create(agenda=agenda, **payload)

Il faudrait tester le cas où un évènement serait créé en précisant un slug, quand un évènement avec ce slug existe déjà : j'imagine que cette ligne va lever une exception, qu'il faudra rattraper et transformer en jolie APIError.

Sur le même thème, il faudrait vérifier que 'start_datetime' et 'places' sont toujours présents dans le payload : ça devrait bien se faire au niveau du serializer.

Sans importance, # add a recurent event il manque un R.

#18

Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 2 ans

Il faudrait tester le cas où un évènement serait créé en précisant un slug

Mea-culpa j'ai laissé cette clé dans les tests alors qu'elle n'est pas traitée par le serializer.
(DRF ne râle pas si on lui passe plus de contenu que ce à quoi il s'attend)
https://stackoverflow.com/questions/53772216/how-to-fail-any-django-rest-framework-requests-with-unknown-parameters

C'est peut-être plus simple ainsi, c'est a dire que l'on ne puisse pas indiquer le slug via l'API ?
Sinon, remarques prises en comptes : j'ai complété les tests.

#19

Mis à jour par Lauréline Guérin il y a plus de 2 ans

Je crois qu'il manque un create_all_recurrences dans le cas d'un event avec récurrence et fin de récurrence (cf import et form)

#20

Mis à jour par Valentin Deniaud il y a plus de 2 ans

Nicolas Roche a écrit :

Il faudrait tester le cas où un évènement serait créé en précisant un slug

Mea-culpa j'ai laissé cette clé dans les tests alors qu'elle n'est pas traitée par le serializer.

Dac mais du coup on a pas le slug de l'évènement créé alors que c'est lui qui sert dans les appels (le support de l'id est legacy). Pour ne pas s'embêter on pourrait retourner le dico de get_event_detail, comme pour l'API EventStatus.

#21

Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 2 ans

Merci pour les remarques (prises en compte).
Pour le format de retour j'ai ajouté les 3 champs propres aux événements récurent à get_event_detail .

#22

Mis à jour par Valentin Deniaud il y a plus de 2 ans

Nicolas Roche a écrit :

Pour le format de retour j'ai ajouté les 3 champs propres aux événements récurent à get_event_detail.

Je trouve ça bien d'adapter get_event_detail pour que ça fonctionne avec les évènements récurrents. En plus de l'adaptation que tu as faite il faudrait aussi ne pas inclure les champs qui n'ont pas de sens : tout ce qui est 'api', ainsi que 'places' et 'disabled'.

À vérifier, tu peux peut-être te passer de validate_recurrence_days en mettant child=IntegerField(min_value=0, max_value=6) dans le champ recurrence_days.

        if event.recurrence_days:
            if event.recurrence_end_date:

Un petit and pour s'économiser une indentation ?
#24

Mis à jour par Valentin Deniaud il y a plus de 2 ans

  • Statut changé de Solution proposée à Solution validée
#25

Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 9bf248a09563ec8aca154cd97c95e9829c1634a9
Author: Nicolas ROCHE <nroche@entrouvert.com>
Date:   Tue Dec 8 16:27:57 2020 +0100

    api: add add-event endpoint (#47337)
#26

Mis à jour par Frédéric Péters il y a plus de 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF