Bug #55950
base_adresse: StreetModel est général à toutes les instances du connecteur
0%
Description
Erreur de programmation dans le connecteur BAN : les rues (StreetModel) ne dépendent pas du connecteur, et donc si on en instancie deux (un vers la BAN, un autre vers une autre instance addok) on se retrouve avec une liste des rues facilement en panne.
ie : il manque une ForeignKey(BaseAdresse) dans StreetModel
Fichiers
Révisions associées
base_adresse: revert last commit, bad migration code (#55950)
Migrations must not mix AlterField/AddField and RunPython
base_adresse: link StreetModel to its BaseAdresse instance (#55950)
Historique
Mis à jour par Thomas Noël il y a plus de 2 ans
- Fichier 0001-base_adresse-link-StreetModel-to-its-BaseAdresse-ins.patch 0001-base_adresse-link-StreetModel-to-its-BaseAdresse-ins.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Les experts en migration Django peuvent venir rire de ma solution... je ne suis pas parvenu à faire mieux (le «default=None,null=True» dans la ForeignKey est très moche, j'aimerai ne pas avoir à l'ajouter, mais je ne sais pas comment)
Mis à jour par Thomas Noël il y a plus de 2 ans
- Fichier 0001-base_adresse-link-StreetModel-to-its-BaseAdresse-ins.patch 0001-base_adresse-link-StreetModel-to-its-BaseAdresse-ins.patch ajouté
Oups, j'avais oublié de commiter une modif des tests.
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
S'il n'y a plus de BaseAdresse je pense que tu peux te permettre un StreetModel.objects.all().delete().
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
Je crois qu'on nomme le champ resource un peut partout et pas connector.
Mis à jour par Thomas Noël il y a plus de 2 ans
- Statut changé de Solution validée à En cours
Discussion de vive voix : je vais rajouter une migration qui va permettre de retirer les moches null=True/default=None sur la clé distante. Et je vais effectivement faire un delete() en cas d'inexistance de connecteur BAN. Et renommer "connector" en ressource.
Mis à jour par Serghei Mihai il y a plus de 2 ans
Aussi, au lieu de
return StreetModel.objects.filter(connector=self).filter(criteria)
cela me semble plus clair et court de faire plutôt:
return self.streetmodel_set.filter(criteria)
Mis à jour par Thomas Noël il y a plus de 2 ans
- Fichier 0001-base_adresse-link-StreetModel-to-its-BaseAdresse-ins.patch 0001-base_adresse-link-StreetModel-to-its-BaseAdresse-ins.patch ajouté
- Statut changé de En cours à Solution proposée
Voici donc, tout est pris en compte, y compris l'usage de self.streetmodel_set
(et je constate qu'on a exactement le même pépin avec les autres modèles CityModel, RegionModel et DepartmentModel, ticket à venir)
Mis à jour par Serghei Mihai il y a plus de 2 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Thomas Noël il y a plus de 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit e1e8e95339c40e3a36e8759e65189b759a935fb5 Author: Thomas NOEL <tnoel@entrouvert.com> Date: Tue Aug 3 16:12:43 2021 +0200 base_adresse: link StreetModel to its BaseAdresse instance (#55950)
Mis à jour par Thomas Noël il y a plus de 2 ans
- Statut changé de Résolu (à déployer) à En cours
En fait ça ne va pas, il ne faut pas mélanger des AddField/AlterField et du RunPython dans les migrations, on peut tomber sur des soucis de transaction (cf #54969).
Je revert... désolé.
commit 58f544f1c2930b226c1da68dc1ea114751d7fa19 Author: Thomas NOEL <tnoel@entrouvert.com> Date: Wed Aug 4 11:10:30 2021 +0200 base_adresse: revert last commit, bad migration code (#55950) Migrations must not mix AlterField/AddField and RunPython
Je vais décomposer la migration en 3 : AddField + RunPython + AlterField
Mis à jour par Thomas Noël il y a plus de 2 ans
- Fichier 0001-base_adresse-link-StreetModel-to-its-BaseAdresse-ins.patch 0001-base_adresse-link-StreetModel-to-its-BaseAdresse-ins.patch ajouté
- Statut changé de En cours à Solution proposée
Mis à jour par Valentin Deniaud il y a plus de 2 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Thomas Noël il y a plus de 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit fdc8c289476a3eb7e8444bc387a110c4387f8169 Author: Thomas NOEL <tnoel@entrouvert.com> Date: Tue Aug 3 16:12:43 2021 +0200 base_adresse: link StreetModel to its BaseAdresse instance (#55950)
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
base_adresse: link StreetModel to its BaseAdresse instance (#55950)