Le FTI Dexterity a une option pour sélectionner une permission en tant que "AddPermission" pour un type, mais je cherche un moyen d'exiger une logique potentiellement complexe à résoudre vrai avant d'autoriser le type à ajouter à un conteneur. Dans mon exemple particulier, je n'autoriserai que X nombre de contenu dans un conteneur donné. Si je pouvais sous-classer une méthode qui était, disons, "isAddable" ou quelque chose qui serait génial, mais je ne vois pas de méthode en main qui fait cela. Peut-être que ce n'est pas possible parce que l'objet de classe n'est pas encore initié, donc il ne peut pas appeler de méthodes, mais peut-être que l'IMOA elle-même a quelque chose?Comment ajouter une condition pour ajouter un type de Dextérité?
J'ai pensé à deux autres options. Dans mon cas, étant donné que le conteneur est également un type de contenu personnalisé, je peux remplacer sa méthode allowedContentTypes. Je préfère ne pas compter sur le conteneur pour faire ce contrôle si. Une autre option consiste à remplacer la méthode addable_types dans plone.app.content.browser.folderfactories.FolderFactoriesView. Est-ce qu'il y a une meilleure approche?
C'est à 4.3
Plone
l'explication sur la sécurité est correcte, mais si vous voulez toujours avoir seulement une limitation visuelle de l'interface utilisateur types (les utilisateurs ne verront pas le type d'ajout, mais ils peuvent toujours écrire manuellement ajouter une URL), vous pouvez utiliser https://github.com/keul/collective.factorymenu (il n'est pas encore publié en raison de problèmes avec les tests, mais devrait fonctionner sur Plone 4.3 et 5) –
J'ai fini par corriger la vue des usines de dossiers ET en faisant également un écouteur d'événement pour zope.lifecycleevent.interfaces.IObjectAddedEvent. La modification de allowedContentTypes sur le conteneur parent a malheureusement le même problème de sécurité que la simple modification de la vue des usines. – Esoth
merci pour les commentaires détaillés. bon d'entendre votre problème est résolu ;-) – fRiSi