5
5
@copyright: 2007 MoinMoin:KarolNowak
6
6
@license: GNU GPL, see COPYING for details.
9
8
import MoinMoin.events as ev
12
def _get_index(request):
14
from MoinMoin.search.Xapian import XapianIndex
15
return XapianIndex(request)
20
10
def handle_renamed(event):
21
11
"""Updates Xapian index when a page changes its name"""
23
13
request = event.request
25
15
if request.cfg.xapian_search:
26
index = _get_index(request)
27
if index and index.exists():
28
index.update_item(event.old_page.page_name, now=False)
29
index.update_item(event.page.page_name)
16
from MoinMoin.search.Xapian import Index
17
index = Index(request)
19
index.remove_item(event.old_page.page_name, now=0)
20
index.update_page(event.page.page_name)
32
23
def handle_copied(event):
35
26
request = event.request
37
28
if request.cfg.xapian_search:
38
index = _get_index(request)
39
if index and index.exists():
40
index.update_item(event.page.page_name)
43
def handle_changed(event):
29
from MoinMoin.search.Xapian import Index
30
index = Index(request)
32
index.update_page(event.page.page_name)
34
def handle_changed(event, deleted=False):
44
35
"""Updates Xapian index when a page is changed"""
46
37
request = event.request
48
39
if request.cfg.xapian_search:
49
index = _get_index(request)
50
if index and index.exists():
51
index.update_item(event.page.page_name)
40
from MoinMoin.search.Xapian import Index
41
index = Index(request)
44
index.remove_item(event.page.page_name)
46
index.update_page(event.page.page_name)
54
49
def handle_deleted(event):
55
50
"""Updates Xapian index when a page is deleted"""
56
51
event = ev.PageChangedEvent(event.request, event.page, event.comment)
60
def handle_attachment_change(event):
61
"""Updates Xapian index when attachment is added or removed"""
52
handle_changed(event, deleted=True)
55
def handle_attached(event):
56
"""Updates Xapian index when a new attachment is added"""
63
58
request = event.request
65
60
if request.cfg.xapian_search:
66
index = _get_index(request)
67
if index and index.exists():
68
index.update_item(event.pagename, event.filename)
61
from MoinMoin.search.Xapian import Index
62
index = Index(request)
64
index.update_page(request.page.page_name)
73
69
handle_renamed(event)
74
70
elif isinstance(event, ev.PageCopiedEvent):
75
71
handle_copied(event)
76
elif isinstance(event, (ev.PageChangedEvent, ev.TrivialPageChangedEvent)):
72
elif isinstance(event, ev.PageChangedEvent):
77
73
handle_changed(event)
78
74
elif isinstance(event, ev.PageDeletedEvent):
79
75
handle_deleted(event)
80
elif isinstance(event, (ev.FileAttachedEvent, ev.FileRemovedEvent)):
81
handle_attachment_change(event)
76
elif isinstance(event, ev.FileAttachedEvent):
77
handle_attached(event)