1 # copyright 2003-2014 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
1 # copyright 2003-2016 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
3 # |
3 # |
4 # This file is part of CubicWeb. |
4 # This file is part of CubicWeb. |
5 # |
5 # |
6 # CubicWeb is free software: you can redistribute it and/or modify it under the |
6 # CubicWeb is free software: you can redistribute it and/or modify it under the |
248 .. autoclass:: cubicweb.server.hook.LateOperation |
248 .. autoclass:: cubicweb.server.hook.LateOperation |
249 .. autoclass:: cubicweb.server.hook.DataOperationMixIn |
249 .. autoclass:: cubicweb.server.hook.DataOperationMixIn |
250 """ |
250 """ |
251 from __future__ import print_function |
251 from __future__ import print_function |
252 |
252 |
253 __docformat__ = "restructuredtext en" |
|
254 |
|
255 from warnings import warn |
|
256 from logging import getLogger |
253 from logging import getLogger |
257 from itertools import chain |
254 from itertools import chain |
258 |
255 |
259 from logilab.common.decorators import classproperty, cached |
256 from logilab.common.decorators import classproperty, cached |
260 from logilab.common.deprecation import deprecated, class_renamed |
257 from logilab.common.deprecation import deprecated, class_renamed |
264 |
261 |
265 from cubicweb import RegistryNotFound, server |
262 from cubicweb import RegistryNotFound, server |
266 from cubicweb.cwvreg import CWRegistry, CWRegistryStore |
263 from cubicweb.cwvreg import CWRegistry, CWRegistryStore |
267 from cubicweb.predicates import ExpectedValuePredicate, is_instance |
264 from cubicweb.predicates import ExpectedValuePredicate, is_instance |
268 from cubicweb.appobject import AppObject |
265 from cubicweb.appobject import AppObject |
|
266 |
269 |
267 |
270 ENTITIES_HOOKS = set(('before_add_entity', 'after_add_entity', |
268 ENTITIES_HOOKS = set(('before_add_entity', 'after_add_entity', |
271 'before_update_entity', 'after_update_entity', |
269 'before_update_entity', 'after_update_entity', |
272 'before_delete_entity', 'after_delete_entity')) |
270 'before_delete_entity', 'after_delete_entity')) |
273 RELATIONS_HOOKS = set(('before_add_relation', 'after_add_relation' , |
271 RELATIONS_HOOKS = set(('before_add_relation', 'after_add_relation' , |
274 'before_delete_relation','after_delete_relation')) |
272 'before_delete_relation','after_delete_relation')) |
275 SYSTEM_HOOKS = set(('server_backup', 'server_restore', |
273 SYSTEM_HOOKS = set(('server_backup', 'server_restore', |
276 'server_startup', 'server_maintenance', |
274 'server_startup', 'server_maintenance', |
277 'server_shutdown', 'before_server_shutdown', |
275 'server_shutdown', 'before_server_shutdown', |
278 'session_open', 'session_close')) |
276 'session_open', 'session_close')) |
|
277 |
279 ALL_HOOKS = ENTITIES_HOOKS | RELATIONS_HOOKS | SYSTEM_HOOKS |
278 ALL_HOOKS = ENTITIES_HOOKS | RELATIONS_HOOKS | SYSTEM_HOOKS |
|
279 |
280 |
280 |
281 def _iter_kwargs(entities, eids_from_to, kwargs): |
281 def _iter_kwargs(entities, eids_from_to, kwargs): |
282 if not entities and not eids_from_to: |
282 if not entities and not eids_from_to: |
283 yield kwargs |
283 yield kwargs |
284 elif entities: |
284 elif entities: |