-
Notifications
You must be signed in to change notification settings - Fork 40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Pc 32007 retrieve special event #15606
base: master
Are you sure you want to change the base?
Conversation
Visit the preview URL for this PR (updated for commit 1469934): https://pc-pro-testing--pr15606-pc-32007-retrieve-sp-736urpua.web.app (expires Wed, 08 Jan 2025 13:16:47 GMT) 🔥 via Firebase Hosting GitHub Action 🌎 Sign: 032d233ee67e1c50d6af12e29c936c7076770eb1 |
4c55562
to
408f54a
Compare
1469934
to
a606f4d
Compare
a606f4d
to
2e7b18d
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je n'ai pas testé. Je laisse quelques questions, mais comme c'est dense, après rebase et réponses, il serait judicieux de faire une revue fonctionnelle avant d'approuver la PR.
@@ -50,6 +50,7 @@ class FeatureToggle(enum.Enum): | |||
ENABLE_CDS_IMPLEMENTATION = "Permet la réservation de place de cinéma avec l'API CDS" | |||
ENABLE_CODIR_OFFERERS_REPORT = "Active le rapport sur les entités juridiques actives pour le CODIR (tourne la nuit)" | |||
ENABLE_CRON_TO_UPDATE_OFFERER_STATS = "Active la mise à jour des statistiques des entités juridiques avec un cron" | |||
ENABLE_CHRONICLES_RETRIEVAL = "Activer la récupération des chroniques" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Par souci de cohérence, j'utiliserais SYNC
plutôt que RETRIEVAL
, comme ENABLE_BANK_ACCOUNT_SYNC
et ENABLE_DS_SYNC_FOR_USER_ACCOUNT_UPDATE_REQUESTS
par exemple.
@@ -70,9 +71,8 @@ class FeatureToggle(enum.Enum): | |||
ENABLE_PHONE_VALIDATION = "Active la validation du numéro de téléphone" | |||
ENABLE_PRO_ACCOUNT_CREATION = "Permettre l'inscription des comptes professionels" | |||
ENABLE_PRO_BOOKINGS_V2 = "Activer l'affichage de la page booking avec la nouvelle architecture." | |||
|
|||
ENABLE_SPECIAL_EVENT_RETRIEVAL = "Activer la récupération des réponses aux opération spéciales" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ENABLE_SPECIAL_EVENT_RETRIEVAL = "Activer la récupération des réponses aux opération spéciales" | |
ENABLE_SPECIAL_EVENT_RETRIEVAL = "Activer la récupération des réponses aux opérations spéciales" |
voire :
ENABLE_SPECIAL_EVENT_RETRIEVAL = "Activer la récupération des réponses aux opération spéciales" | |
ENABLE_SPECIAL_EVENT_RETRIEVAL = "Activer la synchronisation des réponses aux opérations spéciales" |
sort="submitted_at,asc", | ||
since=last_date, | ||
) | ||
yield from forms |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Question : Est-ce bon si on n'a aucun item dans forms
? (pas de nouveau, ou le dernier du précédent chunk complet était le tout dernier)
Sinon, un if not forms: break
?
Edit: test_empty_answer semble confirmer que ça marche
with mock.patch("pcapi.connectors.typeform.get_responses", side_effect=list_expected) as get_responses: | ||
for r, e in zip(typeform.get_responses_generator(time_function, form_id), chain(*list_expected)): | ||
if cycles % 5 == 0: | ||
get_responses.assert_called_with( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je ne suis pas certain que ça réinitialise à chaque appel pour vérifier que le suivant a les bons paramètres.
logger.error( | ||
"An error happened while retrieving special event", | ||
extra={ | ||
"event_id": event.id, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
J'ajouterais bien event.externalId
dans les logs, pour s'y retrouver sans la bdd.
models.SpecialEventAnswer( | ||
responseId=response.id, | ||
questionId=questions[answer.field_id].id, | ||
text=answer.text or "", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On a if not answer.text:
au-dessus, donc selon ma compréhension, on peut se limiter à :
text=answer.text or "", | |
text=answer.text, |
update_form_title_from_typeform(event=event, form=form) | ||
questions = update_form_questions_from_typeform(event=event, form=form) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggestion/débat : je pense qu'on pourrait dans la plupart des appels se passer de ces deux lignes, si "last_updated_at"
(dans le json reçu de Typeform, et que l'on pourrait reporter dans TypeformForm
) est antérieur à la date d'une dernière mise à jour que l'on pourrait stocker. Cela économisera pas mal d'appels à la base de données.
response_id="qwerty123", | ||
date_submitted=datetime.datetime(2020, 1, 1), | ||
phone_number="0123456789", | ||
email="[email protected]", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Détail : plutôt valid email ?
) | ||
db.session.add(response) | ||
db.session.flush() | ||
except sa.exc.IntegrityError: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ce cas est-il censé se produire en prod avec des données réelles ?
Si non, peut-être vaut-il mieux ne pas le passer sous silence, et ajouter un log d'erreur ?
But de la pull request
Ticket Jira (ou description si BSR) : https://passculture.atlassian.net/browse/PC-32007
Vérifications