server/sources/extlite.py
changeset 2759 23d7a75693f8
parent 2625 d6012db7b93e
child 2771 8074dd88e21b
equal deleted inserted replaced
2758:8a54f91a43e1 2759:23d7a75693f8
     9 
     9 
    10 
    10 
    11 from os.path import join, exists
    11 from os.path import join, exists
    12 
    12 
    13 from cubicweb import server
    13 from cubicweb import server
    14 from cubicweb.server.sqlutils import (SQL_PREFIX, SQLAdapterMixIn, sqlexec,
    14 from cubicweb.server.sqlutils import SQL_PREFIX, SQLAdapterMixIn, sqlexec
    15                                       sql_source_backup, sql_source_restore)
       
    16 from cubicweb.server.sources import native, rql2sql
    15 from cubicweb.server.sources import native, rql2sql
    17 from cubicweb.server.sources import AbstractSource, dbg_st_search, dbg_results
    16 from cubicweb.server.sources import AbstractSource, dbg_st_search, dbg_results
    18 
    17 
    19 class ConnectionWrapper(object):
    18 class ConnectionWrapper(object):
    20     def __init__(self, source=None):
    19     def __init__(self, source=None):
    92         self._need_sql_create = not exists(dbpath)
    91         self._need_sql_create = not exists(dbpath)
    93         self._need_full_import = self._need_sql_create
    92         self._need_full_import = self._need_sql_create
    94         AbstractSource.__init__(self, repo, appschema, source_config,
    93         AbstractSource.__init__(self, repo, appschema, source_config,
    95                                 *args, **kwargs)
    94                                 *args, **kwargs)
    96 
    95 
    97     def backup(self, confirm, backupfile=None, timestamp=None, askconfirm=False):
    96     def backup(self, backupfile):
    98         """method called to create a backup of source's data"""
    97         """method called to create a backup of the source's data"""
    99         backupfile = self.backup_file(backupfile, timestamp)
    98         self.close_pool_connections()
   100         sql_source_backup(self, self.sqladapter, confirm, backupfile,
    99         try:
   101                           askconfirm)
   100             self.sqladapter.backup_to_file(backupfile)
   102 
   101         finally:
   103     def restore(self, confirm, backupfile=None, timestamp=None, drop=True,
   102             self.open_pool_connections()
   104                askconfirm=False):
   103 
       
   104     def restore(self, backupfile, drop):
   105         """method called to restore a backup of source's data"""
   105         """method called to restore a backup of source's data"""
   106         backupfile = self.backup_file(backupfile, timestamp)
   106         self.close_pool_connections()
   107         sql_source_restore(self, self.sqladapter, confirm, backupfile, drop,
   107         try:
   108                            askconfirm)
   108             self.sqladapter.restore_from_file(backupfile, drop)
       
   109         finally:
       
   110             self.open_pool_connections()
   109 
   111 
   110     @property
   112     @property
   111     def _sqlcnx(self):
   113     def _sqlcnx(self):
   112         # XXX: sqlite connections can only be used in the same thread, so
   114         # XXX: sqlite connections can only be used in the same thread, so
   113         #      create a new one each time necessary. If it appears to be time
   115         #      create a new one each time necessary. If it appears to be time