Salve,
se vi capita di aver installato un prodotto (un nome a caso:
collective.flowplayer) che definisce un'interfaccia, e poi,
rimuovendolo, questa interfaccia vi crea problemi, ecco come rimuoverla.
Passo uno: reinstallare il prodotto o almeno ridefinire l'interfaccia
via zcml, in modo che l'interfaccia abbia lo stesso namespace (lo stesso
nome, prodotto.leinterfacce.IMiaInterfaccia)
In un qualsiasi prodotto derivato da zopeskel, nella dir browser,
mettete questo file:
=================== browser_remove.py =================
from Products.Five import BrowserView
from zope.component import getMultiAdapter
from zope.interface import alsoProvides, noLongerProvides
from zope.component.interface import interfaceToName
from cab.contentextender.interfaces import IDocumentExtended
def remove_marker(object):
changed = False
if IDocumentExtended.providedBy(object):
noLongerProvides(object, IDocumentExtended)
changed = True
if changed:
object.reindexObject(idxs=['object_provides'])
class RemoveCabExtView(BrowserView):
def __call__(self):
tools = getMultiAdapter((self.context, self.request),
name='plone_tools')
catalog = tools.catalog()
brains = catalog(object_provides=interfaceToName(self.context,
IDocumentExtended))
for brain in brains:
obj = brain.getObject()
remove_marker(obj)
return ('Removed IDocumentExtended interfaces from %i objects
for cleanup' % len(brains))
===========================
e aggiungete a configure.zcml lì presente:
<browser:page
for="Products.CMFPlone.interfaces.siteroot.IPloneSiteRoot"
name="remove-interface"
class=".browser_remove.RemoveCabExtView"
permission="cmf.ManagePortal"
>
=========================
Ora riavviate e lanciate http://miositoplone/@@remove-interface
Il codice è preso da qui:
http://plone.org/products/collective-flowplayer/issues/5 , aggiungendo
quello che mancava.
_______________________________________________
Plone-IT mailing list
[email protected]
http://lists.plone.org/mailman/listinfo/plone-it
http://www.nabble.com/Plone---Italy-f21728.html