devtools/testlib.py
changeset 4016 250784a2d105
parent 3998 94cc7cad3d2d
child 4036 137be4878127
equal deleted inserted replaced
4015:4f8235204dda 4016:250784a2d105
   350 
   350 
   351     # other utilities #########################################################
   351     # other utilities #########################################################
   352 
   352 
   353     def entity(self, rql, args=None, eidkey=None, req=None):
   353     def entity(self, rql, args=None, eidkey=None, req=None):
   354         return self.execute(rql, args, eidkey, req=req).get_entity(0, 0)
   354         return self.execute(rql, args, eidkey, req=req).get_entity(0, 0)
   355 
       
   356     def add_entity(self, etype, req=None, **kwargs):
       
   357         rql = ['INSERT %s X' % etype]
       
   358         # dict for replacement in RQL Request
       
   359         args = {}
       
   360         if kwargs:
       
   361             rql.append(':')
       
   362             # dict to define new entities variables
       
   363             entities = {}
       
   364             # assignement part of the request
       
   365             sub_rql = []
       
   366             for key, value in kwargs.iteritems():
       
   367                 # entities
       
   368                 if hasattr(value, 'eid'):
       
   369                     new_value = "%s__" % key.upper()
       
   370                     entities[new_value] = value.eid
       
   371                     args[new_value] = value.eid
       
   372 
       
   373                     sub_rql.append("X %s %s" % (key, new_value))
       
   374                 # final attributes
       
   375                 else:
       
   376                     sub_rql.append('X %s %%(%s)s' % (key, key))
       
   377                     args[key] = value
       
   378             rql.append(', '.join(sub_rql))
       
   379             if entities:
       
   380                 rql.append('WHERE')
       
   381                 # WHERE part of the request (to link entity to they eid)
       
   382                 sub_rql = []
       
   383                 for key, value in entities.iteritems():
       
   384                     sub_rql.append("%s eid %%(%s)s" % (key, key))
       
   385                 rql.append(', '.join(sub_rql))
       
   386         return self.execute(' '.join(rql), args, req=req).get_entity(0, 0)
       
   387 
   355 
   388     # vregistry inspection utilities ###########################################
   356     # vregistry inspection utilities ###########################################
   389 
   357 
   390     def pviews(self, req, rset):
   358     def pviews(self, req, rset):
   391         return sorted((a.__regid__, a.__class__)
   359         return sorted((a.__regid__, a.__class__)
   686             return None
   654             return None
   687         validator = validatorclass()
   655         validator = validatorclass()
   688         return validator.parse_string(output.strip())
   656         return validator.parse_string(output.strip())
   689 
   657 
   690     # deprecated ###############################################################
   658     # deprecated ###############################################################
       
   659 
       
   660     @deprecated('[3.6] use self.request().create_entity(...)')
       
   661     def add_entity(self, etype, req=None, **kwargs):
       
   662         if req is None:
       
   663             req = self.request()
       
   664         return req.create_entity(etype, **kwargs)
   691 
   665 
   692     @deprecated('[3.4] use self.vreg["etypes"].etype_class(etype)(self.request())')
   666     @deprecated('[3.4] use self.vreg["etypes"].etype_class(etype)(self.request())')
   693     def etype_instance(self, etype, req=None):
   667     def etype_instance(self, etype, req=None):
   694         req = req or self.request()
   668         req = req or self.request()
   695         e = self.vreg['etypes'].etype_class(etype)(req)
   669         e = self.vreg['etypes'].etype_class(etype)(req)