equal
deleted
inserted
replaced
526 def helper(self): |
526 def helper(self): |
527 from logilab.database import get_db_helper |
527 from logilab.database import get_db_helper |
528 return get_db_helper('postgres') |
528 return get_db_helper('postgres') |
529 |
529 |
530 @property |
530 @property |
531 @cached |
|
532 def dbcnx(self): |
531 def dbcnx(self): |
533 from cubicweb.server.serverctl import _db_sys_cnx |
532 try: |
534 return _db_sys_cnx(self.system_source, 'CREATE DATABASE and / or USER', |
533 return self._cnx |
535 interactive=False) |
534 except AttributeError: |
|
535 from cubicweb.server.serverctl import _db_sys_cnx |
|
536 try: |
|
537 self._cnx = _db_sys_cnx( |
|
538 self.system_source, 'CREATE DATABASE and / or USER', |
|
539 interactive=False) |
|
540 return self._cnx |
|
541 except Exception: |
|
542 self._cnx = None |
|
543 raise |
536 |
544 |
537 @property |
545 @property |
538 @cached |
546 @cached |
539 def cursor(self): |
547 def cursor(self): |
540 return self.dbcnx.cursor() |
548 return self.dbcnx.cursor() |
568 finally: |
576 finally: |
569 templcursor.close() |
577 templcursor.close() |
570 cnx.close() |
578 cnx.close() |
571 init_repository(self.config, interactive=False) |
579 init_repository(self.config, interactive=False) |
572 except: |
580 except: |
573 self.dbcnx.rollback() |
581 if self.dbcnx is not None: |
|
582 self.dbcnx.rollback() |
574 print >> sys.stderr, 'building', self.dbname, 'failed' |
583 print >> sys.stderr, 'building', self.dbname, 'failed' |
575 #self._drop(self.dbname) |
584 #self._drop(self.dbname) |
576 raise |
585 raise |
577 |
586 |
578 def helper_clear_cache(self): |
587 def helper_clear_cache(self): |
579 self.dbcnx.commit() |
588 if self.dbcnx is not None: |
580 self.dbcnx.close() |
589 self.dbcnx.commit() |
581 clear_cache(self, 'dbcnx') |
590 self.dbcnx.close() |
|
591 del self._cnx |
|
592 clear_cache(self, 'cursor') |
582 clear_cache(self, 'helper') |
593 clear_cache(self, 'helper') |
583 clear_cache(self, 'cursor') |
|
584 |
594 |
585 def __del__(self): |
595 def __del__(self): |
586 self.helper_clear_cache() |
596 self.helper_clear_cache() |
587 |
597 |
588 @property |
598 @property |