__init__.py
branchstable
changeset 3315 59220b704562
parent 3111 7b405bb305ab
child 3163 edfe43ceaa35
child 3601 d77025be6f06
equal deleted inserted replaced
3298:caef98aa4a98 3315:59220b704562
   119 
   119 
   120     def entity_cache(self, eid):
   120     def entity_cache(self, eid):
   121         raise KeyError
   121         raise KeyError
   122     def set_entity_cache(self, entity):
   122     def set_entity_cache(self, entity):
   123         pass
   123         pass
       
   124 
       
   125     def create_entity(self, etype, *args, **kwargs):
       
   126         """add a new entity of the given type"""
       
   127         rql = 'INSERT %s X' % etype
       
   128         relations = []
       
   129         restrictions = []
       
   130         cachekey = []
       
   131         for rtype, rvar in args:
       
   132             relations.append('X %s %s' % (rtype, rvar))
       
   133             restrictions.append('%s eid %%(%s)s' % (rvar, rvar))
       
   134             cachekey.append(rvar)
       
   135         for attr in kwargs:
       
   136             if attr in cachekey:
       
   137                 continue
       
   138             relations.append('X %s %%(%s)s' % (attr, attr))
       
   139         if relations:
       
   140             rql = '%s: %s' % (rql, ', '.join(relations))
       
   141         if restrictions:
       
   142             rql = '%s WHERE %s' % (rql, ', '.join(restrictions))
       
   143         return self.execute(rql, kwargs, cachekey).get_entity(0, 0)
       
   144 
   124     # url generation methods ##################################################
   145     # url generation methods ##################################################
   125 
   146 
   126     def build_url(self, *args, **kwargs):
   147     def build_url(self, *args, **kwargs):
   127         """return an absolute URL using params dictionary key/values as URL
   148         """return an absolute URL using params dictionary key/values as URL
   128         parameters. Values are automatically URL quoted, and the
   149         parameters. Values are automatically URL quoted, and the
   189             userinfo['login'] = "cubicweb"
   210             userinfo['login'] = "cubicweb"
   190             userinfo['name'] = "cubicweb"
   211             userinfo['name'] = "cubicweb"
   191             userinfo['email'] = ""
   212             userinfo['email'] = ""
   192             return userinfo
   213             return userinfo
   193         user = self.actual_session().user
   214         user = self.actual_session().user
   194         rql = "Any F,S,A where U eid %(x)s, U firstname F, U surname S, U primary_email E, E address A"
       
   195         try:
       
   196             firstname, lastname, email = self.execute(rql, {'x': user.eid}, 'x')[0]
       
   197             if firstname is None and lastname is None:
       
   198                 userinfo['name'] = ''
       
   199             else:
       
   200                 userinfo['name'] = ("%s %s" % (firstname, lastname))
       
   201             userinfo['email'] = email
       
   202         except IndexError:
       
   203             userinfo['name'] = None
       
   204             userinfo['email'] = None
       
   205         userinfo['login'] = user.login
   215         userinfo['login'] = user.login
       
   216         userinfo['name'] = user.name()
       
   217         userinfo['email'] = user.get_email()
   206         return userinfo
   218         return userinfo
   207 
   219 
   208     def is_internal_session(self):
   220     def is_internal_session(self):
   209         """overrided on the server-side"""
   221         """overrided on the server-side"""
   210         return False
   222         return False