35 class InitMetaAttrsHook(MetaDataHook): |
35 class InitMetaAttrsHook(MetaDataHook): |
36 """before create a new entity -> set creation and modification date |
36 """before create a new entity -> set creation and modification date |
37 |
37 |
38 this is a conveniency hook, you shouldn't have to disable it |
38 this is a conveniency hook, you shouldn't have to disable it |
39 """ |
39 """ |
40 __id__ = 'metaattrsinit' |
40 __regid__ = 'metaattrsinit' |
41 events = ('before_add_entity',) |
41 events = ('before_add_entity',) |
42 |
42 |
43 def __call__(self): |
43 def __call__(self): |
44 timestamp = datetime.now() |
44 timestamp = datetime.now() |
45 self.entity.setdefault('creation_date', timestamp) |
45 self.entity.setdefault('creation_date', timestamp) |
49 self.entity.setdefault('cwuri', cwuri) |
49 self.entity.setdefault('cwuri', cwuri) |
50 |
50 |
51 |
51 |
52 class UpdateMetaAttrsHook(MetaDataHook): |
52 class UpdateMetaAttrsHook(MetaDataHook): |
53 """update an entity -> set modification date""" |
53 """update an entity -> set modification date""" |
54 __id__ = 'metaattrsupdate' |
54 __regid__ = 'metaattrsupdate' |
55 events = ('before_update_entity',) |
55 events = ('before_update_entity',) |
56 |
56 |
57 def __call__(self): |
57 def __call__(self): |
58 self.entity.setdefault('modification_date', datetime.now()) |
58 self.entity.setdefault('modification_date', datetime.now()) |
59 |
59 |
69 session.add_relation(self.entity.eid, 'created_by', session.user.eid) |
69 session.add_relation(self.entity.eid, 'created_by', session.user.eid) |
70 |
70 |
71 |
71 |
72 class SetIsHook(MetaDataHook): |
72 class SetIsHook(MetaDataHook): |
73 """create a new entity -> set is relation""" |
73 """create a new entity -> set is relation""" |
74 __id__ = 'setis' |
74 __regid__ = 'setis' |
75 events = ('after_add_entity',) |
75 events = ('after_add_entity',) |
76 |
76 |
77 def __call__(self): |
77 def __call__(self): |
78 if hasattr(self.entity, '_cw_recreating'): |
78 if hasattr(self.entity, '_cw_recreating'): |
79 return |
79 return |
90 eschema_type_eid(session, etype)) |
90 eschema_type_eid(session, etype)) |
91 |
91 |
92 |
92 |
93 class SetOwnershipHook(MetaDataHook): |
93 class SetOwnershipHook(MetaDataHook): |
94 """create a new entity -> set owner and creator metadata""" |
94 """create a new entity -> set owner and creator metadata""" |
95 __id__ = 'setowner' |
95 __regid__ = 'setowner' |
96 events = ('after_add_entity',) |
96 events = ('after_add_entity',) |
97 |
97 |
98 def __call__(self): |
98 def __call__(self): |
99 asession = self._cw.actual_session() |
99 asession = self._cw.actual_session() |
100 if not asession.is_internal_session: |
100 if not asession.is_internal_session: |
112 |
112 |
113 class SyncCompositeOwner(MetaDataHook): |
113 class SyncCompositeOwner(MetaDataHook): |
114 """when adding composite relation, the composed should have the same owners |
114 """when adding composite relation, the composed should have the same owners |
115 has the composite |
115 has the composite |
116 """ |
116 """ |
117 __id__ = 'synccompositeowner' |
117 __regid__ = 'synccompositeowner' |
118 events = ('after_add_relation',) |
118 events = ('after_add_relation',) |
119 |
119 |
120 def __call__(self): |
120 def __call__(self): |
121 if self.rtype == 'wf_info_for': |
121 if self.rtype == 'wf_info_for': |
122 # skip this special composite relation # XXX (syt) why? |
122 # skip this special composite relation # XXX (syt) why? |
129 _SyncOwnersOp(self._cw, compositeeid=eidto, composedeid=eidfrom) |
129 _SyncOwnersOp(self._cw, compositeeid=eidto, composedeid=eidfrom) |
130 |
130 |
131 |
131 |
132 class FixUserOwnershipHook(MetaDataHook): |
132 class FixUserOwnershipHook(MetaDataHook): |
133 """when a user has been created, add owned_by relation on itself""" |
133 """when a user has been created, add owned_by relation on itself""" |
134 __id__ = 'fixuserowner' |
134 __regid__ = 'fixuserowner' |
135 __select__ = MetaDataHook.__select__ & entity_implements('CWUser') |
135 __select__ = MetaDataHook.__select__ & entity_implements('CWUser') |
136 events = ('after_add_entity',) |
136 events = ('after_add_entity',) |
137 |
137 |
138 def __call__(self): |
138 def __call__(self): |
139 self._cw.add_relation(self.entity.eid, 'owned_by', self.entity.eid) |
139 self._cw.add_relation(self.entity.eid, 'owned_by', self.entity.eid) |
140 |
140 |
141 |
141 |
142 class UpdateFTIHook(MetaDataHook): |
142 class UpdateFTIHook(MetaDataHook): |
143 """sync fulltext index when relevant relation is added / removed |
143 """sync fulltext index when relevant relation is added / removed |
144 """ |
144 """ |
145 __id__ = 'updateftirel' |
145 __regid__ = 'updateftirel' |
146 events = ('after_add_relation', 'after_delete_relation') |
146 events = ('after_add_relation', 'after_delete_relation') |
147 |
147 |
148 def __call__(self): |
148 def __call__(self): |
149 rtype = self.rtype |
149 rtype = self.rtype |
150 session = self._cw |
150 session = self._cw |