Projet

Général

Profil

Development #85121

Permettre de modifier un booking même lorsqu'il est en liste d'attente

Ajouté par Mikaël Ates (de retour le 29 avril) il y a 4 mois. Mis à jour il y a 3 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
26 décembre 2023
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

On stock désormais de façon assez courante des extra_data sur les réservations. Il est nécessaire de pouvoir les modifier même lorsque la réservation est en liste d'attente. Or actuellement le PATCH d'un booking en liste d'attente n'est pas possible (Erreur : https://doc-publik.entrouvert.com/dev/api-agendas/chrono-bookings/#Erreur-r%C3%A9servation-en-liste-dattente.)

Exemple : https://demarches-departement06.test.entrouvert.org/backoffice/management/inscription-aux-activites/4108/#action-zone

err: 3, err_desc: la réservation est dans la liste d’attente, err_class: booking is in waiting list

    Code d’erreur: 3
    Classe d’erreur: booking is in waiting list
    Description de l’erreur: la réservation est dans la liste d’attente
    Raison: booking is in waiting list

Historique

#2

Mis à jour par Mikaël Ates (de retour le 29 avril) il y a 4 mois

  • Description mis à jour (diff)
#3

Mis à jour par Benjamin Dauvergne il y a 4 mois

Le code d'origine ne permettait que de modifier le champ "user_was_present", je suppose que c'est ce qui a donnée ces contraintes1. Quand on a ajouté l'édition des autres champs2 les contraintes n'ont pas été revues, je suppose que c'est l'occasion de le faire.

Sur un GET je ne vois pas trop pourquoi appliquer des contraintes. PS: j'ai gardé celle sur les bookings secondaires, celle-ci reste nécessaire.

Sur un DELETE on peut conserver les contraintes actuelles.

Pour le PATCH je dirai bien de maintenir les conditions actuelles si user_was_present, user_absence_reason ou user_presence_reason sont modifiés, pour les autres cas (user_first_name, user_last_name, user_email, user_phone_number, use_color_for, label et pour get_extra_data) on peut retirer le cas in_waiting_list.

1

class BookingAPI(APIView):
...
    def check_booking(self, check_waiting_list=False):
        if self.booking.cancellation_datetime:
            raise APIError(N_('booking is cancelled'))

        if self.booking.primary_booking is not None:
            raise APIError(N_('secondary booking'), err=2)

        if check_waiting_list and self.booking.in_waiting_list:
            raise APIError(N_('booking is in waiting list'), err=3)
...
   def patch(self, request, *args, **kwargs):
        self.check_booking(check_waiting_list=True)

2

class BookingSerializer(serializers.ModelSerializer):
    user_was_present = serializers.BooleanField(required=False, allow_null=True)
    user_absence_reason = serializers.CharField(required=False, allow_blank=True, allow_null=True)
    user_presence_reason = serializers.CharField(required=False, allow_blank=True, allow_null=True)
    use_color_for = serializers.CharField(required=False, allow_blank=True, allow_null=True, source='color')

    class Meta:
        model = Booking
        fields = [
            'id',
            'in_waiting_list',
            'user_first_name',
            'user_last_name',
            'user_email',
            'user_phone_number',
            'user_was_present',
            'user_absence_reason',
            'user_presence_reason',
            'use_color_for',
            'extra_data',
            'creation_datetime',
            'cancellation_datetime',
            'label',
        ]
        read_only_fields = [
            'id',
            'in_waiting_list',
            'extra_data',
            'creation_datetime',
            'cancellation_datetime',

#4

Mis à jour par Benjamin Dauvergne il y a 4 mois

  • Assigné à mis à Benjamin Dauvergne
#5

Mis à jour par Robot Gitea il y a 4 mois

  • Statut changé de Nouveau à En cours

Benjamin Dauvergne (bdauvergne) a ouvert une pull request sur Gitea concernant cette demande :

#6

Mis à jour par Robot Gitea il y a 4 mois

  • Statut changé de En cours à Solution proposée
#7

Mis à jour par Robot Gitea il y a 4 mois

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

Valentin Deniaud (vdeniaud) a approuvé une pull request sur Gitea concernant cette demande :

#8

Mis à jour par Robot Gitea il y a 3 mois

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

Benjamin Dauvergne (bdauvergne) a mergé une pull request sur Gitea concernant cette demande :

#9

Mis à jour par Transition automatique il y a 3 mois

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

Mis à jour par Transition automatique il y a environ un mois

Automatic expiration

Formats disponibles : Atom PDF