Project

General

Profile

Development #40685

squash des migrations

Added by Benjamin Dauvergne almost 4 years ago. Updated 2 months ago.

Status:
En cours
Priority:
Normal
Category:
-
Target version:
-
Start date:
12 March 2020
Due date:
% Done:

0%

Estimated time:
Patch proposed:
No
Planning:
No

Description

En utilisant django-replace-migrations plutôt que la commande Django qui est difficile à utiliser en cas dépendances croisées (on pourra travailler à limiter ces dépendances ensuite, une fois les migrations nettoyées).


Related issues

Related to Authentic 2 - Development #84914: Supprimer les anciennes migrationsNouveau01 February 2024

Actions

History

#1

Updated by Benjamin Dauvergne almost 4 years ago

  • Subject changed from custom_user: squash des migrations to auth_*,idp_*: squash des migrations
  • Description updated (diff)
#2

Updated by Benjamin Dauvergne almost 4 years ago

  • Description updated (diff)
#3

Updated by Benjamin Dauvergne almost 4 years ago

  • Tracker changed from Support to Development
#4

Updated by Frédéric Péters 2 months ago

Je suis retombé ici en voyant src/authentic2/auth_migrations_18/ et en me disant que ça pouvait se supprimer. Spoiler : pas si facilement, après avoir retiré les déclarations de dépendances d'autres migrations vers celles-ci, et le MIGRATION_MODULES dans settings.py, les tests échouent).

#5

Updated by Robot Gitea 2 months ago

  • Status changed from Nouveau to En cours

Benjamin Dauvergne (bdauvergne) a ouvert une pull request sur Gitea concernant cette demande :

#6

Updated by Benjamin Dauvergne 2 months ago

J'ai quelques warnings à fixer mais la branche tourne, le fait de repartir sur les migrations native pour django.contrib.auth provoque l'apparition de ce warning qui n'est pas bien grave mais qui pourra se corriger :

bdauvergne@revestel:~/wd/eo/authentic$ tox -e manage -- migrate
.pkg: _optional_hooks> python /usr/lib/python3/dist-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: get_requires_for_build_editable> python /usr/lib/python3/dist-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: build_editable> python /usr/lib/python3/dist-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
manage: install_package> python -I -m pip install --force-reinstall --no-deps /home/bdauvergne/.tmp/tox-bdauvergne/authentic/.tmp/package/373/authentic2-5.18.post28+gd974c5f5-0.editable-py3-none-any.whl
manage: commands[0]> ./getlasso3.sh
manage: commands[1]> ./manage.py migrate
Operations to perform:
  Apply all migrations: a2_rbac, admin, auth, authentic2, authentic2_auth_fc, authentic2_auth_oidc, authentic2_auth_saml, authentic2_idp_cas, authentic2_idp_oidc, authenticators, contenttypes, custom_user, journal, mellon, saml, sessions
Running migrations:
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions...
    A problem arose migrating proxy model permissions for custom_user_user to authentic2_ldapuser.

      Permission(s) for authentic2_ldapuser already existed.
      Codenames Q: (AND: ('codename__in', ['add_ldapuser', 'change_ldapuser', 'delete_ldapuser', 'view_ldapuser']))

    Ensure to audit ALL permissions for custom_user_user and authentic2_ldapuser.
 OK
  Applying auth.0012_alter_user_first_name_max_length... OK
.pkg: _exit> python /usr/lib/python3/dist-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
  manage: OK (5.93=setup[1.08]+cmd[0.03,4.81] seconds)
  congratulations :) (6.09 seconds)

En regardant le contenu de auth_permission on voit que les permission pour LDAPUser qu'on utilise pas sont dupliquées :

authentic2=# select * from auth_permission where codename like '%ldapuser';
 id  |         name         | content_type_id |    codename     
-----+----------------------+-----------------+-----------------
 173 | Can add ldap user    |               1 | add_ldapuser
 174 | Can change ldap user |               1 | change_ldapuser
 175 | Can delete ldap user |               1 | delete_ldapuser
 230 | Can add ldap user    |              58 | add_ldapuser
 231 | Can change ldap user |              58 | change_ldapuser
 232 | Can delete ldap user |              58 | delete_ldapuser
 233 | Can view ldap user   |              58 | view_ldapuser

Ce n'est pas bien grave mais on pourra prévoir de nettoyer ça en avance en SQL.

#7

Updated by Robot Gitea 2 months ago

  • Status changed from En cours to Solution proposée
#8

Updated by Benjamin Dauvergne 2 months ago

  • Subject changed from auth_*,idp_*: squash des migrations to squash des migrations
#9

Updated by Benjamin Dauvergne 2 months ago

  • Description updated (diff)
#10

Updated by Benjamin Dauvergne 2 months ago

La branche fait gagner 10s sur l'initialisation d'une instance (16s -> 6s).


À priori je vais tagger a2 avec une version majeur pour bien marqué les versions avant/après le squash, sait-on jamais si quelqu'un n'était pas à jour.

Je viens de vérifier un point: si certaines anciennes migrations manquent ça plantera avant de mettre la base dans un état incohérent (permettant de downgrader vers la version intermédiaire avant de réappliquer celle avec les migrations squashées)

#15

Updated by Benjamin Dauvergne 2 months ago

#16

Updated by Benjamin Dauvergne 2 months ago

  • Status changed from Solution proposée to En cours

Je reporte ce développement à 2024 ça ne sert à rien de bloquer dessus, je verrai pour y réintégrer des futures migrations.

Also available in: Atom PDF