(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.

Reply via email to