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

Ajoute une contrainte d'unicité sur PrivateTopicRead #6558

Merged

Conversation

philippemilink
Copy link
Member

Sentry nous rapporte que l'erreur suivante s'est produite :

PrivateTopicRead.MultipleObjectsReturned: get() returned more than one PrivateTopicRead -- it returned 2!
[...]
File "zds/mp/views.py", line 215, in get_context_data
    mark_read(self.object, self.request.user)
File "zds/mp/models.py", line 560, in mark_read
    topic = PrivateTopicRead.objects.filter(privatetopic=privatetopic, user=user).get()

En effet, la base de données contient 4 couples privatetopic et user en double.

À défaut de comprendre comment ils ont pu être créés, je rajoute une contrainte d'unicité sur ce couple.

Instructions de QA

  • la CI passe
  • jouer avec les MPs et s'assurer que tout fonctionne comme attendu

@coveralls
Copy link

coveralls commented Nov 24, 2023

Coverage Status

coverage: 88.811% (-0.02%) from 88.827%
when pulling 6f288e9 on philippemilink:unique_privatetopicread
into fbdd980 on zestedesavoir:dev.

@Arnaud-D
Copy link
Contributor

Comment ça va se passer avec les potentiels doublons dans la base de prod ? Il faut les gérer avec la migration ?

@philippemilink
Copy link
Member Author

Comment ça va se passer avec les potentiels doublons dans la base de prod ? Il faut les gérer avec la migration ?

Bonne question ! :) Pour chaque couple en double, je vais en supprimer un manuellement.

Copy link
Contributor

@Arnaud-D Arnaud-D left a comment

Choose a reason for hiding this comment

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

QA OK ✔️

Tu as déjà supprimé les doublons où tu le rajoutes sur ta liste de courses pour le déploiement ?

Je ne fusionne pas tout de suite pour ne pas oublier de noter ça quelque part.

@philippemilink
Copy link
Member Author

Tu as déjà supprimé les doublons où tu le rajoutes sur ta liste de courses pour le déploiement ?

Je ne fusionne pas tout de suite pour ne pas oublier de noter ça quelque part.

Je viens de supprimer les doublons (enfin, un de chaque doublon, pour que ce ne soit plus des doublons). Pour en garder une trace, voilà les commandes effectuées :

SELECT 
    t.*
FROM mp_privatetopicread t 
INNER JOIN (
    SELECT 
        user_id,
        privatetopic_id,
        COUNT(*) AS nb
    FROM mp_privatetopicread
    GROUP BY user_id, privatetopic_id
    HAVING nb > 1
) g ON t.user_id=g.user_id AND t.privatetopic_id=g.privatetopic_id;

DELETE FROM mp_privatetopicread WHERE id IN(<ids des lignes à supprimer>);

J'ai sauvegardé les lignes supprimées ; si jamais il y a un problème, on pourra les restaurer.

Je rebase et je merge.

@philippemilink philippemilink enabled auto-merge (squash) December 10, 2023 16:28
@philippemilink philippemilink merged commit e0e78e2 into zestedesavoir:dev Dec 10, 2023
8 checks passed
@philippemilink philippemilink deleted the unique_privatetopicread branch December 10, 2023 16:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

3 participants