Development #44155
exposer les vues personnalisées globales des fiches en source de données
0%
Description
C'est une idée pas nouvelle mais je ne retombe pas sur un ticket existant.
On expose les fiches en source de données pour les champs listes/etc., mais c'est forcément toutes les fiches.
On voudrait pouvoir faire une vue personnalisée filtrant les fiches (par exemple on aurait des fiches "lieux cultures", et dedans un attribut "type de lieu", et on ferait une vue "salles de concert", ou on aurait des fiches "piscines", et on ferait une vue "piscines ouvertes" se basant sur le statut). Et pouvoir ensuite sélectionner cette vue comme source de données.
Fichiers
Demandes liées
Révisions associées
general: expose custom views as data sources (#44155)
Historique
Mis à jour par Pierre Cros il y a presque 4 ans
Pour moi ça remplacerait même #43328. J'ai l'impression que je peux faire la même chose avec ça.
Mis à jour par Stéphane Laget il y a presque 4 ans
La limite, pour remplacer les requêtes csv, c'est de ne pas pouvoir modifier la projection, des doublons et il faudrait également si possible pouvoir passer des variables (mais peut-être que c'est hors sujet)
Mis à jour par Frédéric Péters il y a presque 4 ans
C'est hors sujet, il y aura d'autres tickets.
Mis à jour par Lauréline Guérin il y a presque 4 ans
notes de l'EO day: ça ne remplace pas #43328
ajouter la possibilité de configurer une vue globale de fiche ou de demande en source de données (case à cocher pour exposer la vue en tant que source de données)
Mis à jour par Thomas Noël il y a presque 4 ans
Et pouvoir ensuite sélectionner cette vue comme source de données.
Je note ici qu'en plus des filtrages il serait pertinant que l'ordre de tri de la vue soit respecté dans la source de donnée correspondante.
Mis à jour par Thomas Noël il y a plus de 3 ans
Thomas Noël a écrit :
Et pouvoir ensuite sélectionner cette vue comme source de données.
Je note ici qu'en plus des filtrages il serait pertinant que l'ordre de tri de la vue soit respecté dans la source de donnée correspondante.
Et aussi, permettre de choisir quelle sera la colonne définissant "id", et quelle sera celle qui définira le "text". Sachant que pour le text, on pourrait rêver que ça soit un gabarit mais ce n'est pas évident (problème de performance).
Mis à jour par Thomas Noël il y a plus de 3 ans
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Fichier 0002-general-expose-custom-views-as-data-sources-44155.patch 0002-general-expose-custom-views-as-data-sources-44155.patch ajouté
- Fichier 0001-misc-move-carddef-data-source-support-to-carddef-mod.patch 0001-misc-move-carddef-data-source-support-to-carddef-mod.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
0001 qui déplace juste un peu de code, 0002 qui fait le travail.
Mis à jour par Thomas Noël il y a plus de 3 ans
0001 : ok
0002.
Sur ce passage :
@classmethod def get_as_data_source_options(cls): carddefs = {} for carddef in cls.select(lightweight=True, ignore_errors=True, order_by='name'): if not carddef.digest_template: continue data_source_id = 'carddef:%s' % carddef.url_name carddefs[carddef.id] = {'url_name': carddef.url_name, 'name': carddef.name} yield (data_source_id, carddef.name, data_source_id) clauses = [Equal('formdef_type', 'carddef'), Equal('visibility', 'datasource')] for custom_view in get_publisher().custom_view_class.select(clauses): carddef = carddefs.get(custom_view.formdef_id) data_source_id = 'carddef:%s:%s' % (carddef['url_name'], custom_view.slug) yield (data_source_id, '%s - %s' % (carddef['name'], custom_view.title), data_source_id)
il y aura un problème ici si le gabarit de résumé de la fiche n'existe pas : carddefs.get(custom_view.formdef_id) sera vide.
Je propose l'ajout d'un « if not carddef: continue » juste après le « carddef = carddefs.get(custom_view.formdef_id) »
Pour le reste ça me semble ok.
Deux remarques :- avec ça, j'ai eu l'impression que l'ajout systématique des fiches en tant que source de donnée perd tout intérêt (mais en fait non, car c'est utile de conserver la possibilité de lien vers "n'importe quelle fiche")
- il sera sans doute demandé d'avoir la possibilité de configurer un gabarit de résumé pour chaque source ainsi créée, ou au moins de pouvoir décider qu'une autre colonne est le text... mais bon, passons là dessus pour l'instant.
Mis à jour par Frédéric Péters il y a plus de 3 ans
il y aura un problème ici si le gabarit de résumé de la fiche n'existe pas : carddefs.get(custom_view.formdef_id) sera vide.
J'ai ajouté le "if not carddef: continue" mais la situation ne peut normalement pas arriver, vu qu'on ne peut activer en source de données une vue que si elle a le digest_template,
if isinstance(self.formdef, CardDef) and self.formdef.digest_template: options.append(('datasource', _('as data source'), 'datasource'))
J'ai poussé vers la branche la version rebasée.
Mis à jour par Thomas Noël il y a plus de 3 ans
- Statut changé de Solution proposée à Solution validée
Frédéric Péters a écrit :
J'ai ajouté le "if not carddef: continue" mais la situation ne peut normalement pas arriver, vu qu'on ne peut activer en source de données une vue que si elle a le digest_template,
En fait c'est en jouant que j'ai rencontré le crash, ça arrive dès que tu mets un digest_template, que tu créées une vue "source de données", puis que tu retires les digest_template. Ok, c'est tordu. En fait on devrait aussi interdire la suppression du digest_template si des vues "source de données" existent → #46862
Mis à jour par Lauréline Guérin il y a plus de 3 ans
- Bloque Development #46862: fiches : empêcher de vider le gabarit de résumé si des vues "source de donnée" existent ajouté
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 3f60f3c8e1784c72ba139e7a452d9a26b73bcd80 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Mon Aug 24 14:27:35 2020 +0200 general: expose custom views as data sources (#44155) commit 4f8903b6e94aa860e0278c0873d93a4df128f093 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sat Aug 22 21:31:09 2020 +0200 misc: move carddef data source support to carddef module (#44155)
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Lié à Development #46989: source de données dynamique via des fiches / vues personnalisées ajouté
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
misc: move carddef data source support to carddef module (#44155)