devtools/__init__.py
changeset 7536 29961a416faa
parent 7514 32081892850e
parent 7520 b7456b454334
child 7722 fb231d62adda
equal deleted inserted replaced
7534:d58a9d96aad8 7536:29961a416faa
   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