mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 22:12:21 -04:00
pass utf8 to sqlite but don't clobber our original format
This commit is contained in:
parent
5ddc4c639e
commit
f56c2156a2
3 changed files with 8 additions and 12 deletions
|
@ -12,9 +12,10 @@ from anki.hooks import runHook
|
||||||
|
|
||||||
class DB(object):
|
class DB(object):
|
||||||
def __init__(self, path, text=None, timeout=0):
|
def __init__(self, path, text=None, timeout=0):
|
||||||
if isinstance(path, unicode):
|
encpath = path
|
||||||
path = path.encode("utf-8")
|
if isinstance(encpath, unicode):
|
||||||
self._db = sqlite.connect(path, timeout=timeout)
|
encpath = path.encode("utf-8")
|
||||||
|
self._db = sqlite.connect(encpath, timeout=timeout)
|
||||||
if text:
|
if text:
|
||||||
self._db.text_factory = text
|
self._db.text_factory = text
|
||||||
self._path = path
|
self._path = path
|
||||||
|
|
|
@ -37,7 +37,7 @@ class Upgrader(object):
|
||||||
|
|
||||||
def check(self, path):
|
def check(self, path):
|
||||||
"True if deck looks ok."
|
"True if deck looks ok."
|
||||||
with DB(self._utf8(path)) as db:
|
with DB(path) as db:
|
||||||
return self._check(db)
|
return self._check(db)
|
||||||
|
|
||||||
def _check(self, db):
|
def _check(self, db):
|
||||||
|
@ -111,17 +111,12 @@ f.id = cards.factId)"""):
|
||||||
|
|
||||||
def _openDB(self, path):
|
def _openDB(self, path):
|
||||||
self.tmppath = tmpfile(suffix=".anki2")
|
self.tmppath = tmpfile(suffix=".anki2")
|
||||||
shutil.copy(path, self._utf8(self.tmppath))
|
shutil.copy(path, self.tmppath)
|
||||||
self.db = DB(self.tmppath)
|
self.db = DB(self.tmppath)
|
||||||
|
|
||||||
def _openCol(self):
|
def _openCol(self):
|
||||||
self.col = _Collection(self.db)
|
self.col = _Collection(self.db)
|
||||||
|
|
||||||
def _utf8(self, txt):
|
|
||||||
if isinstance(txt, unicode):
|
|
||||||
return txt.encode("utf8")
|
|
||||||
return txt
|
|
||||||
|
|
||||||
# Schema upgrade
|
# Schema upgrade
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
|
|
|
@ -245,7 +245,7 @@ def tmpdir():
|
||||||
shutil.rmtree(_tmpdir)
|
shutil.rmtree(_tmpdir)
|
||||||
import atexit
|
import atexit
|
||||||
atexit.register(cleanup)
|
atexit.register(cleanup)
|
||||||
_tmpdir = os.path.join(tempfile.gettempdir(), "anki_temp")
|
_tmpdir = unicode(os.path.join(tempfile.gettempdir(), "anki_temp"), sys.getfilesystemencoding())
|
||||||
if not os.path.exists(_tmpdir):
|
if not os.path.exists(_tmpdir):
|
||||||
os.mkdir(_tmpdir)
|
os.mkdir(_tmpdir)
|
||||||
return _tmpdir
|
return _tmpdir
|
||||||
|
@ -253,7 +253,7 @@ def tmpdir():
|
||||||
def tmpfile(prefix="", suffix=""):
|
def tmpfile(prefix="", suffix=""):
|
||||||
(fd, name) = tempfile.mkstemp(dir=tmpdir(), prefix=prefix, suffix=suffix)
|
(fd, name) = tempfile.mkstemp(dir=tmpdir(), prefix=prefix, suffix=suffix)
|
||||||
os.close(fd)
|
os.close(fd)
|
||||||
return unicode(name, sys.getfilesystemencoding())
|
return name
|
||||||
|
|
||||||
def namedtmp(name, rm=True):
|
def namedtmp(name, rm=True):
|
||||||
"Return tmpdir+name. Deletes any existing file."
|
"Return tmpdir+name. Deletes any existing file."
|
||||||
|
|
Loading…
Reference in a new issue