-
Notifications
You must be signed in to change notification settings - Fork 102
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Fiche taxon] Ajout d'un onglet "Médias" et un composant de galerie photo paginée #3229
base: develop
Are you sure you want to change the base?
[Fiche taxon] Ajout d'un onglet "Médias" et un composant de galerie photo paginée #3229
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## develop #3229 +/- ##
===========================================
+ Coverage 81.95% 83.89% +1.93%
===========================================
Files 86 122 +36
Lines 6965 9660 +2695
===========================================
+ Hits 5708 8104 +2396
- Misses 1257 1556 +299
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
ef59a57
to
2781a47
Compare
d0ba1e6
to
2dc0d3c
Compare
2dc0d3c
to
e702a5a
Compare
Résumé des échangs autour de la route: Proposition de fonctionnement après réunion techniqueDans l'idéal, faire une route générique dans medias qui récupère les medias associés à un cd_ref. Les permissions devraient pouvoir être gérés en s'appuyant sur has_instance_permissions, ou filter_by_scope. Si ça devenait un sac de noeud, re-basculer vers la version simpliste de la requête dans la synthese. Résulat après analyse de NSNotes route mediaFaire une route au niveau des medias: Cette route doit permettre de requêter les medias d'un ou plusieurs module associés à un cd_ref. L'idée est de rendre cette route agnostique du module en quetsion (synthèse, occtax, etc.), en s'appuyant sur la mécanique existante, Problèmes rencontrésBibTablesLocation est incomplèteProblème très mineur. Il suffirait de rajouter une ligne pour la synthèse. BibTablesLocation n'est pas suffisanteExemple de récupération des medias dans occtax. Il faudrait récupérer les medias des occurences. # Exemple de démo de construction d'un objet dynamiquement, plaqué sur l'objet et la table décrite bib_tables_location. A ce stade, le résultat de la requête dans bib_tables_location est supposé connu.
field = "unique_id_sinp_occtax"
table_cor_counting = "cor_counting_occtax"
t_cor_counting = sa.Table(
table_cor_counting, metadata, autoload_with=engine, schema="pr_occtax"
)
query = (
select(t_medias)
.join(
t_cor_counting,
t_cor_counting.c[field] == t_medias.c.uuid_attached_row,
)
) Or, le modèle de données dans Occtax est tel que cette requête ne permet pas d'effectuer une sélection sur le cd_nom. Il faut rajouter une jointure sur t_occurrences_occtax. # Exemple de démo de construction d'un objet dynamiquement, plaqué sur l'objet et la table décrite bib_tables_location. A ce stade, le résultat de la requête dans bib_tables_location est supposé connu.
field = "unique_id_sinp_occtax"
table_cor_counting = "cor_counting_occtax"
t_cor_counting = sa.Table(
table_cor_counting, metadata, autoload_with=engine, schema="pr_occtax"
)
table_occurences = "t_occurrences_occtax"
t_occurences = sa.Table(table_occurences, metadata, autoload_with=engine, schema="pr_occtax")
query = (
select(t_medias)
.join(
t_cor_counting,
t_cor_counting.c[field] == t_medias.c.uuid_attached_row,
)
.join(
t_occurences,
t_occurences.c.id_occurrence_occtax == t_cor_counting.c.id_occurrence_occtax,
)
.join(Taxref, Taxref.cd_nom == t_occurences.c.cd_nom)
.where(Taxref.cd_ref == cd_ref)
) L'information pour effectuer cette jointure supplémentaire n'est pas contenue actuellement dans bib_table location. Solution envisagéeLe procédé de jointure de filtrage par cd_ref est propre à la structure du modèle de donnée dans chaque module. Non seulement la logique portée par la table Il nous a semblé qu'une idée pourrait être de s'appuyer sur une logique plus orientée module. De la même manière que l'on procède avec les méthodes un peu partagées comme ConclusionNous ne souhaitons pas intégrer ce niveau d'intrication dans la création d'une route pour récupérer les medias d'un taxon dans la synthèse. |
Quand on affiche un média, il faudrait ajouter ses infos de base (titre, description, auteur...) mais aussi un minimum d'info sur l'observation à laquelle le média est associé (date, commune ?, autre ?). Attention les médias d'une observation peuvent aussi être des PDF, des audios, des vidéos... |
Ils sont affichés. On a réutilisé le composant Ok pour rajouter les infos mentionnées. On peut faire la liste ?
|
OK super si les infos du média sont affichés en reprenant le composant fourni par défaut. |
Closes #69854647
Closes #69854746
Backend
Ajout d'une nouvelle route
GET /gn_commons/medias/species/
dansgn_commons/medias/
.Cette route permet de récupérer les médias associés à une espèce en utilisant son identifiant
cd_nom
. La réponse est paginée.Frontend
Ajout d'un onglet Médias dans la page de la fiche espèce. Le composant
DisplayMedia
est utilisé pour gérer l'affichage dynamique des différents types de médias (images, vidéos, audios).