req.py
changeset 4835 13b0b96d7982
parent 4466 8b0ca7904820
child 4850 bd640b137f50
equal deleted inserted replaced
4834:b718626a0e60 4835:13b0b96d7982
    19 from cubicweb.rset import ResultSet
    19 from cubicweb.rset import ResultSet
    20 
    20 
    21 ONESECOND = timedelta(0, 1, 0)
    21 ONESECOND = timedelta(0, 1, 0)
    22 CACHE_REGISTRY = {}
    22 CACHE_REGISTRY = {}
    23 
    23 
       
    24 
       
    25 def _check_cw_unsafe(kwargs):
       
    26     if kwargs.pop('_cw_unsafe', False):
       
    27         warn('[3.7] _cw_unsafe argument is deprecated, now unsafe by '
       
    28              'default, control it using cw_[read|write]_security.',
       
    29              DeprecationWarning, stacklevel=3)
    24 
    30 
    25 class Cache(dict):
    31 class Cache(dict):
    26     def __init__(self):
    32     def __init__(self):
    27         super(Cache, self).__init__()
    33         super(Cache, self).__init__()
    28         _now = datetime.now()
    34         _now = datetime.now()
   108         pass
   114         pass
   109 
   115 
   110     # XXX move to CWEntityManager or even better as factory method (unclear
   116     # XXX move to CWEntityManager or even better as factory method (unclear
   111     # where yet...)
   117     # where yet...)
   112 
   118 
   113     def create_entity(self, etype, _cw_unsafe=False, **kwargs):
   119     def create_entity(self, etype, **kwargs):
   114         """add a new entity of the given type
   120         """add a new entity of the given type
   115 
   121 
   116         Example (in a shell session):
   122         Example (in a shell session):
   117 
   123 
   118         c = create_entity('Company', name=u'Logilab')
   124         >>> c = create_entity('Company', name=u'Logilab')
   119         create_entity('Person', works_for=c, firstname=u'John', lastname=u'Doe')
   125         >>> create_entity('Person', firstname=u'John', lastname=u'Doe',
   120 
   126         ...               works_for=c)
   121         """
   127 
   122         if _cw_unsafe:
   128         """
   123             execute = self.unsafe_execute
   129         _check_cw_unsafe(kwargs)
   124         else:
   130         execute = self.execute
   125             execute = self.execute
       
   126         rql = 'INSERT %s X' % etype
   131         rql = 'INSERT %s X' % etype
   127         relations = []
   132         relations = []
   128         restrictions = set()
   133         restrictions = set()
   129         cachekey = []
   134         cachekey = []
   130         pending_relations = []
   135         pending_relations = []
   160                 restr = 'Y %s X' % attr[len('reverse_'):]
   165                 restr = 'Y %s X' % attr[len('reverse_'):]
   161             else:
   166             else:
   162                 restr = 'X %s Y' % attr
   167                 restr = 'X %s Y' % attr
   163             execute('SET %s WHERE X eid %%(x)s, Y eid IN (%s)' % (
   168             execute('SET %s WHERE X eid %%(x)s, Y eid IN (%s)' % (
   164                 restr, ','.join(str(r.eid) for r in values)),
   169                 restr, ','.join(str(r.eid) for r in values)),
   165                          {'x': created.eid}, 'x')
   170                     {'x': created.eid}, 'x', build_descr=False)
   166         return created
   171         return created
   167 
   172 
   168     def ensure_ro_rql(self, rql):
   173     def ensure_ro_rql(self, rql):
   169         """raise an exception if the given rql is not a select query"""
   174         """raise an exception if the given rql is not a select query"""
   170         first = rql.split(' ', 1)[0].lower()
   175         first = rql.split(' ', 1)[0].lower()
   279         if self.is_internal_session:
   284         if self.is_internal_session:
   280             userinfo['login'] = "cubicweb"
   285             userinfo['login'] = "cubicweb"
   281             userinfo['name'] = "cubicweb"
   286             userinfo['name'] = "cubicweb"
   282             userinfo['email'] = ""
   287             userinfo['email'] = ""
   283             return userinfo
   288             return userinfo
   284         user = self.actual_session().user
   289         user = self.user
   285         userinfo['login'] = user.login
   290         userinfo['login'] = user.login
   286         userinfo['name'] = user.name()
   291         userinfo['name'] = user.name()
   287         userinfo['email'] = user.get_email()
   292         userinfo['email'] = user.get_email()
   288         return userinfo
   293         return userinfo
   289 
   294