Development #21489
Fonctionner avec Django 1.11 (et 1.8)
100%
Description
Comme les autres modules, ne pas se retrouver à la traine.
Sous-tâches
Demandes liées
Révisions associées
django 1.11: adapt migration and model (#21489)
django 1.11: fix some imports (#21489)
django 1.11: update ALLOWED_HOSTS in test settings (#21489)
django 1.11: update redirect location checks (#21489)
django 1.11: delete ambiguous arguments in authenticate (#21489)
django 1.11 can call LDAPBackendPasswordLost.authenticate
with a request argument instead of a user
due to introspection.
django 1.11: adapt PickerWidgetMixin (#21489)
https://code.djangoproject.com/ticket/15667
django commit: b52c73008a9d67e9ddbb841872dc15cdd3d6ee01
django 1.11: adapt PickledObjectField lookups (#21489)
django 1.11: handle form creation through get_context_data (#21489)
In django 1.11 form initialisation might not happen until
get_context_data is called, so we can't expect self.ou
to be populated until then.
django 1.11: ensure compatibility with recent django-tables2 (#21489)
django-tables2 1.1 is not compatbible with django 1.11
In recent version of django-tables2 'row' is not available in
the context of TemplateColumn, so we use direclty 'record'
(instead of 'row.record').
Historique
Mis à jour par Anonyme il y a environ 6 ans
- Statut changé de Nouveau à En cours
- Assigné à mis à Anonyme
Mis à jour par Anonyme il y a environ 6 ans
Exemple de migration de Docbow https://dev.entrouvert.org/issues/21102
Mis à jour par Anonyme il y a environ 6 ans
- Sujet changé de Fonctionner avec Django 1.11 à Fonctionner avec Django 1.11 (et 1.8)
Rapport¶
pour continuer là où le travail était sur la branche wip/django111
tox -e fast-coverage-dj111-authentic-pg -- --pdb ValueError: Related model 'Operation' cannot be resolved**
étape 1 : upgrade vers 1.9¶
https://docs.djangoproject.com/en/2.0/releases/1.9/#backwards-incompatible-1-9
- suppression de from django.conf.urls import patterns
- suppresions de modules
- Django 1.9 sets 9.1 as the minimum PostgreSQL version it officially supports.
- Patterns: vérifier authentic2.decorators.required qui modifie patterns ?
- All models need to be defined inside an installed application or declare an explicit app_label (a2_rbac.models et django_rbac.models par extension)
TODO 1.9¶
- Vérifier la compatibilité des dépendances d'authentic2 :
- upgrade EO-deb pour django-admin-tools (version la plus récente = python-django-admin-tools_0.6.0-1~eob80+2_all.deb)
- vérifier authentic2.decorators.required
qui modifie patterns
?
- TODO liste dépréciations : https://docs.djangoproject.com/en/2.0/releases/1.9/#features-deprecated-in-1-9
étape 2: upgrade vers 1.11¶
Continuer à vérifier la liste des dépréciations: https://docs.djangoproject.com/en/2.0/releases/1.11/#backwards-incompatible-1-11
Faits :
- django.contrib.gis : OK
- django.contrib.staticfiles:
- collectstatic: TODO (beware of cyclic links)
- ManifestStaticFilesStorage: OK
- SubfieldBase : OK (metaclass = django.models.SubfieldBase n'existe plus)
Tests¶
- TODO passer les tests avec 1.8 et 1.11 : tox e coverage{dj18,dj111}-authentic-pg -- --no-migrations
https://jenkins.entrouvert.org/job/authentic2/
- TODO écrire tests pour authentic2.saml.fields (remplacement de SubfieldBase)
Dépendances¶
- pytz is a required dependency (1.11)
- django-admin-tools 0.8.1 (1.11)
- https://github.com/django-admin-tools/django-admin-tools/blob/master/CHANGELOG
- settings => nouveau param TEMPLATES pour ajouter le template loader d'admin_tools
- the minimum supported version of psycopg2 is increased from 2.4.5 to 2.5.4.
- Pour l'adminsys, voir toute la liste ici https://docs.djangoproject.com/en/1.11/internals/deprecation/
- "Upstream support for PostgreSQL 9.2 ends in September 2017. As a consequence, Django 1.11 sets PostgreSQL 9.3 as the minimum version it officially supports.
Support for PostGIS 2.0 is also removed as PostgreSQL 9.2 is the last version to support it."
Mis à jour par Benjamin Dauvergne il y a environ 6 ans
Il commence à y avoir un mélange de corrections PEP8 et Python3 en plus du passage 1.9, 1.10, 1.11 dans la branche, ce genre de patchs finit par ne plus ressembler à rien, est-ce que tu pourrais ségréguer soit avant, soit après tes modifications PEP8 et Python3 (ou ignorer complètement cet aspect Python3 pour l'instant, ce sera de toute façon très partiel), si on pouvait avoir un commit dj1.9, dj1.10 puis dj1.11 ce serait cool aussi.
Mis à jour par Anonyme il y a environ 6 ans
Il commence à y avoir un mélange de corrections PEP8 et Python3 en plus du passage 1.9, 1.10, 1.11 dans la branche, ce genre de patchs finit par ne plus ressembler à rien,
Je suis conscient de ce mélange, je n'ai pensé au fait que la relecture d'un patch qui contient des corrections de style avec des changements de code soit un problème.
est-ce que tu pourrais uniquement gérer ségréguer soit avant, soit après tes modifications PEP8 et Python3 (ou ignorer complètement cet aspect Python3 pour l'instant, ce sera de toute façon très partiel), si on pouvait avoir un commit dj1.9, dj1.10 puis dj1.11 ce serait cool aussi.
Oui, à partir de maintenant. Quand j'aurais terminé le travail dans la branche, je "squasherai" tout ça.
Mis à jour par Emmanuel Cazenave il y a environ 6 ans
Sur mon en env Publik multitenant local, en bossant sur #20933, je remarque la choses suivante.
Dans authentic/src/authentic2/settings.py
il y a TEMPLATE_DEBUG = False
, qui entraîne dans debian_config_common.py
, le passage dans if 'TEMPLATE_DEBUG' in globals()
ligne 159.
Heureusement d'ailleurs, parce que dans else
, ça planterait sur assert len(TEMPLATES)
, setting non définie par authentic à ce stade.
Quand le patch réalisé ici sera poussé, avec vraisemblablement un abandon de TEMPLATE_DEBUG = False
, on se retrouvera dans le else
du debian_config_common.py
. Impact à évaluer par personnes compétentes (pas moi).
NB: tout ceci se passe sur mon env local, mais je crois bien que c'est pareil en prod.
Mis à jour par Frédéric Péters il y a environ 6 ans
Quand il y a migration des variables TEMPLATE_* à TEMPLATES, il faut tout faire, y compris dégager le TEMPLATE_DEBUG (qui sert au final de flag pour voir si ça a migré ou pas, on aurait bien pu utiliser TEMPLATES à la place, et avoir quelque chose de plus facile à suivre).
Mis à jour par Anonyme il y a presque 6 ans
Dernier push dans la branche wip/django111 (1 seul commit amendé à chaque fois):
- suppression de tous les settings TEMPLATE_
- fix des render_to_string, et remplacement de render_to_response vers render
- suppression de l'usage de Model._meta.get_field_by_name
- suppression des {% load firstof from future %}
- suppression de l'usage de RequestContext dans src/authentic2/registration_backend/views.BaseRegistrationView.get_context_data
Mis à jour par Frédéric Péters il y a presque 6 ans
C'est Benjamin qui dira mais de mon côté, des passages ainsi :
-urlpatterns = patterns('', - url(r'^register/$', api_views.register, - name='a2-api-register'), - url(r'^password-change/$', api_views.password_change, - name='a2-api-password-change'), - url(r'^user/$', api_views.user, - name='a2-api-user'), - url(r'^roles/(?P<role_uuid>[\w+]*)/members/(?P<member_uuid>[^/]+)/$', - api_views.role_memberships, name='a2-api-role-member'), - url(r'^check-password/$', api_views.check_password, - name='a2-api-check-password'), -) +urlpatterns = [ + url(r'^register/$', api_views.register, + name='a2-api-register'), + url(r'^password-change/$', api_views.password_change, + name='a2-api-password-change'), + url(r'^user/$', api_views.user, + name='a2-api-user'), + url(r'^roles/(?P<role_uuid>[\w+]*)/members/(?P<member_uuid>[^/]+)/$', + api_views.role_memberships, name='a2-api-role-member'), + url(r'^check-password/$', api_views.check_password, + name='a2-api-check-password') +]
je trouve qu'ils seraient bien mieux s'ils modifiaient juste les premières et dernières lignes, genre :
@@ -2,7 +2,7 @@ from django.conf.urls import patterns, url from . import api_views -urlpatterns = patterns('', +urlpatterns = [ url(r'^register/$', api_views.register, name='a2-api-register'), url(r'^password-change/$', api_views.password_change, @@ -13,5 +13,5 @@ urlpatterns = patterns('', api_views.role_memberships, name='a2-api-role-member'), url(r'^check-password/$', api_views.check_password, name='a2-api-check-password'), -) +]
pour lors de la relecture qu'il soit net que les autres lignes ne changent pas et pour plus tard ne pas compliquer l'accès à l'historique des autres lignes (type git annotate).
Mis à jour par Frédéric Péters il y a presque 6 ans
Bon, en fait Benjamin le signale déjà plus haut « Il commence à y avoir un mélange (...) ».
Mis à jour par Anonyme il y a presque 6 ans
Frédéric Péters a écrit :
Bon, en fait Benjamin le signale déjà plus haut « Il commence à y avoir un mélange (...) ».
Oui c'était bien noté, je ne valide plus ce genre de modifications maintenant.
Désolé pour l'historique, mais ce à quoi tu fais référence remonte à avant la remarque de Benjamin.
Faudrait que je revienne sur ces modifications à l'occasion d'une phase de finition.
Mis à jour par Anonyme il y a presque 6 ans
Elias Showk a écrit :
Faudrait que je revienne sur ces modifications à l'occasion d'une phase de finition.
Retours en arrière faits sur les modifications pointées
Mis à jour par Anonyme il y a presque 6 ans
Authentic tourne en multitenant local, sans bugs d'utilisation encore visibles.
Malheureusement, les tests ne passent encore pas en 1.11 (https://jenkins.entrouvert.org/job/authentic2-dev/)
Mis à jour par Anonyme il y a presque 6 ans
Fred sur jabber :
+if django.VERSION1 < 10: # attention pas ok à partir de django 2.0
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
Je ne sais pas de quoi on parle mais:
if django.VERSION < (1, 10):
Mis à jour par Anonyme il y a presque 6 ans
Elias Showk a écrit :
Fred sur jabber :
> +if django.VERSION[1] < 10: # attention pas ok à partir de django 2.0 >
Je trouve pas de référence à ça.
Le master de django.VERSION est même encore sous ce format :https://github.com/django/django/blob/master/django/__init__.py
Mis à jour par Frédéric Péters il y a presque 6 ans
+if django.VERSION1 < 10: # attention pas ok à partir de django 2.0
Ce que je voulais dire c'est que dans Django 2.0, django.VERSION1 < 10 sera évalué positivement alors que ton souhait est d'évaluer positivement uniquement les versions inférieure à la 1.10. (cf le commentaire de Benjamin pour la forme).
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
Les séquences en Python sont comparées lexicographiquement i.e. de gauche à droite donc (1, 2) < (1, 3, 1) < (2, 0) < (2, 1, 2)
.
Mis à jour par Anonyme il y a presque 6 ans
Benjamin Dauvergne a écrit :
Les séquences en Python sont comparées lexicographiquement i.e. de gauche à droite donc
(1, 2) < (1, 3, 1) < (2, 0) < (2, 1, 2)
.
Merci, c'est corrigé comme tu l'indiquais dans la branche.
Mis à jour par Anonyme il y a presque 6 ans
- Lié à Development #24071: Support de TEMPLATES dès qu'il sont définis par ailleurs ajouté
Mis à jour par Anonyme il y a presque 6 ans
- Lié à Bug #24081: supprimer "from global_settings import *" ajouté
Mis à jour par Anonyme il y a presque 6 ans
- Lié à Development #24071: Support de TEMPLATES dès qu'il sont définis par ailleurs supprimé
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
- Bloque Development #24091: Tests unitaires en django 1.11 ajouté
Mis à jour par Anonyme il y a presque 6 ans
- Assigné à changé de Anonyme à Emmanuel Cazenave
Merci Emmanuel pour le coup de main
Mise à jour forcée de la branche wip/django111:
Je viens de décomposer le travail fait dons 20 nouveaux commits (+ le commit de benj #23272) avec chacun une modification qui permettra de mieux repérer les problèmes qu'il y a.- un serveur simple en publik-devinst tournera normalement sur cette branche
- les tests par contre sont vraiment dans un sal état.
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
Beaucoup de discussions ici, comme je reprends et pour la lisibilité je préférerais fermer ici et créer un nouveau ticket.
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Lié à Development #25097: road to 1.11 : suppression du code visant django < 1.8 ajouté
Mis à jour par Anonyme il y a plus de 5 ans
- Lié à Development #22626: Retirer django-admin-tools et revenir à du vanilla django admin ajouté
Mis à jour par Anonyme il y a plus de 5 ans
- Lié à Development #23019: Fonctionner avec django-tables2 version 1.2.x (cible avec django 1.8 et 1.11) ajouté
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
- Lié à Development #25468: django 1.11 création automatique d'un username ajouté
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
- Lié à Development #25502: road to django 1.11 : éviter les lookup 'in' implicites ajouté
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
- Lié à Development #25557: road to django 1.11 : encore un 'in' lookup ajouté
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
- Lié à Development #25567: django 1.11 : un utilisateur inactif n'est plus authentifié ajouté
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
- Statut changé de En cours à Solution proposée
Oh my god, tous les tests au vert dans jenkins : https://jenkins2.entrouvert.org/job/authentic2-wip/job/wip%252Fdj111/
Branche wip/dj111.
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Statut changé de Solution proposée à Solution validée
Ack (mais pousse demain soir).
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
Yeah !!!!!
Tu pourras pousser à ma place stp ? (en vacances à partir de ce soir et pas trop internet au camping ...)
Je viens de rebaser sur master et c'est toujours ok.
Mis à jour par Frédéric Péters il y a plus de 5 ans
Sans le squash des migrations, ça va continuer à clasher avec django-tenant-schemas, non ? (oui, mais on suivra ça dans #25621).
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
J'ai du coup poussé la branche.
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Bloque Development #24091: Tests unitaires en django 1.11 supprimé
Mis à jour par Christophe Siraut il y a plus de 5 ans
- Lié à Support #25974: (authentic) échec de migrate_schemas ajouté
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Fermé
django 1.11: adapt tox.ini and setup.py (#21489)