-
Notifications
You must be signed in to change notification settings - Fork 38
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
base: master
Are you sure you want to change the base?
(PC-32194)[API] feat: add user and user_offerer for offerers without … #14549
Conversation
[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") |
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.
logger.info("create_industrial_pro_users") | |
logger.info("create_user_offerers") |
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.
oups 👍
# 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 |
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.
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)
)
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.
En plus ça évitera deux requêtes N+1 dans la boucle, donc plus performant :)
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.
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: |
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 :
if user == None: | |
if user is None: |
continue | ||
|
||
if user == None: | ||
user = users_factories.ProFactory(email="[email protected]", firstName="User", lastName="Offerer") |
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.
Essayons désormais d'avoir des noms plus explicites, par exemple :
user = users_factories.ProFactory(email="[email protected]", firstName="User", lastName="Offerer") | |
user = users_factories.ProFactory(email="[email protected]", firstName="Compte pro", lastName="Rattaché") |
Au final ça reste quand même un INSERT en base de données, seul le moment change. |
…one in industrial sandbox
9c0b888
to
35bcdeb
Compare
…one in industrial sandbox
But de la pull request
Ticket Jira (ou description si BSR) : https://passculture.atlassian.net/browse/PC-32194
Vérifications