Project

General

Profile

Development #68607

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

Préparation django 4 : DeprecationWarnings

Added by Agate Berriot 5 months ago. Updated 5 months ago.

Status:
Nouveau
Priority:
Normal
Assignee:
Category:
-
Target version:
-
Start date:
01 September 2022
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:
No
Tags:

Description

Cf tâche parente


Files

History

#2

Updated by Paul Marillonnet 5 months ago

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

Updated by Agate Berriot 5 months ago

  • Status changed from Solution proposée to Nouveau

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

Also available in: Atom PDF