Projet

Général

Profil

Development #68607

Publik - Development #68182: montée de version django (→ 4.2 LTS)

Préparation django 4 : DeprecationWarnings

Ajouté par A. Berriot il y a plus d'un an. Mis à jour il y a plus d'un an.

Statut:
Nouveau
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
01 septembre 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non
Tags:

Description

Cf tâche parente


Fichiers

Historique

#2

Mis à jour par Paul Marillonnet il y a plus d'un an

Une première relecture :

0003 : juste question de forme, j’aurais mis l’utilitaire is_ajax dans authentic2.utils.misc plutôt que de faire un fichier à part juste pour ça.

0005 : là je vois encore des accès aux entêtes http via request.META, notamment

src/authentic2/cbv.py:72:            next_url = request.META.get('HTTP_REFERER') or self.next_url_default
src/authentic2/decorators.py:148:            origin = request.META.get('HTTP_REFERER')
src/authentic2/decorators.py:154:            origin = request.META.get('HTTP_ORIGIN')
src/authentic2/log_filters.py:33:        if not hasattr(request, 'META'):
src/authentic2/log_filters.py:42:                record.ip = request.META.get('REMOTE_ADDR', self.DEFAULT_IP)
src/authentic2/middleware.py:45:        ip = request.META.get('REMOTE_ADDR', None)
src/authentic2_idp_cas/views.py:467:        referrer = request.META['HTTP_REFERER']
src/authentic2/middleware.py:210:        if 'HTTP_X_FORWARDED_FOR' in request.META:
src/authentic2/middleware.py:211:            request.META['REMOTE_ADDR'] = request.META['HTTP_X_FORWARDED_FOR'].split(",")[0].strip()
src/authentic2/saml/common.py:67:        and 'CONTENT_TYPE' in request.META
src/authentic2/saml/common.py:68:        and 'text/xml' in request.META['CONTENT_TYPE']
src/authentic2/saml/common.py:513:        referer = request.META.get('HTTP_REFERER')
src/authentic2/utils/evaluate.py:325:        ctx['remote_addr'] = request.META.get('REMOTE_ADDR')
src/authentic2_idp_oidc/views.py:538:    authorization = request.META['HTTP_AUTHORIZATION'].split()
src/authentic2_idp_oidc/views.py:818:    if 'HTTP_AUTHORIZATION' not in request.META:
src/authentic2_idp_oidc/views.py:820:    authorization = request.META['HTTP_AUTHORIZATION'].split()

et j’ai pas compris pourquoi ils ne lèvent pas de warning.

Et, note pour mémoire, un ou deux autres endroits qui sans doute ne lèvent pas de warning et où il faudra plus qu’un sed pour que ce soit compatible django 4 :
  • la classe authentic2.middlewares.RequestIdMiddleware où il faut être sûr que ce qu’on a dans la setting REQUEST_ID_HEADER est compatible avec les entrées des request.headers.
  • la classe authentic2.utils.evaluate.HTTPHeaders où la logique de recherche des entêtes dans request.META n’est pas compatible django 4.

0006 : ne pas oublier de fixup dans 0004.

––––

Là dans la sortie pytest je vois seulement un DeprecationWarning et deux RemovedInDjango40Warning restants. Peut-être qu’on pourrait les traiter aussi et mettre un bout de script dans les tests pour tester qu’on en introduit pas de nouveau à l’avenir ?
C’est peut-être à traiter ailleurs qu’ici. Ici dans ce ticket tu parles d’une tâche parente, c’est le ticket chapeau Publik, c’est ça ?

#3

Mis à jour par A. Berriot il y a plus d'un an

  • Statut changé de Solution proposée à Nouveau

Conflits de partout et de nouveaux tests qui crashent, je reprendrai from scratch une autre fois.

Formats disponibles : Atom PDF