Projet

Général

Profil

Bug #55959

base_adresse: lier les City/Region/DepartmentModel à la resource

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

Sur les modèles CityModel, RegionModel et DepartementModel on a le même soucis qu'avec StreetModel pour #55950 : il manque un lien vers la ressource (l'instance de connecteur) concernée.


Fichiers

Révisions associées

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

base_adresse: link data models to BaseAdresse instance (#55959)

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

et toute honte bue, on n'oublie pas non plus le cache AddressCacheModel

#3

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

  • Statut changé de Solution proposée à En cours

Je dois revoir ma copie.

django.db.utils.IntegrityError: ERREUR:  la valeur d'une clé dupliquée rompt la contrainte unique « base_adresse_regionmodel_code_key »
DETAIL:  La clé « (code)=(01) » existe déjà.
#4

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

Éventuellement mettre un related_name sympa, histoire d'avoir self.cities plutôt que self.citymodel_set ? (si oui, à faire aussi dans #55950)

#5

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

Valentin Deniaud a écrit :

Éventuellement mettre un related_name sympa, histoire d'avoir self.cities plutôt que self.citymodel_set ? (si oui, à faire aussi dans #55950)

Ah ben oui mais en fait ça va pas aller parce qu'on a déjà des endpoints nommés self.regions, self.departments, ... et donc trouver autre chose que "regions" pour le related_name je vois pas, autant garder le model regionmodel_set.

(le patch arrive, par ailleurs)

#6

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

La migration est un peu longue, mais c'est une répétition de :
  • j'ajoute un clé distante vers BaseAdresse, avec null=True,default=None pour migrer sans se poser de question
  • quand il y avait un unique, il change et devient un unique_together(resource, ...)
  • je mets l'id de la 1ère instance BAN trouvé dans la clé distante
  • je supprime alors le null=True,default=None qui n'a plus de raison d'être
    pour les quatre modèles.

Le code est bateau par ailleurs.

#7

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

À mon avis c'est une migration à faire en plusieurs fois, cf « Thus, on PostgreSQL, for example, you should avoid combining schema changes and RunPython operations in the same migration » https://docs.djangoproject.com/en/3.2/ref/migration-operations/#django.db.migrations.operations.RunPython.

La dernière fois qu'on s'est mangé des erreurs à cause de ça c'est #54969...

#8

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

Voici donc, le même code mais la migration décomposée en 3 étapes.

#9

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

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

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

  • Statut changé de Solution validée à Résolu (à déployer)
commit 636b595833f5c7eadbb434f7aa1e116ee1709c7a
Author: Thomas NOËL <tnoel@entrouvert.com>
Date:   Tue Aug 3 20:44:46 2021 +0200

    base_adresse: link data models to BaseAdresse instance (#55959)

#11

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