Skip to content
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

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

rpaoloni-pass
Copy link
Contributor

But de la pull request

Ticket Jira (ou description si BSR) : https://passculture.atlassian.net/browse/PC-32007

Vérifications

  • J'ai écrit les tests nécessaires
  • J'ai mis à jour le fichier des plans de tests du portail pro si nécessaire
  • J'ai mis à jour la liste des routes et des titres de pages du portail pro si j'en ai rajouté/modifié ou supprimé une.
  • J'ai relu attentivement les migrations, en particulier pour éviter les locks, et je préviens les équipes Shérif et Data
  • J'ai ajouté des screenshots pour d'éventuels changements graphiques
  • J'ai fait la revue fonctionnelle de mon ticket

Copy link
Contributor

github-actions bot commented Dec 19, 2024

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

@rpaoloni-pass rpaoloni-pass force-pushed the pc-32007-retrieve-special-event branch from 4c55562 to 408f54a Compare December 20, 2024 09:26
@rpaoloni-pass rpaoloni-pass force-pushed the pc-32007-retrieve-special-event branch 2 times, most recently from 1469934 to a606f4d Compare January 6, 2025 14:27
@rpaoloni-pass rpaoloni-pass force-pushed the pc-32007-retrieve-special-event branch from a606f4d to 2e7b18d Compare January 6, 2025 14:31
@rpaoloni-pass rpaoloni-pass marked this pull request as ready for review January 6, 2025 14:34
Copy link
Contributor

@prouzet-pass prouzet-pass left a 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"
Copy link
Contributor

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"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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 :

Suggested change
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
Copy link
Contributor

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(
Copy link
Contributor

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,
Copy link
Contributor

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 "",
Copy link
Contributor

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 à :

Suggested change
text=answer.text or "",
text=answer.text,

Comment on lines +64 to +65
update_form_title_from_typeform(event=event, form=form)
questions = update_form_questions_from_typeform(event=event, form=form)
Copy link
Contributor

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]",
Copy link
Contributor

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:
Copy link
Contributor

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 ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants