equal
deleted
inserted
replaced
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 |