~ubuntu-branches/ubuntu/natty/moin/natty-updates

« back to all changes in this revision

Viewing changes to MoinMoin/events/xapian_index.py

  • Committer: Bazaar Package Importer
  • Author(s): Jonas Smedegaard
  • Date: 2008-06-22 21:17:13 UTC
  • mto: This revision was merged to the branch mainline in revision 18.
  • Revision ID: james.westby@ubuntu.com-20080622211713-inlv5k4eifxckelr
ImportĀ upstreamĀ versionĀ 1.7.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
    @copyright: 2007 MoinMoin:KarolNowak
6
6
    @license: GNU GPL, see COPYING for details.
7
7
"""
8
 
 
9
8
import MoinMoin.events as ev
10
9
 
11
 
 
12
 
def _get_index(request):
13
 
    try:
14
 
        from MoinMoin.search.Xapian import XapianIndex
15
 
        return XapianIndex(request)
16
 
    except ImportError:
17
 
        pass
18
 
 
19
 
 
20
10
def handle_renamed(event):
21
11
    """Updates Xapian index when a page changes its name"""
22
12
 
23
13
    request = event.request
24
14
 
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)
 
18
        if index.exists():
 
19
            index.remove_item(event.old_page.page_name, now=0)
 
20
            index.update_page(event.page.page_name)
30
21
 
31
22
 
32
23
def handle_copied(event):
35
26
    request = event.request
36
27
 
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)
41
 
 
42
 
 
43
 
def handle_changed(event):
 
29
        from MoinMoin.search.Xapian import Index
 
30
        index = Index(request)
 
31
        if index.exists():
 
32
            index.update_page(event.page.page_name)
 
33
 
 
34
def handle_changed(event, deleted=False):
44
35
    """Updates Xapian index when a page is changed"""
45
36
 
46
37
    request = event.request
47
38
 
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)
 
42
        if index.exists():
 
43
            if deleted:
 
44
                index.remove_item(event.page.page_name)
 
45
            else:
 
46
                index.update_page(event.page.page_name)
52
47
 
53
48
 
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)
57
 
    handle_changed(event)
58
 
 
59
 
 
60
 
def handle_attachment_change(event):
61
 
    """Updates Xapian index when attachment is added or removed"""
 
52
    handle_changed(event, deleted=True)
 
53
 
 
54
 
 
55
def handle_attached(event):
 
56
    """Updates Xapian index when a new attachment is added"""
62
57
 
63
58
    request = event.request
64
59
 
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)
 
63
        if index.exists():
 
64
            index.update_page(request.page.page_name)
69
65
 
70
66
 
71
67
def handle(event):
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)
82
 
 
 
76
    elif isinstance(event, ev.FileAttachedEvent):
 
77
        handle_attached(event)