~thekorn/zeitgeist/exclusive_clients

« back to all changes in this revision

Viewing changes to _zeitgeist/engine/extension.py

  • Committer: "Mikkel Kamstrup Erlandsen"
  • Date: 2009-12-07 21:41:40 UTC
  • Revision ID: mikkel.kamstrup@gmail.com-20091207214140-r7yq6hc7li335twr
Change name of hook methods in Extension to {get,insert}_event_hook(). And move all hooks logic into the ExtensionCollection class

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
        def __init__(self, engine):
34
34
                self.engine = engine
35
35
        
36
 
        def filter_insert_event(self, event):
 
36
        def insert_event_hook(self, event):
37
37
                """
38
38
                Hook applied to all events before they are inserted into the
39
39
                log. The returned event is progressively passed through all
52
52
                """
53
53
                return event
54
54
        
55
 
        def filter_get_event(self, event):
 
55
        def get_event_hook(self, event):
56
56
                """
57
57
                Hook applied to all events before they are returned to a client.
58
58
                The event returned from this method is progressively passed
104
104
                for method in obj.PUBLIC_METHODS:
105
105
                        del self.methods[method]
106
106
                del self.__extensions[extension.__name__]
 
107
        
 
108
        def apply_get_hooks(self, event):
 
109
                # Apply extension filters if we have an event
 
110
                if event is None:
 
111
                        return None
107
112
                
 
113
                # FIXME: We need a stable iteration order
 
114
                for ext in self.__extensions.itervalues():
 
115
                        event = ext.get_event_hook(event)
 
116
                        if event is None:
 
117
                                # The event has been blocked by
 
118
                                # the extension pretend it's
 
119
                                # not there
 
120
                                continue
 
121
                return event
 
122
        
 
123
        def apply_insert_hooks(self, event):
 
124
                # FIXME: We need a stable iteration order
 
125
                for ext in self.__extensions.itervalues():
 
126
                        event = ext.insert_event_hook(event)
 
127
                        if event is None:
 
128
                                # The event has been blocked by the extension
 
129
                                return None
 
130
                return event
 
131
        
108
132
        def __len__(self):
109
133
                return len(self.__extensions)
110
134
        
111
 
        def __iter__ (self):
112
 
                return self.__extensions.itervalues()
113
 
        
114
135
        @property
115
136
        def methods(self):
116
137
                return self.__methods