Es scheint, dass die Antwort darauf in der tests for resources in Products.CMFPlone liegt.
Insbesondere in den Testfällen in dieser Datei gibt es eine Reihe von Tests, die die Konfiguration Registrierung verwenden, um registrierte Bündel und Ressourcen zugreifen wie so:
from Products.CMFPlone.interfaces import IBundleRegistry
from Products.CMFPlone.interfaces import IResourceRegistry
from plone.registry.interfaces import IRegistry
from zope.component import getUtility
resources = getUtility(IRegistry).collectionOfInterface(
IResourceRegistry, prefix="plone.resources"
)
bundles = getUtility(IRegistry).collectionOfInterface(
IBundleRegistry, prefix="plone.bundles"
)
Die Rückgabewerte dieser Anrufe sind dict-like Objekte und sie enthalten Zeiger auf Konfigurationsregistrierungseinträge für Bundles oder Ressourcen, die mit dem Importschritt registry.xml
Generic Setup registriert wurden.
So zum Beispiel, wenn Sie in Ihrem Produkt der folgenden XML ein Bündel registriert haben mit:
<records prefix="plone.bundles/my-product"
interface='Products.CMFPlone.interfaces.IBundleRegistry'>
<value key="resources">
<element>my-resource</element>
</value>
<value key="enabled">True</value>
<value key="jscompilation">++plone++static/my-compiled.js</value>
<value key="csscompilation">++plone++static/my-compiled.css</value>
<value key="last_compilation">2014-08-14 00:00:00</value>
</records>
dann in den bundles
durch das Ressourcenregister oben zurückgegeben, wäre in der Lage Sie den Teil zu verwenden, „Präfix“ Ihr Bündels nach dem Schrägstrich ('my-product'
) wie so die Registrierung Rekord-Proxy für Ihr Bündel zu sehen:
my_bundle = bundles['my-product']
des Rekord-Attribut Zugriff auf die definierte Schnittstelle eines Bündels zur Verfügung stellt (siehe Products.CMFPlone.interfaces.resources.IBundleRegistry für die Details). So sollten Sie in der Lage sein zu überprüfen, ob sie die richtigen Werte für kompilierte js oder CSS hat:
assert my_bundle.jscompilation == '++plone++static/my-compiled.js'
assert my_bundle.csscompilation == '++plone++static/my-compiled.css'
Datensätze für registrierte Ressourcen werden auf die gleiche Weise arbeiten, ein dict artiges Objekt mit Schlüssel zum Teil des entsprechenden "Präfix" für Ihre Ressourcenregistrierung in registry.xml
nach dem Schrägstrich. Die in diesem Fall zurückgegebenen Datensätze unterstützen stattdessen Products.CMFPlone.interfaces.resources.IResourceRegistry. Sie können jedoch weiterhin den Attributzugriff verwenden, um zu überprüfen, ob die erwarteten Werte richtig registriert sind.
Wenn Sie Ressourcen, die die veralteten portal_javascript
oder portal_css
Tools registriert verwenden (die jsregistry.xml
oder cssregistry.xml
Allgemeinen Setup-Importschritte verwendet wird), ist der Schlüssel, sie zu finden ist, dass Plone wird nun automatisch solche Ressourcen in einem speziellen Bundle enthält plone-legacy
genannt . Da Bündel ein resources
Attribut hat, die eine Liste von Ressourcen in diesem Bundle bietet, sollen Sie in der Lage sein, so etwas zu tun:
bundles = getUtility(IRegistry).collectionOfInterface(
IBundleRegistry, prefix="plone.bundles"
)
legacy_bundle = bundles['plone-legacy']
assert "my-oldskool.js" in legacy_bundle.resources
Beispiele hierfür auch in den tests for resources in Products.CMFPlone gefunden werden können. Insbesondere im TestResourceNodeImporter
Testfall.
vielleicht so: [ link] (https://pypi.python.org/pypi/plone.registry # accessing-and-manipulating-record-values), aber ich weiß nicht, wie Sie das in einem Test machen. – 1letter