Redmine Entr’ouvert: Demandeshttps://dev.entrouvert.org/https://dev.entrouvert.org/favicon.ico?15861920342024-03-27T14:54:46ZRedmine Entr’ouvert
Redmine Authentic 2 - Development #88789 (Nouveau): auth_fc : faire que le paramétrage par défaut soit le...https://dev.entrouvert.org/issues/887892024-03-27T14:54:46ZPaul Marillonnet
<p>Actuellement, le mapping par défaut<br /><pre>
'USER_INFO_MAPPINGS',
{
'last_name': {
'ref': 'family_name',
'verified': True,
},
'first_name': {
'ref': 'given_name',
'verified': True,
},
'email': {
'ref': 'email',
'if-empty': True,
'tag': 'email',
},
'email_verified': {
'ref': 'email',
'translation': 'notempty',
'if-tag': 'email',
},
'title': {
'ref': 'gender',
'translation': 'simple',
'translation_simple': {
'female': pgettext_lazy('title', 'Mrs'),
'male': pgettext_lazy('title', 'Mr'),
},
'verified': True,
},
},
</pre><br />où chaque occurrence de <code>verified</code> implique que le champ n’est pas modifiable par l’usager.<br />Il y a bien des clients qui en effet insistent pour que une identité issue de FC ne soit pas éditable dans Publik, mais je pense qu’il faudrait que ça reste au cas par cas, et que le cas général soit le non-verrouillage de ces attributs.</p> Passerelle - Development #88761 (Nouveau): Partitionner la table ResourceLoghttps://dev.entrouvert.org/issues/887612024-03-27T10:58:23ZPierre Ducroquet
<p>Cette table contient des données historisées, et qui sont régulièrement purgées.<br />L'autovacuum est supposé aider ce genre de situation, mais avec le modèle en multi-tenant, il est nécessaire de ne pas compter que sur lui et de l'assister un peu (la table se retrouve avec un bloat significatif).<br />De plus, même avec l'autovacuum, de nombreuses entrées invalides finissent par augmenter la taille de l'index.<br />Je voudrais donc que l'on change la table base_resourcelog afin qu'elle soit partitionnée.<br />J'envisage d'avoir une partition par semaine, avec un cron côté passerelle qui crée 2 partitions par avance, et supprime les anciennes partitions quand elles sont vides.<br />Le partitionnement PostgreSQL est transparent pour Django, mais il existe dans django-postgres-extra tout un ensemble d'éléments pour automatiser le fonctionnement. Cf. <a class="external" href="https://django-postgres-extra.readthedocs.io/en/master/table_partitioning.html">https://django-postgres-extra.readthedocs.io/en/master/table_partitioning.html</a><br />Est-ce-que l'on peut utiliser ces outils dans passerelle, ou est-ce-que je vois pour mettre en place manuellement le partitionnement ?</p> w.c.s. - Development #88675 (Nouveau): Permettre que le filtre "Statuts à afficher" soit en haut ...https://dev.entrouvert.org/issues/886752024-03-26T10:46:11ZEmmanuel Cazenaveecazenave@entrouvert.com
<p>Sur une vue de traitement ce filtre est tout en bas, c'est le dernier filtrer présenté.</p>
<p>On peut avoir envie qu'il apparaisse en premier, en haut de la pile.</p> Intégrations graphiques Publik - Support #88644 (Nouveau): theme dsfr : contraste input et couleu...https://dev.entrouvert.org/issues/886442024-03-25T14:57:58ZThomas Jundtjund@entrouvert.com
<p>extrait du rapport d'audit a11Y du mineduc :</p>
<blockquote>
<p>Le texte (placeholder) dans le champ de formulaire n'est pas suffisamment contrasté avec l'arrière-plan. Son ratio de contraste est actuellement de 3,5:1 au lieu de 4:1 au moins</p>
</blockquote>
<p>Après vérification sur le design système de référence, l'arrière plan d'un input doit être `#eee` et la couleur du placeholder `#666`<br /><a class="external" href="https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/barre-de-recherche">https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/barre-de-recherche</a></p>
<p>Il manque également une bordure au champ de saisi de la cellule code de suivi :</p>
<blockquote>
<p>Les bordures du champ de formulaire ne sont pas suffisamment contrastées avec l'arrière-plan. Leur ratio de contraste est actuellement de 1,1:1 au lieu de 3:5 au moins</p>
</blockquote> Intégrations graphiques Publik - Support #88642 (Nouveau): theme dsfr: header, chevauchement ti...https://dev.entrouvert.org/issues/886422024-03-25T14:29:47ZThomas Jundtjund@entrouvert.com
<p>Extrait du rapport a11y pour mineduc</p>
<blockquote>
<p>Lorsque la taille des caractères est augmentée à 200%, les liens "Connexion" / "Inscription" chevauchent l'adresse URL</p>
</blockquote>
<p>À noter que le chevauchement ne se produit que si l'option "zoom texte seulement" est activé dans les paramètres du navigateur et que cette option n'est possible qu'avec firefox.</p> Passerelle - Bug #88594 (Nouveau): CalDAV l'ajout de UNTIL à RRULE provoque un bug dans EGWhttps://dev.entrouvert.org/issues/885942024-03-25T09:04:55ZYann Weber
<p>Même problème que <a class="issue tracker-1 status-4 priority-4 priority-default closed" title="Bug: CalDAV problèmes lors de la modification du champ RRULE (Solution déployée)" href="https://dev.entrouvert.org/issues/88417">#88417</a>.</p>
<p>Cependant, dans <a class="issue tracker-1 status-4 priority-4 priority-default closed" title="Bug: CalDAV problèmes lors de la modification du champ RRULE (Solution déployée)" href="https://dev.entrouvert.org/issues/88417">#88417</a> le problème avait été testé/détecté/résolu sur une "grosse" modification du <code>RRULE</code> (typiquement la modification du jour de récurrence <code>RRULE/BYDAY</code> couplé à l'ajout d'un champ <code>RRULE/UNTIL</code>).</p>
<p>Malheureusement, si <a class="issue tracker-1 status-4 priority-4 priority-default closed" title="Bug: CalDAV problèmes lors de la modification du champ RRULE (Solution déployée)" href="https://dev.entrouvert.org/issues/88417">#88417</a> résout bien le problème, il reste entier quand la seule modification d'un événement consiste en l'ajout du <code>RRULE/UNTIL</code> : c'est dommage c'est typiquement le cas d'usage qu'on a avec les jours off...</p> Publik Installation Développeur - Documentation #88420 (Nouveau): Mettre à jour la documentation ...https://dev.entrouvert.org/issues/884202024-03-20T16:51:33ZFrédéric Pétersfpeters@entrouvert.com
<blockquote>
<p>Pré-requis système</p>
<p>Debian bullseye (stable) ou bookworm (testing) : (...)</p>
</blockquote>
<p>Il y aurait à mettre à jour pour la situation actuelle (bookworm stable, trixie testing), notamment la commande initiale</p>
<pre>
sudo apt install git ansible make
</pre>
<p>serait à revoir, le paquet ansible n'existe plus dans trixie.</p>
<p>Une fois remplacé par ansible-core, ça échoue sur</p>
<pre>
16:55:15 ERROR! couldn't resolve module/action 'postgresql_user'. This often indicates a misspelling, missing collection, or incorrect module path.
</pre>
<p>(cf le build <a class="external" href="https://jenkins.entrouvert.org/job/gitea/job/publik-devinst/job/wip%252F78771-trixie/10/consoleFull">https://jenkins.entrouvert.org/job/gitea/job/publik-devinst/job/wip%252F78771-trixie/10/consoleFull</a> de la branche de <a class="issue tracker-2 status-2 priority-4 priority-default" title="Development: jenkins, retirer bullseye, ajouter trixie (En cours)" href="https://dev.entrouvert.org/issues/78771">#78771</a> qui ajoute le test sur trixie).</p> Passerelle - Development #88372 (Nouveau): connecteur proxy, ajouter la possibilité d'oauth2https://dev.entrouvert.org/issues/883722024-03-19T16:57:55ZFrédéric Pétersfpeters@entrouvert.com
<p>Avec a priori des paramètres oauth_token_url, oauth_username, oauth_password et oauth_scopes.</p>
<p>Ça pourrait venir après une factorisation du code qui existe dans une série de connecteurs (cf git grep grant_type.*client_credentials).</p> Combo - Development #88327 (Nouveau): filtre |has_role, fonctionner sur base du slughttps://dev.entrouvert.org/issues/883272024-03-19T09:52:00ZFrédéric Pétersfpeters@entrouvert.com
<p>Actuellement,</p>
<pre>
return user.groups.filter(name=groupname).exists()
</pre>
<p>il serait utile que le filtre fonctionne aussi sur base du slug.</p> Authentic 2 - Bug #88103 (Nouveau): Tests en erreur en localhttps://dev.entrouvert.org/issues/881032024-03-13T11:09:31ZYann Weber
<p>J'ai 4 tests qui échouent en local. Si je comprend bien, il s'agit de problèmes de tri et de comptage de requêtes SQL.</p>
<p>La machine ou les tests échouent est une debian unstable avec <code>psql (PostgreSQL) 16.2 (Debian 16.2-1)</code></p>
<pre>
FAILED tests/test_custom_user.py::test_fts_last_name - AssertionError: assert [('ROSSET', '...l', 0.0), ...] == [('ROSSET', '...l', 0.0), ...]
E AssertionError: assert [('ROSSET', '...l', 0.0), ...] == [('ROSSET', '...l', 0.0), ...]
E
E At index 1 diff: ('ROSSET', 'JEAN PIERRE', 0.0) != ('ROSSET', 'Jean-Claude', 0.0)
E Use -v to get more diff
tests/test_custom_user.py:188: AssertionError
</pre><br /><pre>
FAILED tests/test_role_manager.py::test_role_members_user_role_mixed_field_choices - AssertionError: assert ['Default org...al unit', ...] == ['Default org...al unit', ...]
E AssertionError: assert ['Default org...al unit', ...] == ['Default org...al unit', ...]
E
E At index 8 diff: 'OU1 - Roles - OU1' != 'OU1 - role_ou1'
E Use -v to get more diff
tests/test_role_manager.py:611: AssertionError
</pre><br /><pre>
FAILED tests/test_user_manager.py::test_user_table_num_queries - assert 21 == 23
E assert 21 == 23
E + where 21 = len([{'sql': 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM ...OM "a2_rbac_organizationalunit" WHERE
NOT "a2_rbac_organizationalunit"."show_username" LIMIT 1', 'time': '0.000'}, ...])
E + where [{'sql': 'SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM ...OM "a2_rbac_organizationalunit" WHERE NOT "a2
_rbac_organizationalunit"."show_username" LIMIT 1', 'time': '0.000'}, ...] = <django.test.utils.CaptureQueriesContext object at 0x7f7febe7df10>.captured_queries
tests/test_user_manager.py:581: AssertionError
</pre><br /><pre>
FAILED tests/test_role_manager.py::test_role_table_ordering - AssertionError: assert ['A role', 'B...le', 'É role'] == ['a role', 'A...le', 'Z role']
E AssertionError: assert ['A role', 'B...le', 'É role'] == ['a role', 'A...le', 'Z role']
E
E At index 0 diff: 'A role' != 'a role'
E Use -v to get more diff
tests/test_role_manager.py:738: AssertionError
</pre> Combo - Bug #88086 (Nouveau): delete d'une page: error (IntegrityError: update or delete on table...https://dev.entrouvert.org/issues/880862024-03-12T16:53:59ZSentry Io
<p><a class="external" href="https://sentry.entrouvert.org/entrouvert/publik/issues/122935/">https://sentry.entrouvert.org/entrouvert/publik/issues/122935/</a></p>
<pre>
ForeignKeyViolation: update or delete on table "data_page" violates foreign key constraint "search_indexedcell_page_id_2107e76e_fk_data_page_id" on table "search_indexedcell"
DETAIL: Key (id)=(168) is still referenced from table "search_indexedcell".
File "django/db/backends/base/base.py", line 242, in _commit
return self.connection.commit()
IntegrityError: update or delete on table "data_page" violates foreign key constraint "search_indexedcell_page_id_2107e76e_fk_data_page_id" on table "search_indexedcell"
DETAIL: Key (id)=(168) is still referenced from table "search_indexedcell".
(12 additional frame(s) were not displayed)
...
File "django/utils/asyncio.py", line 33, in inner
return func(*args, **kwargs)
File "django/db/backends/base/base.py", line 266, in commit
self._commit()
File "django/db/backends/base/base.py", line 241, in _commit
with self.wrap_database_errors:
File "django/db/utils.py", line 90, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "django/db/backends/base/base.py", line 242, in _commit
return self.connection.commit()
</pre> Publik - Development #88075 (Nouveau): avoir un déploiement sur un fuseau horaire différent du se...https://dev.entrouvert.org/issues/880752024-03-12T15:39:40ZThomas Noël
<p>Actuellement, au moins au niveau des application Django, le fuseau est défini dans le settings.TIME_ZONE</p>
<p>C'est celui qu'adoptent tous les tenants.</p>
<p>Poser un <code>{"TIME_ZONE": "America/Los_Angeles"}</code> dans le settings.json ne change rien, le tenant reste sur le TIME_ZONE général.</p>
<p>A voir comment on pourrait gérer cela (et voir aussi dans w.c.s.).</p> Publik Installation Développeur - Development #88054 (Nouveau): ajouter une option pour compiler ...https://dev.entrouvert.org/issues/880542024-03-12T11:17:15ZPaul Marillonnet
<p>Discuté hier de vive voix au bureau, pour éviter les confusions entre manipulations BO en local devints VS manip’ sur une instance distante de recette voire de production.</p>
<p>Concrètement, je pense qu’on pourrait se contenter de rajouter une tâche d’application d’un patch sur gadjo avant de compiler la scss et les icônes, pour changer les nuances de bleu dans la scss (<a class="external" href="https://git.entrouvert.org/entrouvert/gadjo/src/branch/main/gadjo/static/css/_colors.scss#L3">https://git.entrouvert.org/entrouvert/gadjo/src/branch/main/gadjo/static/css/_colors.scss#L3</a>) et la couleur primaire des icônes codée en dur dans le setup.py (<a class="external" href="https://git.entrouvert.org/entrouvert/gadjo/src/branch/main/setup.py#L145">https://git.entrouvert.org/entrouvert/gadjo/src/branch/main/setup.py#L145</a>).</p> Authentic 2 - Bug #88009 (Nouveau): L'envoi d'un lien pour se connecter à un usager qui essaye de...https://dev.entrouvert.org/issues/880092024-03-11T14:35:27ZValentin Deniaud
<p>Un compte <a class="email" href="mailto:hop@example.com">hop@example.com</a> sans collectivité, tentative d'inscription alors que le setting d'unicité global des courriels est vrai, <a class="email" href="mailto:hop@example.com">hop@example.com</a> reçoit alors un mail « Votre compte existe déjà » avec un bouton « Me connecter ».</p>
<p>Raté, au lieu de connecter l'usager ce lien l'emmène finir la création de son compte.</p> Combo - Development #87902 (Nouveau): cellule code de suivi : code de suivi non trouvé, afficher ...https://dev.entrouvert.org/issues/879022024-03-07T16:46:13ZThomas Noël
<p>Actuellement sur une cellule posée simplement en page d'accueil, quand un code de suivi n'est pas trouvé, on se retrouve sur cette gestion :</p>
<pre>
# extrait de combo/apps/wcs/views.py
...
if redirect_to_other_domain:
if '?' in next_url:
next_url += '&'
else:
next_url += '?'
next_url += 'unknown-tracking-code'
else:
messages.error(self.request, _('The tracking code could not been found.'))
return HttpResponseRedirect(next_url)
</pre>
<p>donc une simple redirection sur la page d'accueil avec un messages.error affiché, généralement, en haut de la page. Et, bogue d'UI : ce message d'erreur peut être loin de la cellule.</p>
<p>On note que dans le template HTML de la cellule on a la gestion d'un ?unknown-tracking-code dans l'URL :<br /><pre>
<script>
$(function() {
$('#_cell_url_{{ cell.id }}').val(window.location);
if (window.location.search.indexOf('unknown-tracking-code') != -1) {
$('#_cell_error_{{ cell.id }}').show();
}
});
</script>
</pre></p>
<p>Mais ça n'est activé (voir le code plus haut) que si le POST renvoie ailleurs (redirect_to_other_domain). Ne pourrait-on par l'activer globalement ? Pourquoi a-t-on fait ce choix ?</p>
<p>Si non, bêtement, un peu salement, détecter aussi dans le javascript la présence du message d'erreur dans un li.error (déclenché par le messages.error) et dans ce cas faire aussi le "show()"...?</p>