Mercurial > moin > 1.9
annotate MoinMoin/events/__init__.py @ 2106:1577663f6354
Notify when a new attachment is added to a page. s/JabberBot/jabberbot/.
author | Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl> |
---|---|
date | Thu, 07 Jun 2007 17:53:30 +0200 |
parents | 258d6e648eca |
children | 645bbc7fe2b5 |
rev | line source |
---|---|
2058
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
1 # -*- coding: iso-8859-1 -*- |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
2 """ |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
3 MoinMoin - event (notification) framework |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
4 |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
5 This code abstracts event handling in MoinMoin, |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
6 currently for notifications. It implements the observer pattern. |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
7 |
2064
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
8 @copyright: 2007 by Karol Nowak <grywacz@gmail.com> |
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
9 @license: GNU GPL, see COPYING for details. |
2058
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
10 """ |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
11 |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
12 from MoinMoin import wikiutil |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
13 from MoinMoin.util import pysupport |
2073
afa784d8d58d
Handle PluginErrors while loading event handlers gracefully.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2064
diff
changeset
|
14 from MoinMoin.wikiutil import PluginAttributeError |
2058
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
15 |
2086
c8bc6df45964
Formatting fixes according to PEP 8.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2077
diff
changeset
|
16 |
2058
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
17 # A list of available event handlers |
2095
258d6e648eca
Add a JabberIDUnsetEvent; make some private symbols internal in MoinMoin.events
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2094
diff
changeset
|
18 _event_handlers = None |
2058
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
19 |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
20 # Create a list of extension actions from the package directory |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
21 modules = pysupport.getPackageModules(__file__) |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
22 |
2086
c8bc6df45964
Formatting fixes according to PEP 8.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2077
diff
changeset
|
23 |
2091
7af58454aafa
Send an event when user changes her jabber id, force jid to be unique.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2086
diff
changeset
|
24 class Event: |
2058
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
25 """A class handling information common to all events.""" |
2064
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
26 def __init__(self, request): |
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
27 self.request = request |
2086
c8bc6df45964
Formatting fixes according to PEP 8.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2077
diff
changeset
|
28 |
2061
7547652ffb6f
Change Event -> Observable, add a helper PageEvent class.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2058
diff
changeset
|
29 |
2091
7af58454aafa
Send an event when user changes her jabber id, force jid to be unique.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2086
diff
changeset
|
30 class PageEvent(Event): |
2061
7547652ffb6f
Change Event -> Observable, add a helper PageEvent class.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2058
diff
changeset
|
31 """An event related to a page change""" |
2094
9ee68c8b409b
Style fixes as suggested by Thomas.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2091
diff
changeset
|
32 def __init__(self, request): |
9ee68c8b409b
Style fixes as suggested by Thomas.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2091
diff
changeset
|
33 Event.__init__(self, request) |
2086
c8bc6df45964
Formatting fixes according to PEP 8.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2077
diff
changeset
|
34 |
2058
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
35 |
2061
7547652ffb6f
Change Event -> Observable, add a helper PageEvent class.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2058
diff
changeset
|
36 class PageChangedEvent(PageEvent): |
2064
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
37 def __init__(self, request, page, comment, trivial): |
2094
9ee68c8b409b
Style fixes as suggested by Thomas.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2091
diff
changeset
|
38 PageEvent.__init__(self, request) |
2064
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
39 self.page = page |
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
40 self.comment = comment |
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
41 self.trivial = trivial |
2086
c8bc6df45964
Formatting fixes according to PEP 8.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2077
diff
changeset
|
42 |
2064
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
43 |
2061
7547652ffb6f
Change Event -> Observable, add a helper PageEvent class.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2058
diff
changeset
|
44 class PageRenamedEvent(PageEvent): |
2058
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
45 pass |
2061
7547652ffb6f
Change Event -> Observable, add a helper PageEvent class.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2058
diff
changeset
|
46 class PageDeletedEvent(PageEvent): |
2058
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
47 pass |
2106
1577663f6354
Notify when a new attachment is added to a page. s/JabberBot/jabberbot/.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2095
diff
changeset
|
48 |
1577663f6354
Notify when a new attachment is added to a page. s/JabberBot/jabberbot/.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2095
diff
changeset
|
49 |
2064
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
50 class FileAttachedEvent(PageEvent): |
2106
1577663f6354
Notify when a new attachment is added to a page. s/JabberBot/jabberbot/.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2095
diff
changeset
|
51 def __init__(self, request, pagename, attachment_name, size): |
1577663f6354
Notify when a new attachment is added to a page. s/JabberBot/jabberbot/.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2095
diff
changeset
|
52 self.request = request |
1577663f6354
Notify when a new attachment is added to a page. s/JabberBot/jabberbot/.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2095
diff
changeset
|
53 self.pagename = pagename |
1577663f6354
Notify when a new attachment is added to a page. s/JabberBot/jabberbot/.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2095
diff
changeset
|
54 self.attachment_name = attachment_name |
1577663f6354
Notify when a new attachment is added to a page. s/JabberBot/jabberbot/.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2095
diff
changeset
|
55 self.size = size |
2064
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
56 |
2086
c8bc6df45964
Formatting fixes according to PEP 8.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2077
diff
changeset
|
57 |
2064
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
58 class PageRevertedEvent(PageEvent): |
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
59 def __init__(self, request, pagename, previous, current): |
2094
9ee68c8b409b
Style fixes as suggested by Thomas.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2091
diff
changeset
|
60 PageEvent.__init__(self, request) |
2064
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
61 self.pagename = pagename |
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
62 self.previous = previous |
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
63 self.current = current |
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
64 |
2086
c8bc6df45964
Formatting fixes according to PEP 8.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2077
diff
changeset
|
65 |
2064
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
66 class SubscribedToPageEvent(PageEvent): |
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
67 def __init__(self, request, pagename, username): |
2094
9ee68c8b409b
Style fixes as suggested by Thomas.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2091
diff
changeset
|
68 PageEvent.__init__(self, request) |
2064
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
69 self.pagename = pagename |
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
70 self.username = username |
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
71 |
2086
c8bc6df45964
Formatting fixes according to PEP 8.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2077
diff
changeset
|
72 |
2091
7af58454aafa
Send an event when user changes her jabber id, force jid to be unique.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2086
diff
changeset
|
73 class JabberIDSetEvent(Event): |
7af58454aafa
Send an event when user changes her jabber id, force jid to be unique.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2086
diff
changeset
|
74 """ Sent when user changes her Jabber ID """ |
7af58454aafa
Send an event when user changes her jabber id, force jid to be unique.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2086
diff
changeset
|
75 def __init__(self, request, jid): |
7af58454aafa
Send an event when user changes her jabber id, force jid to be unique.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2086
diff
changeset
|
76 Event.__init__(self, request) |
7af58454aafa
Send an event when user changes her jabber id, force jid to be unique.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2086
diff
changeset
|
77 self.jid = jid |
7af58454aafa
Send an event when user changes her jabber id, force jid to be unique.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2086
diff
changeset
|
78 |
2095
258d6e648eca
Add a JabberIDUnsetEvent; make some private symbols internal in MoinMoin.events
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2094
diff
changeset
|
79 class JabberIDUnsetEvent(Event): |
258d6e648eca
Add a JabberIDUnsetEvent; make some private symbols internal in MoinMoin.events
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2094
diff
changeset
|
80 """ Sent when Jabber ID is no longer used |
258d6e648eca
Add a JabberIDUnsetEvent; make some private symbols internal in MoinMoin.events
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2094
diff
changeset
|
81 |
258d6e648eca
Add a JabberIDUnsetEvent; make some private symbols internal in MoinMoin.events
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2094
diff
changeset
|
82 Obviously this will be usually sent along with JabberIDSetEvent, |
258d6e648eca
Add a JabberIDUnsetEvent; make some private symbols internal in MoinMoin.events
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2094
diff
changeset
|
83 because we require user's jabber id to be unique by default. |
258d6e648eca
Add a JabberIDUnsetEvent; make some private symbols internal in MoinMoin.events
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2094
diff
changeset
|
84 """ |
258d6e648eca
Add a JabberIDUnsetEvent; make some private symbols internal in MoinMoin.events
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2094
diff
changeset
|
85 def __init__(self, request, jid): |
258d6e648eca
Add a JabberIDUnsetEvent; make some private symbols internal in MoinMoin.events
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2094
diff
changeset
|
86 Event.__init__(self, request) |
258d6e648eca
Add a JabberIDUnsetEvent; make some private symbols internal in MoinMoin.events
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2094
diff
changeset
|
87 self.jid = jid |
258d6e648eca
Add a JabberIDUnsetEvent; make some private symbols internal in MoinMoin.events
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2094
diff
changeset
|
88 |
258d6e648eca
Add a JabberIDUnsetEvent; make some private symbols internal in MoinMoin.events
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2094
diff
changeset
|
89 def _register_handlers(cfg): |
2058
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
90 """Create a list of available event handlers. |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
91 |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
92 Each handler is a handle() function defined in an plugin, |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
93 pretty much like in case of actions. |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
94 |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
95 TODO: maybe make it less dumb? ;-)""" |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
96 |
2095
258d6e648eca
Add a JabberIDUnsetEvent; make some private symbols internal in MoinMoin.events
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2094
diff
changeset
|
97 global _event_handlers |
2058
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
98 |
2095
258d6e648eca
Add a JabberIDUnsetEvent; make some private symbols internal in MoinMoin.events
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2094
diff
changeset
|
99 _event_handlers = [] |
2058
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
100 names = wikiutil.getPlugins("events", cfg) |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
101 |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
102 for name in names: |
2073
afa784d8d58d
Handle PluginErrors while loading event handlers gracefully.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2064
diff
changeset
|
103 try: |
afa784d8d58d
Handle PluginErrors while loading event handlers gracefully.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2064
diff
changeset
|
104 handler = wikiutil.importPlugin(cfg, "events", name, "handle") |
afa784d8d58d
Handle PluginErrors while loading event handlers gracefully.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2064
diff
changeset
|
105 except PluginAttributeError: |
afa784d8d58d
Handle PluginErrors while loading event handlers gracefully.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2064
diff
changeset
|
106 handler = None |
2058
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
107 |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
108 if handler is not None: |
2095
258d6e648eca
Add a JabberIDUnsetEvent; make some private symbols internal in MoinMoin.events
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2094
diff
changeset
|
109 _event_handlers.append(handler) |
2058
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
110 |
2086
c8bc6df45964
Formatting fixes according to PEP 8.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2077
diff
changeset
|
111 |
2058
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
112 def send_event(event): |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
113 """Function called from outside to process an event""" |
2064
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
114 |
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
115 # A list of messages generated by event handlers, passed back to caller |
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
116 msg = [] |
2058
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
117 |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
118 # Find all available event handlers |
2095
258d6e648eca
Add a JabberIDUnsetEvent; make some private symbols internal in MoinMoin.events
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2094
diff
changeset
|
119 if _event_handlers is None: |
258d6e648eca
Add a JabberIDUnsetEvent; make some private symbols internal in MoinMoin.events
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2094
diff
changeset
|
120 _register_handlers(event.request.cfg) |
2058
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
121 |
fb6f1de06be0
Start with a simplistic event handling system, which uses plugins in a way
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
diff
changeset
|
122 # Try to handle the event with each available handler (for now) |
2095
258d6e648eca
Add a JabberIDUnsetEvent; make some private symbols internal in MoinMoin.events
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2094
diff
changeset
|
123 for handle in _event_handlers: |
2064
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
124 retval = handle(event) |
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
125 if isinstance(retval, unicode): |
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
126 msg.append(retval) |
5cc8f6714297
Add more event types. Return a list of messages generated by event handlers to caller.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2061
diff
changeset
|
127 |
2076
0128bbaf0172
Add newlines at the end of files, fix some overzealous deletion.
Karol 'grzywacz' Nowak <grzywacz@sul.uni.lodz.pl>
parents:
2073
diff
changeset
|
128 return msg |