diff -r caef98aa4a98 -r 59220b704562 __init__.py --- a/__init__.py Thu Sep 17 19:38:04 2009 +0200 +++ b/__init__.py Fri Sep 18 11:24:37 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): @@ -191,18 +212,9 @@ userinfo['email'] = "" return userinfo user = self.actual_session().user - rql = "Any F,S,A where U eid %(x)s, U firstname F, U surname S, U primary_email E, E address A" - try: - firstname, lastname, email = self.execute(rql, {'x': user.eid}, 'x')[0] - if firstname is None and lastname is None: - userinfo['name'] = '' - else: - userinfo['name'] = ("%s %s" % (firstname, lastname)) - userinfo['email'] = email - except IndexError: - userinfo['name'] = None - userinfo['email'] = None userinfo['login'] = user.login + userinfo['name'] = user.name() + userinfo['email'] = user.get_email() return userinfo def is_internal_session(self):