@@ -144,6 +144,10 @@ def _check_ok_bindata(self, el):
144144 data = self .get_bindata (el .node , el .key , el .start , el .end )
145145 return data == el .data
146146
147+ def _check_ok_trigger (self , el ):
148+ node = self .get (el .node )
149+ return node .triggers .get (el .key ) == el .state
150+
147151 def _check_ok_list (self , el ):
148152 nodes = self .get_list_raw (el .parent , el .tags , el .pos_filter )
149153 return el .nodes == nodes
@@ -159,6 +163,7 @@ def checks_ok(self, checks):
159163 check .CheckData : self ._check_ok_data ,
160164 check .CheckBinDataSize : self ._check_ok_bindata_size ,
161165 check .CheckBinData : self ._check_ok_bindata ,
166+ check .CheckTrigger : self ._check_ok_trigger ,
162167 check .CheckList : self ._check_ok_list ,
163168 }
164169 try :
@@ -290,6 +295,18 @@ def _op_set_bindata(self, xact, op, dbnode):
290295 else :
291296 del dbnode .node .bindata [op .key ]
292297
298+ def _op_add_trigger (self , xact , op , dbnode ):
299+ if dbnode .node is None :
300+ raise ObjectGoneError ()
301+ # XXX
302+ raise NotImplementedError
303+
304+ def _op_del_trigger (self , xact , op , dbnode ):
305+ if dbnode .node is None :
306+ raise ObjectGoneError ()
307+ # XXX
308+ raise NotImplementedError
309+
293310 def transaction (self , checks , ops ):
294311 if not self .checks_ok (checks ):
295312 raise PreconditionFailedError ()
@@ -304,6 +321,8 @@ def transaction(self, checks, ops):
304321 operation .OperationSetAttr : self ._op_set_attr ,
305322 operation .OperationSetData : self ._op_set_data ,
306323 operation .OperationSetBinData : self ._op_set_bindata ,
324+ operation .OperationAddTrigger : self ._op_add_trigger ,
325+ operation .OperationDelTrigger : self ._op_del_trigger ,
307326 }
308327 for op in ops :
309328 dbnode = self .get_cached_node (op .node )
0 commit comments