1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
# -*- coding: iso-8859-1 -*-
"""
MoinMoin - (re)building of Xapian indices
@copyright: 2007 MoinMoin:KarolNowak
@license: GNU GPL, see COPYING for details.
"""
import MoinMoin.events as ev
def _get_index(request):
try:
from MoinMoin.search.Xapian import XapianIndex
return XapianIndex(request)
except ImportError:
pass
def handle_renamed(event):
"""Updates Xapian index when a page changes its name"""
request = event.request
if request.cfg.xapian_search:
index = _get_index(request)
if index and index.exists():
index.update_item(event.old_page.page_name, now=False)
index.update_item(event.page.page_name)
def handle_copied(event):
"""Updates Xapian index when a page is copied"""
request = event.request
if request.cfg.xapian_search:
index = _get_index(request)
if index and index.exists():
index.update_item(event.page.page_name)
def handle_changed(event):
"""Updates Xapian index when a page is changed"""
request = event.request
if request.cfg.xapian_search:
index = _get_index(request)
if index and index.exists():
index.update_item(event.page.page_name)
def handle_deleted(event):
"""Updates Xapian index when a page is deleted"""
event = ev.PageChangedEvent(event.request, event.page, event.comment)
handle_changed(event)
def handle_attachment_change(event):
"""Updates Xapian index when attachment is added or removed"""
request = event.request
if request.cfg.xapian_search:
index = _get_index(request)
if index and index.exists():
index.update_item(event.pagename, event.filename)
def handle(event):
if isinstance(event, ev.PageRenamedEvent):
handle_renamed(event)
elif isinstance(event, ev.PageCopiedEvent):
handle_copied(event)
elif isinstance(event, (ev.PageChangedEvent, ev.TrivialPageChangedEvent)):
handle_changed(event)
elif isinstance(event, ev.PageDeletedEvent):
handle_deleted(event)
elif isinstance(event, (ev.FileAttachedEvent, ev.FileRemovedEvent)):
handle_attachment_change(event)
|