Development #64305
fonctionner avec django 3.2
0%
Description
toujours chantier bullseye.
le support de sécurité de la 2.2 terminé depuis le 1er avril, on est bien en retard.
Demandes liées
Révisions associées
tox: test with bullseye's django3 and matching dependency versions (#64305)
tox: ldaptools version compatible with openldap matching dj3 in debian (#64305)
tox: add locale to makemessages command (#64305)
debian: allow dependencies to be django-3 compliant (#64305)
plugins: discard deprecated django.conf.urls.url (#64305)
discard deprecated unicode-aware i18n utils (#64305)
saml: discard deprecated force_text in saml2utils (#64305)
settings: hard-code xstatic uris instead of gadjo templatetag reliance (#64305)
define a _user_get_all_permissions util when necessary (#64305)
drop deprecated django curry in favor of functools.partialmethod (#64305)
django3: fix FieldDoesNotExist import (#64305)
manager: remove unnecessary table deepcopy (#64305)
templates: remove deprecated admin_static tag library (#64305)
api: test drf tz awareness errors in serializer datetimefield filters (#64305)
django_rbac: fix ContentType.__str__ variations (#64305)
django3: try to read signed cookie content in tests (#64305)
widgets: override select2's ns management with a2's url routing (#64305)
widgets: adapt ModelSelect2Mixin.filter_queryset prototype (#64305)
tests: disregard apostrophe char variations between dj versions (#64305)
tests/auth_fc: unset local no_proxy env variable (#64305)
tests: handle varying displayed role fields row order (#64305)
Jenkinsfile: run nightly build with django3.2 too (#64305)
Historique
Mis à jour par Paul Marillonnet il y a environ 2 ans
- Lié à Project management #64274: montée de version django (→ 3.2 LTS) ajouté
Mis à jour par Paul Marillonnet il y a environ 2 ans
- Statut changé de Nouveau à En cours
C’était bloqué par #64309.
Mis à jour par Paul Marillonnet il y a environ 2 ans
Y a-t-il une contrindication à charger la 1.34 de mellon sur pypi ?
J’ai tapé un lien vers le tarball de mellon upstream dans le tox.ini d’authentic sur la branche ("visible ici": https://git.entrouvert.org/authentic.git/commit/?h=wip/64305-dj32&id=fa9fe7da8b6fd7774c43126ad387c0979f8a9f81) mais c’est encore la 1.28 de pypi, en cache, qui est utilisée dans le build.
Mis à jour par Serghei Mihai il y a environ 2 ans
Paul Marillonnet a écrit :
Y a-t-il une contrindication à charger la 1.34 de mellon sur pypi ?
Je n'en vois pas.
La procédure d'upload est sur https://dev.entrouvert.org/projects/prod-eo/wiki/HowDoWeDoPythonPackaging
Mis à jour par Paul Marillonnet il y a environ 2 ans
Serghei Mihai a écrit :
Je n'en vois pas.
La procédure d'upload est sur https://dev.entrouvert.org/projects/prod-eo/wiki/HowDoWeDoPythonPackaging
Merci, c’est fait.
Mis à jour par Paul Marillonnet il y a environ 2 ans
On dirait que la logique de chargement des settings a changé, de toute évidence django 3 n’aime pas qu’on importe directement des balises de gabarit gadjo dans le settings.py d’authentic.
Traceback (most recent call last): File "/tmp/tox-paul/authentic/authentic-py3-dj32-drf312-djtables211/lib/python3.10/site-packages/pytest_django/plugin.py", line 179, in _handle_import_error yield File "/tmp/tox-paul/authentic/authentic-py3-dj32-drf312-djtables211/lib/python3.10/site-packages/pytest_django/plugin.py", line 351, in pytest_load_initial_conftests dj_settings.DATABASES File "/tmp/tox-paul/authentic/authentic-py3-dj32-drf312-djtables211/lib/python3.10/site-packages/django/conf/__init__.py", line 87, in __getattr__ self._setup(name) File "/tmp/tox-paul/authentic/authentic-py3-dj32-drf312-djtables211/lib/python3.10/site-packages/django/conf/__init__.py", line 74, in _setup self._wrapped = Settings(settings_module) File "/tmp/tox-paul/authentic/authentic-py3-dj32-drf312-djtables211/lib/python3.10/site-packages/django/conf/__init__.py", line 183, in __init__ mod = importlib.import_module(self.SETTINGS_MODULE) […] File "/home/paul/src/authentic/src/authentic2/settings.py", line 23, in <module> from gadjo.templatetags.gadjo import xstatic ModuleNotFoundError: No module named 'gadjo'Peut-être un changement, au passage à la version 3 de django, dans la classe LazySettings de django.conf qui m’échappe ? Je regarde.
Mis à jour par Paul Marillonnet il y a environ 2 ans
Bon, c’est la copie locale de select2 qui ne devrait pas avoir lieu au moment du chargement des settings. J’ai viré cela temporairement et trouverai un endroit plus propice pour faire cette copie.
Mis à jour par Paul Marillonnet il y a environ 2 ans
J’ai l’impression que les vrais ennuis commencent, django-tables2 encore une fois :
/tmp/tox-paul/authentic/authentic-py3-dj32-drf312-djtables241/lib/python3.10/site-packages/django_tables2/views.py:146: in get_context_data table = self.get_table(**self.get_table_kwargs()) […] /usr/lib/python3.10/copy.py:231: in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x = <unlocked _thread.RLock object owner=0 count=0 at 0x7fb4db0eeb40> memo = {140414737296192: [['ou'], ['name', 'slug', 'ou', 'member_count'], {}, <django.db.models.sql.query.Query object at 0x7...ytesIO object at 0x7fb4da92d7b0>, 140414737378240: <authentic2.manager.tables.RoleTable object at 0x7fb4da903ee0>, ...} _nil = [] def deepcopy(x, memo=None, _nil=[]): # […] if copier is not None: y = copier(x, memo) else: if issubclass(cls, type): y = _deepcopy_atomic(x, memo) else: copier = getattr(x, "__deepcopy__", None) if copier is not None: y = copier(memo) else: reductor = dispatch_table.get(cls) if reductor: rv = reductor(x) else: reductor = getattr(x, "__reduce_ex__", None) if reductor is not None: > rv = reductor(4) E TypeError: cannot pickle '_thread.RLock' object /usr/lib/python3.10/copy.py:161: TypeError
Erreur pas très inspirante, je vais dérouler à coups de pdb.
Mis à jour par Paul Marillonnet il y a presque 2 ans
- Statut changé de En cours à Solution proposée
- Patch proposed changé de Non à Oui
Avec une durée de build Jenkins qui augmente, mais pas trop le choix ici, il faut tester avec django 2 et 3.
Solution proposée dans la branche, 23 commits et c’est rebasé sur #64247 qu’on peut relire au passage ou bien que je virerai si on me valide cette branche-ci d’abord.
Mis à jour par Frédéric Péters il y a presque 2 ans
Avec une durée de build Jenkins qui augmente
Ma perspective ailleurs ça a été de laisser le commit qui ajoute la validation django3 dans la branche, et quand on approchera de la possibilité concrète de montée de version (= passés à bullseye), on pourra sur un court temps réintroduire.
Mis à jour par Paul Marillonnet il y a presque 2 ans
Frédéric Péters a écrit :
Ma perspective ailleurs ça a été de laisser le commit qui ajoute la validation django3 dans la branche, et quand on approchera de la possibilité concrète de montée de version (= passés à bullseye), on pourra sur un court temps réintroduire.
Je ne me souviens plus si on a une échéance pour la migration à bullseye. J’ai peur que sans cible django3 en intégration continue, et avec un délai d’ici la migration suffisamment long, on se retrouve à faire une seconde fois ce boulot, non ?
Mis à jour par Frédéric Péters il y a presque 2 ans
On n'a pas d'échéance notée, ça manque mais ça ne doit pas tarder.
Mis à jour par Paul Marillonnet il y a presque 2 ans
Frédéric Péters a écrit :
On n'a pas d'échéance notée, ça manque mais ça ne doit pas tarder.
Ok, je note pour moi même et pour le relecteur ici qu’on retirera la cible django3 avant de pousser.
Mis à jour par Benjamin Dauvergne il y a presque 2 ans
- Assigné à mis à Paul Marillonnet
Relecture un peu lente mais j'ai passé la fin de l'aprem à essayer de faire un paquet python3-lasso pour unstable/python 3.10.
- tox: test with bullseye's django3 and matching dependency versions (#64305) : pycryptodomex est déjà déclaré dans setup.py, pas besoin de l'ajouter ici
- tox: ldaptools version compatible with openldap matching dj3 in debian (#64305) : je ne comprends pas bien le lien entre dj3 et ldaptools, si c'est par rapport à openldap 2.5 alors autant frocer 0.24 pour tout le monde
- saml: discard deprecated force_text in saml2utils : force_str inutile
- settings: hard-code xstatic uris instead of gadjo templatetag reliance (#64305) : ouaip on peut pas faire mieux je pense
- api: test drf tz awareness errors in serializer datetimefield filters (#64305) : ça mériterait un commentaire
- a2_rbac: handle Permission.__repr__ variations (#64305) : faut corriger le repr pour ne pas uitliser le repr de ContentType qui a effectivement changé
- django3: cookie content is not cleartext anymore : on va laisser comme ça mais on perd de la précision, je me demande si il n'y a pas un moyen simple de lire les messages décodés ou au pire avoir une fonctione d'aide pour les différents assert
- widgets: override select2's ns management with a2's url routing : ça mériterait un commentaire
- widgets: adapt ModelSelect2Mixin.filter_queryset prototype (#64305) : un peu tarabiscoté je suis d'avis de faire deux fonctions une simple adaptée au code récent de django-select2 une '_old' et de dispatcher selon la version de django-select2
- tests: handle varying displayed role fields row order : ça me parait étrange que l'ordre ait changé, il n'y a pas d'ordre par défaut ?
Mis à jour par Benjamin Dauvergne il y a presque 2 ans
Encore pas mal de ugettext_lazy (warnings) :
src/authentic2/apps/journal/app.py:24 /home/bdauvergne/wd/eo/authentic/src/authentic2/apps/journal/app.py:24: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). verbose_name = _('Journal') src/authentic2/validators.py:112 /home/bdauvergne/wd/eo/authentic/src/authentic2/validators.py:112: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). message = _('Null characters are not allowed.') src/authentic2/a2_rbac/models.py:52 /home/bdauvergne/wd/eo/authentic/src/authentic2/a2_rbac/models.py:52: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). (RESET_LINK_POLICY, _('Send reset link')), src/authentic2/models.py:51 /home/bdauvergne/wd/eo/authentic/src/authentic2/models.py:51: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_('user'), on_delete=models.CASCADE) src/authentic2/attribute_kinds.py:62 /home/bdauvergne/wd/eo/authentic/src/authentic2/attribute_kinds.py:62: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). help_text = _('Format: yyyy-mm-dd') src/authentic2/custom_user/models.py:149 /home/bdauvergne/wd/eo/authentic/src/authentic2/custom_user/models.py:149: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). _('uuid'), max_length=32, default=utils_misc.get_hex_uuid, editable=False, unique=True src/authentic2_auth_oidc/models.py:48 /home/bdauvergne/wd/eo/authentic/src/authentic2_auth_oidc/models.py:48: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). (STRATEGY_CREATE, _('create if standard account matching failed')), src/authentic2_auth_fc/models.py:84 /home/bdauvergne/wd/eo/authentic/src/authentic2_auth_fc/models.py:84: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). created = models.DateTimeField(verbose_name=_('created'), auto_now_add=True) src/authentic2_idp_cas/models.py:35 /home/bdauvergne/wd/eo/authentic/src/authentic2_idp_cas/models.py:35: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). urls = models.TextField(verbose_name=_('urls')) src/authentic2_idp_oidc/models.py:65 /home/bdauvergne/wd/eo/authentic/src/authentic2_idp_oidc/models.py:65: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). (POLICY_UUID, _('uuid')), src/authentic2/saml/app_settings.py:32 /home/bdauvergne/wd/eo/authentic/src/authentic2/saml/app_settings.py:32: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). choices = ((EXPLICIT, _('explicit')), (IMPLICIT, _('implicit'))) src/authentic2/saml/models.py:103 /home/bdauvergne/wd/eo/authentic/src/authentic2/saml/models.py:103: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). ('meta', _('Use the default from the metadata file')), src/authentic2/saml/models.py:165 /home/bdauvergne/wd/eo/authentic/src/authentic2/saml/models.py:165: RemovedInDjango40Warning: force_text() is deprecated in favor of force_str(). NAME_ID_FORMATS_CHOICES = [(force_text(x), y['caption']) for x, y in NAME_ID_FORMATS.items()] src/authentic2/apps/journal/models.py:179 /home/bdauvergne/wd/eo/authentic/src/authentic2/apps/journal/models.py:179: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). name = models.SlugField(verbose_name=_('name'), max_length=256, unique=True) src/authentic2/forms/profile.py:31 /home/bdauvergne/wd/eo/authentic/src/authentic2/forms/profile.py:31: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). email = ValidatedEmailField(label=_('New email')) src/authentic2/admin.py:43 /home/bdauvergne/wd/eo/authentic/src/authentic2/admin.py:43: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). cleanup_action.short_description = _('Cleanup expired objects') src/authentic2_idp_cas/admin.py:101 /home/bdauvergne/wd/eo/authentic/src/authentic2_idp_cas/admin.py:101: RemovedInDjango40Warning: django.utils.translation.ugettext() is deprecated in favor of django.utils.translation.gettext(). _('Logout'), src/authentic2/saml/forms.py:33 /home/bdauvergne/wd/eo/authentic/src/authentic2/saml/forms.py:33: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). name = forms.CharField(max_length=140, label=_('Name')) src/authentic2/saml/admin.py:81 /home/bdauvergne/wd/eo/authentic/src/authentic2/saml/admin.py:81: RemovedInDjango40Warning: django.utils.translation.ugettext() is deprecated in favor of django.utils.translation.gettext(). metadata = forms.CharField(required=True, widget=TextAndFileWidget, label=_('Metadata')) src/authentic2/a2_rbac/admin.py:97 /home/bdauvergne/wd/eo/authentic/src/authentic2/a2_rbac/admin.py:97: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). name.short_description = _('name') src/authentic2/api_mixins.py:27 /home/bdauvergne/wd/eo/authentic/src/authentic2/api_mixins.py:27: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). default_detail = _('Cannot process request because of conflicting resources.') src/authentic2/journal_event_types.py:140 /home/bdauvergne/wd/eo/authentic/src/authentic2/journal_event_types.py:140: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). label = _('login') src/authentic2/api_views.py:1320 /home/bdauvergne/wd/eo/authentic/src/authentic2/api_views.py:1320: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). TIME_INTERVAL_CHOICES = [('day', _('Day')), ('month', _('Month')), ('year', _('Year'))] src/authentic2/manager/journal_event_types.py:35 /home/bdauvergne/wd/eo/authentic/src/authentic2/manager/journal_event_types.py:35: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy(). label = _('user creation')
Mis à jour par Paul Marillonnet il y a presque 2 ans
- Statut changé de Solution proposée à En cours
Mis à jour par Paul Marillonnet il y a presque 2 ans
- Statut changé de En cours à Solution proposée
- Assigné à
Paul Marillonnetsupprimé
Benjamin Dauvergne a écrit :
- tox: test with bullseye's django3 and matching dependency versions (#64305) : pycryptodomex est déjà déclaré dans setup.py, pas besoin de l'ajouter ici
Ok, je ne sais plus ce que j’avais fumé…
- tox: ldaptools version compatible with openldap matching dj3 in debian (#64305) : je ne comprends pas bien le lien entre dj3 et ldaptools, si c'est par rapport à openldap 2.5 alors autant frocer 0.24 pour tout le monde
Très bien.
- saml: discard deprecated force_text in saml2utils : force_str inutile
En supprimant ce force_str
je me mange une erreur, il y a certains cas où c’est des bytes, je laisse donc ce commit inchangé.
Ok, commentaire ajouté.
- a2_rbac: handle Permission.__repr__ variations (#64305) : faut corriger le repr pour ne pas uitliser le repr de ContentType qui a effectivement changé
Oui c’est dans le PermissionAbstractBase que ça se joue, c’est corrigé avec adaptation du message de commit en conséquence.
- django3: cookie content is not cleartext anymore : on va laisser comme ça mais on perd de la précision, je me demande si il n'y a pas un moyen simple de lire les messages décodés ou au pire avoir une fonctione d'aide pour les différents assert
Oui, j’ai creusé un peu l’affaire en comparant cette partie du code pour django 2.2 et django 3.2, et j’ai ajouté une fonction tests.utils.decode_cookie
pour tâcher d’accéder au contenu de app.cookie
dans les tests même lorsque ce contenu n’est pas du texte en clair. Par contre pour les dernières lignes modifiées de ce patch j’avoue avoir eu la flemme de parser les entêtes reçus dans la réponse pour tenter d’y appliquer cette même fonction decode_cookie
sur les lignes "Set-Cookie: […]". Si c’est bloquant alors je tenterai un truc après avoir maugréé un peu :)
- widgets: override select2's ns management with a2's url routing : ça mériterait un commentaire
Ok, commentaire ajouté.
- widgets: adapt ModelSelect2Mixin.filter_queryset prototype (#64305) : un peu tarabiscoté je suis d'avis de faire deux fonctions une simple adaptée au code récent de django-select2 une '_old' et de dispatcher selon la version de django-select2
Ok, redispatch sur une méthode _legacy_filter_queryset
. Par contre je ne suis pas allé éplucher un à un le code des versions successives de django-select2 pour voir dans quelle mesure le prototype change, ça me va de rester sur if isinstance(request, str):
qui est l’indicateur le plus rapide que les arguments positionnels sont ceux de la méthode legacy, avec un commentaire expliquant la situation. Pareil que plus haut : si c’est bloquant alors je fais un test plus explicite après avoir inspecté un peu les versions successives de ce bout de code dans django select2.
- tests: handle varying displayed role fields row order : ça me parait étrange que l'ordre ait changé, il n'y a pas d'ordre par défaut ?
Je suis allé voir un peu cette partie de django-tables2, il y a des mixins partout c’est un peu rude. Si c’est problématique que l’ordre des objets exportés change (perso et assez indépendamment de mon découragement à la lecture de ce code, ça ne me choque pas que l’ordre change), je creuserai, sinon ça me va de laisser les set()
plutôt que les list()
dans les tests.
Encore pas mal de ugettext_lazy (warnings) :
J’ai corrigé tout ceux que tu listes ici. Il y en a encore plein d’autres, et d’autres avertissements RemovedInDjango40Warning
pas lié à l’i18n, j’avoue que ça me va si on traite cela dans un second temps dans #64528, "diviser pour mieux fermer du ticket" et cætera :)
Mis à jour par Paul Marillonnet il y a presque 2 ans
- Assigné à mis à Paul Marillonnet
(L’assignation a sauté, les mystères de redmine.)
Mis à jour par Benjamin Dauvergne il y a presque 2 ans
Paul Marillonnet a écrit :
- saml: discard deprecated force_text in saml2utils : force_str inutile
En supprimant ce
force_str
je me mange une erreur, il y a certains cas où c’est des bytes, je laisse donc ce commit inchangé.
Ok c'est l'inverse, c'est toujours un bytes en UTF-8, donc .decode()
.
- widgets: adapt ModelSelect2Mixin.filter_queryset prototype (#64305) : un peu tarabiscoté je suis d'avis de faire deux fonctions une simple adaptée au code récent de django-select2 une '_old' et de dispatcher selon la version de django-select2
Ok, redispatch sur une méthode
_legacy_filter_queryset
. Par contre je ne suis pas allé éplucher un à un le code des versions successives de django-select2 pour voir dans quelle mesure le prototype change, ça me va de rester surif isinstance(request, str):
qui est l’indicateur le plus rapide que les arguments positionnels sont ceux de la méthode legacy, avec un commentaire expliquant la situation. Pareil que plus haut : si c’est bloquant alors je fais un test plus explicite après avoir inspecté un peu les versions successives de ce bout de code dans django select2.
La signature n'a changé qu'une fois, à partir de la 7.x. Mon souci c'est d'avoir un marqueur clair pour savoir quand on peut retirer du code sans faire d'archéologie, donc ici si on a un truc comme :
# deprecate legacy code when django x.x not supported anymore if django_select2.version < (7,): # old code else: # new code
ça me va que ce soit fait avec str() plutôt que de comparer des versions mais faut un commentaire qui dit à quelle version ça correspond et expliquer quand on pourra s'en passer.
- tests: handle varying displayed role fields row order : ça me parait étrange que l'ordre ait changé, il n'y a pas d'ordre par défaut ?
Je suis allé voir un peu cette partie de django-tables2, il y a des mixins partout c’est un peu rude. Si c’est problématique que l’ordre des objets exportés change (perso et assez indépendamment de mon découragement à la lecture de ce code, ça ne me choque pas que l’ordre change), je creuserai, sinon ça me va de laisser les
set()
plutôt que leslist()
dans les tests.
Je préférerai qu'on creuse, l'ordre dépend du queryset, pas du tout de django-tables2, mais l'ordre a changé, donc soit on a pas d'ordre par défaut il faudrait en mettre un soit on a cassé un truc, mais ça peut être fait dans un autre ticket.
Encore pas mal de ugettext_lazy (warnings) :
J’ai corrigé tout ceux que tu listes ici. Il y en a encore plein d’autres, et d’autres avertissements
RemovedInDjango40Warning
pas lié à l’i18n, j’avoue que ça me va si on traite cela dans un second temps dans #64528, "diviser pour mieux fermer du ticket" et cætera :)
Ok.
Je valide modulo mes 2 première remarques.
Mis à jour par Paul Marillonnet il y a presque 2 ans
Benjamin Dauvergne a écrit :
Je valide modulo mes 2 première remarques.
Ok, tout pris en compte dans la branche. Et j’ai créé #65159 pour cette affaire d’ordre d’apparition des rôles qui change avec django 3.
Jenkins teste dans cette branche à la fois en django 2 et 3, ce qui double le temps de build. Est-ce qu’on est d’accord que je retirerai la cible Jenkins django 3 au moment de pousser ?
Mis à jour par Paul Marillonnet il y a presque 2 ans
- Lié à Development #64528: traiter les avertissements de dépréciation django 4 ajouté
Mis à jour par Paul Marillonnet il y a presque 2 ans
- Lié à Development #65159: manager : le passage à django 3.2 fait varier l’ordre d’apparition des rôles dans les tableaux ajouté
Mis à jour par Benjamin Dauvergne il y a presque 2 ans
Paul Marillonnet a écrit :
Jenkins teste dans cette branche à la fois en django 2 et 3, ce qui double le temps de build. Est-ce qu’on est d’accord que je retirerai la cible Jenkins django 3 au moment de pousser ?
Oui mais tu peux l'ajouter dans le Jenkinsfile dans la partie 'TimerTriggerCause' ce sont les builds lents qui ont lieu la nuit, ça nous informera si on s'éloigne de la compatibilité 3.2.
Mis à jour par Paul Marillonnet il y a presque 2 ans
Benjamin Dauvergne a écrit :
Oui mais tu peux l'ajouter dans le Jenkinsfile dans la partie 'TimerTriggerCause' ce sont les builds lents qui ont lieu la nuit, ça nous informera si on s'éloigne de la compatibilité 3.2.
Ok très bien, branche à jour, si c’est ok pour toi je pousserai vendredi après avoir retiré l’environnement django 3 de la liste [tox:jenkins]. Vu qu’il est dans la liste [tox] il sera pris dans le build lent nocturne, si ma lecture du Jenkinsfile est bonne.
Mis à jour par Benjamin Dauvergne il y a presque 2 ans
- Statut changé de Solution proposée à Résolu (à déployer)
Paul Marillonnet a écrit :
Benjamin Dauvergne a écrit :
Oui mais tu peux l'ajouter dans le Jenkinsfile dans la partie 'TimerTriggerCause' ce sont les builds lents qui ont lieu la nuit, ça nous informera si on s'éloigne de la compatibilité 3.2.
Ok très bien, branche à jour, si c’est ok pour toi je pousserai vendredi après avoir retiré l’environnement django 3 de la liste [tox:jenkins]. Vu qu’il est dans la liste [tox] il sera pris dans le build lent nocturne, si ma lecture du Jenkinsfile est bonne.
Non faut lister les trucs explicitement. Comme je fonctionne : dans [tox] les trucs quand on développe, pas pylint pas update-locales, c'est chiant; dans [tox:jenkins] les trucs pour jenkins, donc tout sauf les trucs lents et dans Jenkinsfile la liste des trucs lent, y a déjà d'ailleurs un bout de django312 pour les api visiblement :
if (env.JOB_NAME == 'authentic' && env.GIT_BRANCH == 'origin/main') { sh """ PGPORT=`python3 -c 'import struct; import socket; s=socket.socket(); s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack("ii", 1, 0)); s.bind(("", 0)); print(s.getsockname()[1]); s.close()'` pg_virtualenv -o fsync=off ${env.TMPDIR}/venv/bin/tox -v -e authentic-py3-dj22-drf312 -- tests/test_api.py""" }
introduit par toi
commit 31fa1dbf4612933733c850823d264df43d2f7c91 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Thu Dec 16 11:03:26 2021 +0100 jenkins: run drf3.12 env on main branch nightly build (#59601)
T'as juste à enlever tests/test_api.py
je pense.
Mis à jour par Benjamin Dauvergne il y a presque 2 ans
- Statut changé de Résolu (à déployer) à Solution validée
Mis à jour par Paul Marillonnet il y a presque 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 243531b3176c2b4795612027a8d4b428691e5f1a Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Fri May 13 09:53:31 2022 +0200 Jenkinsfile: run nightly build with django3.2 too (#64305) commit 43fe2fc307f05d0802c47bc70617d60223eca911 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Mon Apr 25 14:40:00 2022 +0200 tests: handle varying displayed role fields row order (#64305) commit b0132b0a15c2c97c01cfa10725d8e6dab0748327 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Mon Apr 25 14:22:00 2022 +0200 tests/auth_fc: unset local no_proxy env variable (#64305) commit 8635dec7fa90848e8652c9fa80142ff9dac5027b Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Mon Apr 25 12:17:49 2022 +0200 tests: disregard apostrophe char variations between dj versions (#64305) commit 66e8d63388e5ed1ab920802dabb04958508224d7 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Mon Apr 25 12:06:47 2022 +0200 widgets: adapt ModelSelect2Mixin.filter_queryset prototype (#64305) commit 07411e194be60661bc31f79f6b795dd6933d6a82 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Mon Apr 25 11:53:56 2022 +0200 widgets: override select2's ns management with a2's url routing (#64305) commit 7cedc9856771898ab7d006d5048d6e97b76da095 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Mon Apr 25 11:09:14 2022 +0200 django3: try to read signed cookie content in tests (#64305) commit 9b0ac491182ce0d0cba87c351fa6f1f5d24c7fd3 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Fri Apr 22 12:29:17 2022 +0200 django_rbac: fix ContentType.__str__ variations (#64305) commit 503a983320b56520c4d775a612a7b8fc0cefe86c Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Thu Apr 21 18:25:14 2022 +0200 api: test drf tz awareness errors in serializer datetimefield filters (#64305) commit 17eb53dc243f7dac0c5f4503c59bbff74c2a933b Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Thu Apr 21 17:48:51 2022 +0200 templates: remove deprecated admin_static tag library (#64305) commit a93af50cd321a35df499fc0f21a7a7e50372f6f3 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Thu Apr 21 17:46:24 2022 +0200 manager: remove unnecessary table deepcopy (#64305) commit b93c667c76c140e1327ea5f7128d5969f3e0c08a Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Thu Apr 21 16:43:34 2022 +0200 django3: fix FieldDoesNotExist import (#64305) commit 27579fdd2107ef95e0354260f12951d34bfa64d7 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Thu Apr 21 16:41:33 2022 +0200 drop deprecated django curry in favor of functools.partialmethod (#64305) commit c101c0a746d2ae2de6c801af55ffd6be595528b6 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Thu Apr 21 16:08:57 2022 +0200 define a _user_get_all_permissions util when necessary (#64305) commit 5d3176648a4ffc516982aa4a1e1e1c22fb7178b7 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Thu Apr 21 14:42:43 2022 +0200 settings: hard-code xstatic uris instead of gadjo templatetag reliance (#64305) commit 8166c6d9efaa4e23bd0d486332d27d19cdec54a4 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Thu Apr 21 12:31:33 2022 +0200 saml: discard deprecated force_text in saml2utils (#64305) commit 2c58c32a1aee4d092c6eb130b068c6c334f96a65 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Thu Apr 21 12:28:51 2022 +0200 discard deprecated unicode-aware i18n utils (#64305) commit 805436abf10e59972ff48be114608cd982a0c081 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Thu Apr 21 12:27:36 2022 +0200 plugins: discard deprecated django.conf.urls.url (#64305) commit 3d7fe3e19b0e2577087c22a1c90e53f5683dc78d Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Thu Apr 21 16:50:05 2022 +0200 debian: allow dependencies to be django-3 compliant (#64305) commit a26f30e3df4695eb300f54207db0fcb939407476 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Tue Apr 26 10:36:00 2022 +0200 tox: add locale to makemessages command (#64305) commit 1c442d7be943649f867d244f520c957000949f79 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Fri Apr 22 12:44:02 2022 +0200 tox: ldaptools version compatible with openldap matching dj3 in debian (#64305) commit 0d0f89345dd17fa372cea3dc66e687f1fbbee18a Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Mon Apr 25 15:47:13 2022 +0200 tox: test with bullseye's django3 and matching dependency versions (#64305) commit 7a9fb6938c8dd8855ce2e363b6f2dbadd2e035e9 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Mon Apr 25 15:46:34 2022 +0200 setup: provide a bullseye's django3 compliant config (#64305)
Mis à jour par Transition automatique il y a presque 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
setup: provide a bullseye's django3 compliant config (#64305)