Bonjour,
Je souhaite pouvoir « Editer le type de signalement » même quand un signalement a déjà été créé. L’intérêt est de pouvoir ajouter des attributs au besoin et compléter les listes déroulantes ou cases à cocher avec de nouvelles valeurs. Cependant, je ne peux pas le faire avec l’interface, car le bouton disparait dès qu’un signalement est créé. L’affichage est géré selon une variable (is_editable) d’après le code ici src/components/Project/Detail/ProjectFeatureTypes.vue · b3b239b4fc3ffd09600370a40b254b5e64b23117 · GéoContrib / Géocontrib Frontend · GitLab :
v-if="project && type.is_editable && permissions && permissions.can_create_feature_type && isOnline"
Donc, l’idée pourrait être de supprimer le test type.is_editable
, mais je me dis que ce serait plus propre de venir modifier cette valeur dans la base de données, et donc imaginer une case à cocher dans l’interface de création d’un signalement pour l’activer ou non. Cependant, il y a une chose que je ne comprends pas.
Tout d’abord, je vois que le modèle de données correspond à ce code api/serializers/feature.py · 8759f53f94242dd5f060fc3f92ac992858375cbb · GéoContrib / Géocontrib Django · GitLab :
class Meta:
model = FeatureType
fields = (
'title',
'title_optional',
'slug',
'geom_type',
'color',
'icon',
'opacity',
'colors_style',
'project',
'customfield_set',
'is_editable',
'displayed_fields',
'enable_key_doc_notif',
'disable_notification',
)
Sauf qu’en regardant la table geocontrib_featuretype
dans la base de données, tous les attributs sont présents, sauf is_editable
, alors qu’il semble exister vu que le test de l’interface vue.js fonctionne. Et je n’arrive pas à trouver où cette valeur est stockée.
L’idée est de pouvoir permettre à un administrateur d’un projet de rajouter des éléments de manière autonome, car là je dois le passer administrateur du django pour qu’il puisse modifier directement les customfields, ou lui permettre d’attaquer directement la base de données pour le faire. Dans les 2 cas, je perds l’interface pour le faire et je donne des droits que je ne veux pas donner.
J’ai testé de supprimer des options (liste déroulante et case à cocher) une valeur qui est déjà assignée à un signalement pour voir ce que ça faisait. Dans le cas d’une case à cocher, la valeur qui a été supprimée des options continuera d’être assignée au signalement, mais elle devient impossible à supprimer vu qu’elle n’apparait plus dans la liste. Dans le cas des listes déroulantes, la valeur supprimée reste présente comme la valeur en cours, et tant qu’on en sélectionne pas une nouvelle dans la liste, elle restera présente. Par contre, si on en prend une nouvelle et qu’on enregistre, elle disparaitra à jamais. Donc, dans le cas des cases à cocher, nous pourrons observer une différence entre la page de détail d’un signalement et la page d’édition d’un signalement, car dans le détail j’aurais toujours ma valeur qui n’est plus sélectionnable dans ma liste de cases à cocher, jusqu’à ce que je recrée une valeur avec le même nom.
Ainsi, permettre d’éditer un signalement même quand celui-ci possède déjà des signalements semble être plutôt bien géré, à moins qu’il y ai des soucis que je n’ai pas identifiés.
Ainsi :
- pourquoi l’attribut is_editable n’apparaît pas dans la table geocontrib_featuretype ?
- est-il possible d’ajouter une case à cocher en lien avec cet attribut pour forcer l’affichage du bouton d’édition ?
- y-a-t’il un problème de faire cela que je n’ai pas identifié ? Sachant que l’idée est surtout d’ajouter des attributs et valeurs, pas d’en enlever.
P.S : en cherchant dans le code, je suis tombé sur ça, est-ce une erreur de frappe ?
geocontrib/templates/admin/geocontrib/create_postrges_view_form.html · 8759f53f94242dd5f060fc3f92ac992858375cbb · GéoContrib / Géocontrib Django · GitLab et
geocontrib-django-develop\geocontrib\admin\feature.py : postrgres
→ postgres
:
change_form_template = 'admin/geocontrib/with_create_postrgres_view.html'
Merci !