Projet

Général

Profil

Bug #55950

base_adresse: StreetModel est général à toutes les instances du connecteur

Ajouté par Thomas Noël il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
03 août 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Révision e1e8e953 (diff)
Ajouté par Thomas Noël il y a plus de 2 ans

base_adresse: link StreetModel to its BaseAdresse instance (#55950)

Révision 58f544f1 (diff)
Ajouté par Thomas Noël il y a plus de 2 ans

base_adresse: revert last commit, bad migration code (#55950)

Migrations must not mix AlterField/AddField and RunPython

Révision fdc8c289 (diff)
Ajouté par Thomas Noël il y a plus de 2 ans

base_adresse: link StreetModel to its BaseAdresse instance (#55950)

Historique

#1

Mis à jour par Thomas Noël il y a plus de 2 ans

  • Assigné à mis à Thomas Noël
#2

Mis à jour par Thomas Noël il y a plus de 2 ans

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)

#4

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().

#5

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Statut changé de Solution proposée à Solution validée
#6

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.

#7

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.

#8

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)

#9

Mis à jour par Thomas Noël il y a plus de 2 ans

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)

#10

Mis à jour par Serghei Mihai il y a plus de 2 ans

  • Statut changé de Solution proposée à Solution validée
#11

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)

#12

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

#14

Mis à jour par Valentin Deniaud il y a plus de 2 ans

  • Statut changé de Solution proposée à Solution validée
#15

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)

#16

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

Formats disponibles : Atom PDF