~moovida-developers/storm/elisa_twisted

« back to all changes in this revision

Viewing changes to storm/twisted/store.py

  • Committer: Florian Boucault
  • Date: 2009-05-13 01:45:39 UTC
  • Revision ID: kaleo@eva-20090513014539-b5u9r4mqe11wno4k
Removed auto reload.

Show diffs side-by-side

added added

removed removed

Lines of Context:
114
114
    """
115
115
    store = None
116
116
 
117
 
    def __init__(self, database, auto_reload=True):
 
117
    def __init__(self, database):
118
118
        """
119
119
        @param database: instance of database providing connection, used to
120
120
            instantiate the store later.
121
121
        @type database: L{storm.database.Database}
122
 
        @param auto_reload: should the store reload all the lazy
123
 
                            attributes kept in the store cache. This is
124
 
                            a performance tweak option that you should
125
 
                            only set to False if you don't want to do any
126
 
                            raw sql inside a transaction. If you set it
127
 
                            to False but do raw sql request be aware of
128
 
                            the fact that the cached object might not be
129
 
                            in a state reflecting the database.
130
 
        @type auto_reload: bool
131
122
        """
132
123
        self.thread = StoreThread()
133
124
        self.database = database
134
125
        self.started = False
135
 
        self.auto_reload = auto_reload
136
126
 
137
127
 
138
128
    def start(self):
169
159
            setattr(self, methodName, method)
170
160
        self.store.invalidate = self.invalidate
171
161
 
172
 
        # disable lazy resolving
173
 
        self.store._enable_lazy_resolving = lambda x: None
174
 
 
175
 
        # set up some methods we want to have auto reload on
176
 
        for methodName in ("flush", "add", "rollback"):
177
 
            method = self.decorate_method(getattr(self.store, methodName))
178
 
            setattr(self.store, methodName, method)
179
 
 
180
 
    def decorate_method(self, method):
181
 
         def decorate(*args,**kw):
182
 
            result = method(*args, **kw)
183
 
            if self.auto_reload:
184
 
                self._reload_alives()
185
 
            return result
186
 
         return decorate
187
 
 
188
 
    def _reload_alives(self):
189
 
        self.store.block_implicit_flushes()
190
 
        for obj_info in self.store._alive.itervalues():
191
 
            self.store._resolve_lazy_value(obj_info, None, AutoReload)
192
 
        self.store.unblock_implicit_flushes()
193
162
 
194
163
    def get(self, cls, key):
195
164
        """