Bug #39134
gesbac: retourner la bonne réponse pour une demande envoyée à Gesbac
0%
Description
Sinon on a le problème décrit dans #38926.
Fichiers
Révisions associées
Historique
Mis à jour par Serghei Mihai il y a plus de 4 ans
- Fichier 0001-gesbac-get-demand-response-by-gesbac-id-instead-of-f.patch 0001-gesbac-get-demand-response-by-gesbac-id-instead-of-f.patch ajouté
- Tracker changé de Support à Bug
- Sujet changé de gesbac: ne retourner la dernière réponse que s'il n'y a pas une nouvelle demande plus récente à gesbac: retourner la bonne réponse pour une demande envoyée à Gesbac
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
J'aurais du le prévoir dès le début: interroger le statut d'une demande par l'identifiant gesbac, puisqu'on le calcule, et non celui du formulaire.
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
- Statut changé de Solution proposée à Solution validée
Pas fan1 de la façon dont on génère le gesbac_id mais maintenant c'est fait.
1 form_id.split()[1] et self.id vont s'incrémenter à peu près à la même vitesse, il aurait mieux fallu prévoir un compteur par form_id, comme ça on sait si c'est la première sous-demande pour une demande, la deuxième, la troisième, etc.., en plus interpoller self.id en plein milieu ça rend le résultat illisible, un
form_id.replace('-', '0') + '%02d' % self.counteraurait été plus compréhensible. Mais modifier la construction des id maintenant ça va impacter la lecture des réponses actuelles.
Mis à jour par Serghei Mihai il y a environ 4 ans
- Fichier 0001-gesbac-get-demand-response-by-gesbac-id-instead-of-f.patch 0001-gesbac-get-demand-response-by-gesbac-id-instead-of-f.patch ajouté
- Statut changé de Solution validée à Solution proposée
Tu as bien raison.
J'ai fait les modifs car le connecteur n'est pas encore en production et en recette il y a peu de demandes en attente de retour Gesbac, je me débrouillerai pour corriger leur counter
.
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
Serghei Mihai a écrit :
Tu as bien raison.
J'ai fait les modifs car le connecteur n'est pas encore en production et en recette il y a peu de demandes en attente de retour Gesbac, je me débrouillerai pour corriger leurcounter
.
Ok alors pour que ce soit correct il faut au minimum un index d'unicité sur la paire (form_id, counter), ensuite remplace ça :
try: old_form = Form.objects.filter(resource=self, form_id=form_id).latest() counter = old_form.counter+1 except Form.DoesNotExist: counter = 1 form = Form.objects.create(resource=self, form_id=form_id, counter=counter)
par ça :
for counter in range(20): try: form = Form.objects.create(resource=self, form_id=form_id, counter=counter) break except django.db.IntegrityError as e: continue else: raise APIError('failed to create form object, more than 20 creations.')
si en général counter < 10 ne pas chercher mieux.
Mis à jour par Serghei Mihai il y a environ 4 ans
- Fichier 0001-gesbac-get-demand-response-by-gesbac-id-instead-of-f.patch 0001-gesbac-get-demand-response-by-gesbac-id-instead-of-f.patch ajouté
D'accord.
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
Serghei Mihai a écrit :
D'accord.
Tu mets toujours le compteur en plein milieu, .replace('-', '0') + '%02d' % self.counter
.
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
- Statut changé de Solution proposée à En cours
Mis à jour par Serghei Mihai il y a environ 4 ans
- Fichier 0001-gesbac-get-demand-response-by-gesbac-id-instead-of-f.patch 0001-gesbac-get-demand-response-by-gesbac-id-instead-of-f.patch ajouté
- Statut changé de En cours à Solution proposée
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Serghei Mihai il y a environ 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 7eac49aff386a74ac743320f9bcaf58499bae556 (origin/master, origin/HEAD) Author: Serghei Mihai <smihai@entrouvert.com> Date: Thu Jan 23 14:45:26 2020 +0100 gesbac: get demand response by gesbac id instead of form id (#39134)
Mis à jour par Frédéric Péters il y a environ 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
gesbac: get demand response by gesbac id instead of form id (#39134)