Projet

Général

Profil

Bug #69699

Vue de traitement, vues personnalisées 'user' et 'all' avec le même slug

Ajouté par Lauréline Guérin il y a plus d'un an. Mis à jour il y a plus d'un an.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
29 septembre 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Constaté sur #69681

Sur une vue de traitement, il existe une vue personnalisée s'appelant "Toutes", slug 'toutes', visible par tout le monde.
Mais un utilisateur a dupliqué cette vue, en lui mettant un scope 'user'. Le slug visible dans l'url est donc 'user-toutes'.

Cette vue perso user n'est pas accessible: lorsqu'on clique dessus, on active la vue 'toutes'; L'utilisateur ne peut pas supprimer sa vue 'user-toutes'.

Le code (#68324):

            view_slug = component
            if view_slug.startswith('user-'):
                view_slug = view_slug[5:]
            for view in self.get_custom_views([Contains('slug', [view_slug, component])]):
                return self.__class__(formdef=self.formdef, view=view)

Le select n'a pas d'ordering (voir la méthode get_custom_views). La vue perso 'toutes' doit sortir avant 'user-toutes', le slug match avec view_slug[5:], on active la vue 'toutes' au lieu de la vue 'user-toutes'.

Je n'ai pas reproduit en local (pg ne me trie pas les résultats de la même manière).


Fichiers


Demandes liées

Lié à w.c.s. - Development #68324: SQL: requête sur custom_views exécutée énormémentFermé22 août 2022

Actions

Révisions associées

Révision dfd2902c (diff)
Ajouté par Lauréline Guérin il y a plus d'un an

custom views: fix access to owner/any views with same slug (#69699)

Historique

#1

Mis à jour par Lauréline Guérin il y a plus d'un an

  • Lié à Development #68324: SQL: requête sur custom_views exécutée énormément ajouté
#3

Mis à jour par Lauréline Guérin il y a plus d'un an

  • Tracker changé de Development à Bug
#4

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

Côté DB :

ssh wcs.node1.hds.saas.entrouvert
sudo -u wcs wcs-manage shell -d <tenant>

# python shell

from wcs.sql import CustomView

In [21]: CustomView.get_by_slug('toutes')
Out[21]: <CustomView id:349>
In [22]: CustomView.get_by_slug('user-toutes')
None

Pour autant que je puisse en juger, il n'y a rien en base pour cette vue.

#5

Mis à jour par Lauréline Guérin il y a plus d'un an

Le slug en base c'est 'toutes', mais pour la vue user, avec le flag visibility='user'.
La méthode get_by_slug renvoie le premier résultat si plusieurs résultats sont trouvés.

#6

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

Ok, c'est clair merci !

#7

Mis à jour par Pierre Ducroquet il y a plus d'un an

Donc il faudrait faire un ORDER BY visibility = 'owner' DESC pour mettre en priorité les vues de l'utilisateur ?

#8

Mis à jour par Lauréline Guérin il y a plus d'un an

ou corriger le code :)

#9

Mis à jour par Lauréline Guérin il y a plus d'un an

Pierre Ducroquet a écrit :

Donc il faudrait faire un ORDER BY visibility = 'owner' DESC pour mettre en priorité les vues de l'utilisateur ?

Et ça ne serait pas suffisant: car alors on ne pourrait plus activer une vue en visibility 'any', avec le même slug qu'une vue 'owner'

#10

Mis à jour par Lauréline Guérin il y a plus d'un an

note: une vue avec visibility != owner ne peut pas avoir un slug commençant par user-:

    def ensure_slug(self):1
        ...
        if base_slug.startswith('user-'):
            # prevent a slug starting with user- as it's used in URLs
            base_slug = 'userx-' + base_slug[5:]

#11

Mis à jour par Lauréline Guérin il y a plus d'un an

  • Assigné à mis à Lauréline Guérin
#12

Mis à jour par Frédéric Péters il y a plus d'un an

  • Statut changé de Solution proposée à Solution validée
#13

Mis à jour par Lauréline Guérin il y a plus d'un an

  • Statut changé de Solution validée à Résolu (à déployer)
commit dfd2902c66134088cabef28934170eff91f16a6a
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Tue Oct 4 10:43:28 2022 +0200

    custom views: fix access to owner/any views with same slug (#69699)
#14

Mis à jour par Transition automatique il y a plus d'un an

  • Statut changé de Résolu (à déployer) à Solution déployée
#15

Mis à jour par Transition automatique il y a plus d'un an

Automatic expiration

Formats disponibles : Atom PDF