25 import os.path as osp |
25 import os.path as osp |
26 import shutil |
26 import shutil |
27 import tempfile |
27 import tempfile |
28 |
28 |
29 from cubicweb import Binary, QueryError |
29 from cubicweb import Binary, QueryError |
30 from cubicweb.selectors import implements |
30 from cubicweb.selectors import is_instance |
31 from cubicweb.server.sources import storages |
31 from cubicweb.server.sources import storages |
32 from cubicweb.server.hook import Hook, Operation |
32 from cubicweb.server.hook import Hook, Operation |
33 |
33 |
34 class DummyBeforeHook(Hook): |
34 class DummyBeforeHook(Hook): |
35 __regid__ = 'dummy-before-hook' |
35 __regid__ = 'dummy-before-hook' |
36 __select__ = Hook.__select__ & implements('File') |
36 __select__ = Hook.__select__ & is_instance('File') |
37 events = ('before_add_entity',) |
37 events = ('before_add_entity',) |
38 |
38 |
39 def __call__(self): |
39 def __call__(self): |
40 self._cw.transaction_data['orig_file_value'] = self.entity.data.getvalue() |
40 self._cw.transaction_data['orig_file_value'] = self.entity.data.getvalue() |
41 |
41 |
42 |
42 |
43 class DummyAfterHook(Hook): |
43 class DummyAfterHook(Hook): |
44 __regid__ = 'dummy-after-hook' |
44 __regid__ = 'dummy-after-hook' |
45 __select__ = Hook.__select__ & implements('File') |
45 __select__ = Hook.__select__ & is_instance('File') |
46 events = ('after_add_entity',) |
46 events = ('after_add_entity',) |
47 |
47 |
48 def __call__(self): |
48 def __call__(self): |
49 # new value of entity.data should be the same as before |
49 # new value of entity.data should be the same as before |
50 oldvalue = self._cw.transaction_data['orig_file_value'] |
50 oldvalue = self._cw.transaction_data['orig_file_value'] |