Développement #68607
Publik - Développement #68182: montée de version django (→ 4.2 LTS)
Préparation django 4 : DeprecationWarnings
0%
Description
Cf tâche parente
Files
History
Updated by A. B. over 2 years ago
- File 0006-fixup-django4-replaced-urls.url-with-url.re_path-equ.patch 0006-fixup-django4-replaced-urls.url-with-url.re_path-equ.patch added
- File 0005-django4-access-request-headers-through-request.heade.patch 0005-django4-access-request-headers-through-request.heade.patch added
- File 0002-django4-replaced-force_text-with-equivalent-force_st.patch 0002-django4-replaced-force_text-with-equivalent-force_st.patch added
- File 0001-django4-replaced-ugettext-calls-with-corresponding-g.patch 0001-django4-replaced-ugettext-calls-with-corresponding-g.patch added
- File 0003-django4-replaced-deprecated-request.is_ajax-call-686.patch 0003-django4-replaced-deprecated-request.is_ajax-call-686.patch added
- File 0004-django4-replaced-urls.url-with-url.re_path-equivalen.patch 0004-django4-replaced-urls.url-with-url.re_path-equivalen.patch added
- Status changed from Nouveau to Solution proposée
- Patch proposed changed from No to Yes
Updated by Paul Marillonnet over 2 years 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 ?
Updated by A. B. over 2 years 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.