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-32194)[API] feat: add user and user_offerer for offerers without … #14549

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

jcicurel-pass
Copy link
Contributor

…one in industrial sandbox

But de la pull request

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

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

@jcicurel-pass jcicurel-pass marked this pull request as ready for review October 9, 2024 15:26
@ogeber
Copy link
Contributor

ogeber commented Oct 9, 2024

[ouvert à discussion] plutôt que d'ajouter un UserOfferer après coup, est-ce qu'on pourrait pas le faire au moment où on créé les structures ? Le coup de dev est plus long mais c'est sans doute plus propre ?

def create_user_offerers() -> None:
# Add a User and UserOfferer for each Offerer without one

logger.info("create_industrial_pro_users")
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
logger.info("create_industrial_pro_users")
logger.info("create_user_offerers")

Copy link
Contributor Author

Choose a reason for hiding this comment

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

oups 👍

Comment on lines 21 to 23
# do not set a UserOfferer if there is already one or if the offerer has a provider
if len(offerer.UserOfferers) > 0 or len(offerer.offererProviders) > 0:
continue
Copy link
Contributor

Choose a reason for hiding this comment

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

Plutôt que vérifier ensuite, je pense que tu dois pouvoir filtrer directement côté base de données :

.filter(
    offerers_models.UserOfferer.id.is_(None),
    offerers_models.OffererProvider.id.is_(None)
)

Copy link
Contributor

Choose a reason for hiding this comment

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

En plus ça évitera deux requêtes N+1 dans la boucle, donc plus performant :)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes pour le filtre 👍
Pour la requête N+1, les outerjoin ne l'évite pas ?

if len(offerer.UserOfferers) > 0 or len(offerer.offererProviders) > 0:
continue

if user == None:
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 :

Suggested change
if user == None:
if user is None:

continue

if user == None:
user = users_factories.ProFactory(email="[email protected]", firstName="User", lastName="Offerer")
Copy link
Contributor

Choose a reason for hiding this comment

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

Essayons désormais d'avoir des noms plus explicites, par exemple :

Suggested change
user = users_factories.ProFactory(email="[email protected]", firstName="User", lastName="Offerer")
user = users_factories.ProFactory(email="[email protected]", firstName="Compte pro", lastName="Rattaché")

@prouzet
Copy link
Contributor

prouzet commented Oct 9, 2024

[ouvert à discussion] plutôt que d'ajouter un UserOfferer après coup, est-ce qu'on pourrait pas le faire au moment où on créé les structures ? Le coup de dev est plus long mais c'est sans doute plus propre ?

Au final ça reste quand même un INSERT en base de données, seul le moment change.
Je ne suis pas forcément contre cette forme de rattrapage, qui n'empêche pas de créer les liens au moment de la création de structure, mais au moins on se concentre sur le besoin métier. Toutes les structures pour lesquelles on n'a pas besoin d'un compte pro spécifique auront ce compte, quel que soit le module de sandbox qui les crée.

@jcicurel-pass jcicurel-pass force-pushed the PC-32194-sandbox-ajouter-un-user-aux-structures-qui-nen-ont-pas branch from 9c0b888 to 35bcdeb Compare October 10, 2024 08:46
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.

3 participants