# HG changeset patch # User Sylvain Thénault # Date 1250782385 -7200 # Node ID 662f35236d1cb4c9350cf0ce3d13bca7dcb9c0b9 # Parent 452b4c9ee61d89fc42a377c1eeddbeb35bf1900b new create_entity method, temporarily on base request (later on cw entity manager or as factory method) diff -r 452b4c9ee61d -r 662f35236d1c __init__.py --- a/__init__.py Wed Aug 19 11:48:55 2009 +0200 +++ b/__init__.py Thu Aug 20 17:33:05 2009 +0200 @@ -121,6 +121,27 @@ raise KeyError def set_entity_cache(self, entity): pass + + def create_entity(self, etype, *args, **kwargs): + """add a new entity of the given type""" + rql = 'INSERT %s X' % etype + relations = [] + restrictions = [] + cachekey = [] + for rtype, rvar in args: + relations.append('X %s %s' % (rtype, rvar)) + restrictions.append('%s eid %%(%s)s' % (rvar, rvar)) + cachekey.append(rvar) + for attr in kwargs: + if attr in cachekey: + continue + relations.append('X %s %%(%s)s' % (attr, attr)) + if relations: + rql = '%s: %s' % (rql, ', '.join(relations)) + if restrictions: + rql = '%s WHERE %s' % (rql, ', '.join(restrictions)) + return self.execute(rql, kwargs, cachekey).get_entity(0, 0) + # url generation methods ################################################## def build_url(self, *args, **kwargs):