Projet

Général

Profil

Development #21489

Fonctionner avec Django 1.11 (et 1.8)

Ajouté par Frédéric Péters il y a environ 6 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
06 avril 2018
Echéance:
% réalisé:

100%

Temps estimé:
(Total: 0:00 h)
Patch proposed:
Non
Planning:

Description

Comme les autres modules, ne pas se retrouver à la traine.


Sous-tâches

Development #23018: Packager django-tables2 en version compatible django 1.8 à 1.11Rejeté

Actions
Bug #23032: Rendre django-tenants-schemas compatible Django 1.11Rejeté

Actions
Hobo - Bug #23035: Meilleur support des settings TEMPLATES pour la compatiblité > 1.8Rejeté

Actions
Plugin FS FranceConnect - Bug #23270: Rendre compatible Django 1.11Fermé

Actions
Development #23272: CustomUser.is_anonymous() et is_authenticated() empêchent l'exécution des mgmt commands sous django 1.11FerméEmmanuel Cazenave

Actions

Demandes liées

Lié à Authentic 2 - Bug #24081: supprimer "from global_settings import *"Fermé25 mai 2018

Actions
Lié à Authentic 2 - Development #25097: road to 1.11 : suppression du code visant django < 1.8Fermé06 juillet 2018

Actions
Lié à Authentic 2 - Development #22626: Retirer django-admin-tools et revenir à du vanilla django adminFermé19 mars 2018

Actions
Lié à Authentic 2 - Development #23019: Fonctionner avec django-tables2 version 1.2.x (cible avec django 1.8 et 1.11)Rejeté06 avril 2018

Actions
Lié à Authentic 2 - Development #25468: django 1.11 création automatique d'un username Fermé24 juillet 2018

Actions
Lié à Authentic 2 - Development #25502: road to django 1.11 : éviter les lookup 'in' implicitesFermé26 juillet 2018

Actions
Lié à Authentic 2 - Development #25557: road to django 1.11 : encore un 'in' lookup Fermé01 août 2018

Actions
Lié à Authentic 2 - Development #25567: django 1.11 : un utilisateur inactif n'est plus authentifiéFermé02 août 2018

Actions
Lié à Publik Installation Développeur - Support #25974: (authentic) échec de migrate_schemasFermé30 août 2018

Actions

Révisions associées

Révision c6e2632f (diff)
Ajouté par Emmanuel Cazenave il y a plus de 5 ans

django 1.11: adapt tox.ini and setup.py (#21489)

Révision f1668b2b (diff)
Ajouté par Emmanuel Cazenave il y a plus de 5 ans

django 1.11: adapt migration and model (#21489)

Révision 836695fa (diff)
Ajouté par Emmanuel Cazenave il y a plus de 5 ans

django 1.11: fix some imports (#21489)

Révision 89b7740e (diff)
Ajouté par Emmanuel Cazenave il y a plus de 5 ans

django 1.11: update ALLOWED_HOSTS in test settings (#21489)

Révision 54eb9e5d (diff)
Ajouté par Emmanuel Cazenave il y a plus de 5 ans

django 1.11: update redirect location checks (#21489)

https://code.djangoproject.com/ticket/23960

Révision d537656a (diff)
Ajouté par Emmanuel Cazenave il y a plus de 5 ans

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.

https://code.djangoproject.com/ticket/28207

Révision a3943e55 (diff)
Ajouté par Emmanuel Cazenave il y a plus de 5 ans

django 1.11: adapt PickerWidgetMixin (#21489)

https://code.djangoproject.com/ticket/15667
django commit: b52c73008a9d67e9ddbb841872dc15cdd3d6ee01

Révision e696f983 (diff)
Ajouté par Emmanuel Cazenave il y a plus de 5 ans

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.

https://code.djangoproject.com/ticket/24643

Révision db9b9028 (diff)
Ajouté par Emmanuel Cazenave il y a plus de 5 ans

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

Révision 0de3c582 (diff)
Ajouté par Emmanuel Cazenave il y a plus de 5 ans

django 1.11: avoid premature username creation (#25468) (#21489)

Révision 2c208379 (diff)
Ajouté par Emmanuel Cazenave il y a plus de 5 ans

django 1.11: keep an inactive user authenticated (#25567) (#21489)

Historique

#1

Mis à jour par Anonyme il y a environ 6 ans

  • Statut changé de Nouveau à En cours
  • Assigné à mis à Anonyme
#2

Mis à jour par Anonyme il y a environ 6 ans

Exemple de migration de Docbow https://dev.entrouvert.org/issues/21102

#3

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."

#4

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.

#5

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.

#6

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.

#7

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

#8

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

#9

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

#10

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

#11

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.

#12

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

#15

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/)

#16

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

#17

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):
#18

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

#19

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

#20

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

#21

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.

#22

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é
#23

Mis à jour par Anonyme il y a presque 6 ans

  • Lié à Bug #24081: supprimer "from global_settings import *" ajouté
#24

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é
#25

Mis à jour par Emmanuel Cazenave il y a presque 6 ans

#26

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.
#27

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.

#28

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é
#29

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é
#30

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é
#31

Mis à jour par Emmanuel Cazenave il y a plus de 5 ans

#32

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é
#33

Mis à jour par Emmanuel Cazenave il y a plus de 5 ans

#34

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é
#35

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.

#36

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

#37

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.

#38

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

#39

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.

#40

Mis à jour par Frédéric Péters il y a plus de 5 ans

#41

Mis à jour par Christophe Siraut il y a plus de 5 ans

  • Lié à Support #25974: (authentic) échec de migrate_schemas ajouté
#42

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

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF