Development #85121
Permettre de modifier un booking même lorsqu'il est en liste d'attente
0%
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.)
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
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',
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 :
- URL : https://git.entrouvert.org/entrouvert/chrono/pulls/200
- Titre : WIP: Permettre de modifier un booking même lorsqu'il est en liste d'attente (#85121)
- Modifications : https://git.entrouvert.org/entrouvert/chrono/pulls/200/files
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 :
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 :
- URL : https://git.entrouvert.org/entrouvert/chrono/pulls/200
- Titre : Permettre de modifier un booking même lorsqu'il est en liste d'attente (#85121)
- Modifications : https://git.entrouvert.org/entrouvert/chrono/pulls/200/files
Mis à jour par Transition automatique il y a 3 mois
- Statut changé de Résolu (à déployer) à Solution déployée