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) |