(Dumping this here in case anybody needs it in the future)
I got a request from an openplans.org to delete some accidentally-posted
messages from a Listen archive. Listen doesn't seem to have such a feature;
here's what I stumbled ignorantly through that seems to mostly work.... Merely
deleting the offending messages from the ZMI causes massive breakage :-\
$ zopectl debug
Password:
Starting debugger (the name "app" is bound to the top-level Zope object)
...
>>> msg_paths >>> listenlist >>> from zope.app import zapi
>>> from Products.listen.interfaces import ISearchableArchive
>>> search >>> parent_path >>> for p in msg_paths:
... search.uncatalog_object(p)
... parent.manage_delObjects([p.split('/')[-1]])
>>> search
# Now reindex the neighboring messages... hacky I know, but nothing else I
tried worked without errors:
>>> for brain in search.searchResults(path=parent_path):
... search.catalog_object(brain.getObject(), brain.getPath())
>>> import transaction
>>> transaction.get().note('I deleted some messages through the console')
>>> transaction.commit()
After that, all views I tried worked OK, except that the parent message thinks
it has the old number of replies.
--
Archive:
http://www.openplans.org/projects/listen/lists/listen-dev/archive/2009/03/1238451399104
To unsubscribe send an email with subject "unsubscribe" to
[email protected]. Please contact
[email protected] for questions.