272 |
272 |
273 def _close_access(self): |
273 def _close_access(self): |
274 while self._open_access: |
274 while self._open_access: |
275 self._open_access.pop().close() |
275 self._open_access.pop().close() |
276 |
276 |
277 @deprecated('[4.0] explicitly use RepoAccess object in test instead') |
277 @deprecated('[3.19] explicitly use RepoAccess object in test instead') |
278 def set_cnx(self, cnx): |
278 def set_cnx(self, cnx): |
279 """""" |
279 """""" |
280 # XXX we want to deprecate this |
280 # XXX we want to deprecate this |
281 assert getattr(cnx, '_session', None) is not None |
281 assert getattr(cnx, '_session', None) is not None |
282 if cnx is self._admin_clt_cnx: |
282 if cnx is self._admin_clt_cnx: |
318 session._Session__threaddata.cnx = self._admin_clt_cnx._cnx |
318 session._Session__threaddata.cnx = self._admin_clt_cnx._cnx |
319 session.set_cnxset() |
319 session.set_cnxset() |
320 return session |
320 return session |
321 |
321 |
322 @property |
322 @property |
323 @deprecated('[4.0] explicitly use RepoAccess object in test instead') |
323 @deprecated('[3.19] explicitly use RepoAccess object in test instead') |
324 def websession(self): |
324 def websession(self): |
325 return self.session |
325 return self.session |
326 |
326 |
327 @property |
327 @property |
328 @deprecated('[4.0] explicitly use RepoAccess object in test instead') |
328 @deprecated('[3.19] explicitly use RepoAccess object in test instead') |
329 def adminsession(self): |
329 def adminsession(self): |
330 """return current server side session (using default manager account)""" |
330 """return current server side session (using default manager account)""" |
331 return self._admin_session |
331 return self._admin_session |
332 |
332 |
333 @deprecated('[4.0] explicitly use RepoAccess object in test instead') |
333 @deprecated('[3.19] explicitly use RepoAccess object in test instead') |
334 def login(self, login, **kwargs): |
334 def login(self, login, **kwargs): |
335 """return a connection for the given login/password""" |
335 """return a connection for the given login/password""" |
336 __ = kwargs.pop('autoclose', True) # not used anymore |
336 __ = kwargs.pop('autoclose', True) # not used anymore |
337 if login == self.admlogin: |
337 if login == self.admlogin: |
338 # definitly don't want autoclose when used as a context manager |
338 # definitly don't want autoclose when used as a context manager |
343 clt_cnx = repoapi.connect(self.repo, login, **kwargs) |
343 clt_cnx = repoapi.connect(self.repo, login, **kwargs) |
344 self.set_cnx(clt_cnx) |
344 self.set_cnx(clt_cnx) |
345 clt_cnx.__enter__() |
345 clt_cnx.__enter__() |
346 return TestCaseConnectionProxy(self, clt_cnx) |
346 return TestCaseConnectionProxy(self, clt_cnx) |
347 |
347 |
348 @deprecated('[4.0] explicitly use RepoAccess object in test instead') |
348 @deprecated('[3.19] explicitly use RepoAccess object in test instead') |
349 def restore_connection(self): |
349 def restore_connection(self): |
350 self._pop_custom_cnx() |
350 self._pop_custom_cnx() |
351 |
351 |
352 def _pop_custom_cnx(self): |
352 def _pop_custom_cnx(self): |
353 if self._current_clt_cnx is not None: |
353 if self._current_clt_cnx is not None: |
381 self.config.repository = lambda x=None: self.repo |
381 self.config.repository = lambda x=None: self.repo |
382 |
382 |
383 # db api ################################################################## |
383 # db api ################################################################## |
384 |
384 |
385 @nocoverage |
385 @nocoverage |
386 @deprecated('[4.0] explicitly use RepoAccess object in test instead') |
386 @deprecated('[3.19] explicitly use RepoAccess object in test instead') |
387 def cursor(self, req=None): |
387 def cursor(self, req=None): |
388 if req is not None: |
388 if req is not None: |
389 return req.cnx |
389 return req.cnx |
390 else: |
390 else: |
391 return self.cnx |
391 return self.cnx |
392 |
392 |
393 @nocoverage |
393 @nocoverage |
394 @deprecated('[4.0] explicitly use RepoAccess object in test instead') |
394 @deprecated('[3.19] explicitly use RepoAccess object in test instead') |
395 def execute(self, rql, args=None, req=None): |
395 def execute(self, rql, args=None, req=None): |
396 """executes <rql>, builds a resultset, and returns a couple (rset, req) |
396 """executes <rql>, builds a resultset, and returns a couple (rset, req) |
397 where req is a FakeRequest |
397 where req is a FakeRequest |
398 """ |
398 """ |
399 req = req or self.request(rql=rql) |
399 req = req or self.request(rql=rql) |
400 return req.execute(unicode(rql), args) |
400 return req.execute(unicode(rql), args) |
401 |
401 |
402 @nocoverage |
402 @nocoverage |
403 @deprecated('[4.0] explicitly use RepoAccess object in test instead') |
403 @deprecated('[3.19] explicitly use RepoAccess object in test instead') |
404 def commit(self): |
404 def commit(self): |
405 try: |
405 try: |
406 return self.cnx.commit() |
406 return self.cnx.commit() |
407 finally: |
407 finally: |
408 self.session.set_cnxset() # ensure cnxset still set after commit |
408 self.session.set_cnxset() # ensure cnxset still set after commit |
409 |
409 |
410 @nocoverage |
410 @nocoverage |
411 @deprecated('[4.0] explicitly use RepoAccess object in test instead') |
411 @deprecated('[3.19] explicitly use RepoAccess object in test instead') |
412 def rollback(self): |
412 def rollback(self): |
413 try: |
413 try: |
414 self.cnx.rollback() |
414 self.cnx.rollback() |
415 except dbapi.ProgrammingError: |
415 except dbapi.ProgrammingError: |
416 pass # connection closed |
416 pass # connection closed |
417 finally: |
417 finally: |
418 self.session.set_cnxset() # ensure cnxset still set after commit |
418 self.session.set_cnxset() # ensure cnxset still set after commit |
419 |
419 |
420 requestcls = fake.FakeRequest |
420 requestcls = fake.FakeRequest |
421 @deprecated('[4.0] explicitly use RepoAccess object in test instead') |
421 @deprecated('[3.19] explicitly use RepoAccess object in test instead') |
422 def request(self, rollbackfirst=False, url=None, headers={}, **kwargs): |
422 def request(self, rollbackfirst=False, url=None, headers={}, **kwargs): |
423 """return a web ui request""" |
423 """return a web ui request""" |
424 if rollbackfirst: |
424 if rollbackfirst: |
425 self.cnx.rollback() |
425 self.cnx.rollback() |
426 req = self.requestcls(self.vreg, url=url, headers=headers, form=kwargs) |
426 req = self.requestcls(self.vreg, url=url, headers=headers, form=kwargs) |
427 req.set_cnx(self.cnx) |
427 req.set_cnx(self.cnx) |
428 return req |
428 return req |
429 |
429 |
430 # server side db api ####################################################### |
430 # server side db api ####################################################### |
431 |
431 |
432 @deprecated('[4.0] explicitly use RepoAccess object in test instead') |
432 @deprecated('[3.19] explicitly use RepoAccess object in test instead') |
433 def sexecute(self, rql, args=None): |
433 def sexecute(self, rql, args=None): |
434 self.session.set_cnxset() |
434 self.session.set_cnxset() |
435 return self.session.execute(rql, args) |
435 return self.session.execute(rql, args) |
436 |
436 |
437 |
437 |