applification: avoir un lien entre les objets importés et l'application hobo (#74372) #102
Loading…
Reference in New Issue
No description provided.
Delete Branch "wip/74372-application-links"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
66c79352a0
to617f29306b
617f29306b
tob17795efaa
b17795efaa
to2709ae2a67
2709ae2a67
to2f4943a463
2f4943a463
to3f02513140
3f02513140
to7c38598d8b
7c38598d8b
to580141bc37
580141bc37
to5c20dba5f6
5c20dba5f6
to8c5e9fc52d
8c5e9fc52d
to9b354b7030
Absolument pas terminé, mais je pose quand même 2 screenshots
0435f235ee
toa7dffcaeec
@ -4587,0 +4719,4 @@
% table_name
)
# TODO indexes ?
Selon les volumes, effectivement, un index sur (object_type, object_id) ne serait pas de trop. Tout dépendra des volumes.
index ajouté
@ -4587,0 +4724,4 @@
cur.execute(
'ALTER TABLE %s ADD CONSTRAINT %s_unique UNIQUE (application_id, object_type, object_id)'
% (table_name, table_name)
)
Donc à chaque appel de do_table, on va supprimer et recréer la contrainte, et donc l'index lié. Pas fan du tout.
Il y aurait / tu aurais une syntaxe en "IF NOT EXISTS" pour faire ça ?
j'ai fait une requête pour aller voir dans `information_schema.constraint_column_usage
a7dffcaeec
toda6b3e60a0
WIP: applification: avoir un lien entre les objets importés et l'application hobo (#74372)to applification: avoir un lien entre les objets importés et l'application hobo (#74372)0001: deux nouvelles tables, pour y stocker les informations sur une app et sur les liens entre objets et app + création des liens à l'import d'une app
0002: ajout d'un template pour le listing des workflows
0003: ajout d'un template pour le listing des categories
0004: vues pour lister les objets d'une app
0005: affichage de l'icône d'une app dans les listings
0006: à l'import, unlink des objets obsolètes
0007: endpoint pour déclarer les objets d'une app (appelé par hobo à la génération d'une version)
0008: endpoint pour unlink complètement une app (appelé par hobo à la suppression d'une app)
0009: il manquait des objets dans les tests export/import
A reprendre après https://dev.entrouvert.org/issues/74651 pour la présentation des applis disponibles sur le listing des objets.
da6b3e60a0
to0c4d9e6804
applification: avoir un lien entre les objets importés et l'application hobo (#74372)to WIP: applification: avoir un lien entre les objets importés et l'application hobo (#74372)77494e1686
tofd63d72250
fd63d72250
to0edf6a7460
0edf6a7460
tofe3744cfd3
c5558b77d9
to963e698b42
nouvelle liste de commits (#74651 est passé):
0001: deux nouvelles tables, pour y stocker les informations sur une app et sur les liens entre objets et app + création des liens à l'import d'une app
0002: vues pour lister les objets d'une app
0003: affichage de l'icône d'une app dans les listings
0004: à l'import, unlink des objets obsolètes
0005: endpoint pour déclarer les objets d'une app (appelé par hobo à la génération d'une version)
0006: endpoint pour unlink complètement une app (appelé par hobo à la suppression d'une app)
0007: il manquait des objets dans les tests export/import
0008: fix sur #74651 (mauvais nom de block dans un template)
0009: pour ne pas supprimer les icônes des applications
WIP: applification: avoir un lien entre les objets importés et l'application hobo (#74372)to applification: avoir un lien entre les objets importés et l'application hobo (#74372)Je vais essayer de tout tester/relire pour ce cycle mais tu pourrais déjà pusher celui-ci ? (ça demande peut-être de mentionner un autre numéro de ticket dans l'objet, pour que scrutiny ne ferme pas ce ticket, ça me va si c'est #74651 plutôt qu'un nouveau ticket).
ok je pousse le 0008 à part
Je l'ai tourné en local et j'ai relu, quelques notes et ça me semble ok.
@ -171,2 +171,4 @@
sql.WorkflowTrace.do_table()
sql.Application.do_table()
sql.ApplicationElement.do_table()
sql.init_global_table()
Dans wcs/publisher.py, il manque un appel aux .do_table() dans initialize_sql; (manque aussi TestDef et TestResult, on dirait, je vais faire un ticket).
Idéalement il n'y aurait pas à répéter ça, les tests appelleraient initialize_sql, je ne sais plus ce qui compliquait ça. (mais ça relève d'un autre ticket également, ici juste copier les deux lignes dans publisher.py sera très bien).
ajouté dans wcs/publisher.py
@ -0,0 +21,4 @@
from wcs.qommon.backoffice.menu import html_top
class ApplicationsDirectory(Directory):
On pourrait avoir un
_q_index
qui ferait juste redirect('..'), pour ne pas donner une 404 sur un chemin partiel.fait
@ -0,0 +51,4 @@
self.application = application
def _q_traverse(self, path):
get_response().breadcrumb.append(('%s/' % self.application.id, self.application.name))
Ça devrait plutôt être application/%s/
Actuellement de https://.../backoffice/forms/application/1/ c'est un lien /backoffice/forms/1/ qui est ajouté à l'href. (pour le moment comme c'est toujours le dernier élément du fil d'ariane et qu'il n'apparait pas, on ne risque pas de clic sur le mauvais lien, mais autant éviter la surprise si jamais des sous-pages sont ajoutées).
fait
@ -493,7 +493,15 @@ class WcsPublisher(QommonPublisher):
def get_object_class(self, object_type):
Dans wcs/publisher.py, il manque un appel aux .do_table() dans initialize_sql.
fait
@ -768,3 +768,3 @@
ul.biglist.sortable a {
display: inline-block;
width: calc(100% - 2em);
width: calc(100% - 3em);
J'ai noté un problème en testant cette branche, j'ai fait #76471 (validé et que j'aurai poussé), ça rend le changement ici inutile.
changement retiré
@ -0,0 +1,5 @@
{% for application in object.applications %}
{% if application.icon %}
<img src="application/{{ application.id }}/icon" alt="" class="application-icon" />
Pour les liens application/.../ je serais à préférer l'utilisation du slug, plutôt que l'id de l'application.
Pour les
<img>
, comme on connait les dimension, on pourrait les mettre dans les attributs, width="16" height="16" ici; ça éviterait un petit temps de décalage du texte au moment où l'icône apparait.fait, j'ai posé le slug dans toutes les urls, et ajouté une méthode get_by_slug à Application (qui n'hérite pas de StorableObject)
et j'ai posé un width=16 aussi, mais pas le height; l'icône n'est pas forcément carrée (mais elle fait 16px de large, toujours)
@ -29,3 +30,4 @@
path('api/export-import/unlink/', api_export_import.unlink),
re_path(
r'^api/export-import/(?P<objects>[\w-]+)/$',
api_export_import.objects_list,
En évolutions diverses, je note ici (mais pas pour ce ticket déjà bien chargé),
j'y pensais aussi, mais pour ce premier ticket je me suis dit que c'était déjà bien assez