mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 14:32:22 -04:00
Ensure profile name is treated in a case-insensitive manner (#3372)
This commit is contained in:
parent
7ea573b004
commit
83f044491b
1 changed files with 14 additions and 7 deletions
|
@ -213,7 +213,8 @@ class ProfileManager:
|
||||||
if name == "_global":
|
if name == "_global":
|
||||||
raise Exception("_global is not a valid name")
|
raise Exception("_global is not a valid name")
|
||||||
data = self.db.scalar(
|
data = self.db.scalar(
|
||||||
"select cast(data as blob) from profiles where name = ?", name
|
"select cast(data as blob) from profiles where name = ? collate nocase",
|
||||||
|
name,
|
||||||
)
|
)
|
||||||
self.name = name
|
self.name = name
|
||||||
try:
|
try:
|
||||||
|
@ -232,22 +233,26 @@ class ProfileManager:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def save(self) -> None:
|
def save(self) -> None:
|
||||||
sql = "update profiles set data = ? where name = ?"
|
sql = "update profiles set data = ? where name = ? collate nocase"
|
||||||
self.db.execute(sql, self._pickle(self.profile), self.name)
|
self.db.execute(sql, self._pickle(self.profile), self.name)
|
||||||
self.db.execute(sql, self._pickle(self.meta), "_global")
|
self.db.execute(sql, self._pickle(self.meta), "_global")
|
||||||
self.db.commit()
|
self.db.commit()
|
||||||
|
|
||||||
def create(self, name: str) -> None:
|
def create(self, name: str) -> None:
|
||||||
prof = profileConf.copy()
|
prof = profileConf.copy()
|
||||||
|
if self.db.scalar("select 1 from profiles where name = ? collate nocase", name):
|
||||||
|
return
|
||||||
self.db.execute(
|
self.db.execute(
|
||||||
"insert or ignore into profiles values (?, ?)", name, self._pickle(prof)
|
"insert or ignore into profiles values (?, ?)",
|
||||||
|
name,
|
||||||
|
self._pickle(prof),
|
||||||
)
|
)
|
||||||
self.db.commit()
|
self.db.commit()
|
||||||
|
|
||||||
def remove(self, name: str) -> None:
|
def remove(self, name: str) -> None:
|
||||||
path = self.profileFolder(create=False)
|
path = self.profileFolder(create=False)
|
||||||
send_to_trash(Path(path))
|
send_to_trash(Path(path))
|
||||||
self.db.execute("delete from profiles where name = ?", name)
|
self.db.execute("delete from profiles where name = ? collate nocase", name)
|
||||||
self.db.commit()
|
self.db.commit()
|
||||||
|
|
||||||
def trashCollection(self) -> None:
|
def trashCollection(self) -> None:
|
||||||
|
@ -277,7 +282,9 @@ class ProfileManager:
|
||||||
return
|
return
|
||||||
|
|
||||||
# update name
|
# update name
|
||||||
self.db.execute("update profiles set name = ? where name = ?", name, oldName)
|
self.db.execute(
|
||||||
|
"update profiles set name = ? where name = ? collate nocase", name, oldName
|
||||||
|
)
|
||||||
# rename folder
|
# rename folder
|
||||||
try:
|
try:
|
||||||
os.rename(oldFolder, newFolder)
|
os.rename(oldFolder, newFolder)
|
||||||
|
@ -403,7 +410,7 @@ class ProfileManager:
|
||||||
self.db.execute(
|
self.db.execute(
|
||||||
"""
|
"""
|
||||||
create table if not exists profiles
|
create table if not exists profiles
|
||||||
(name text primary key, data blob not null);"""
|
(name text primary key collate nocase, data blob not null);"""
|
||||||
)
|
)
|
||||||
data = self.db.scalar(
|
data = self.db.scalar(
|
||||||
"select cast(data as blob) from profiles where name = '_global'"
|
"select cast(data as blob) from profiles where name = '_global'"
|
||||||
|
@ -485,7 +492,7 @@ create table if not exists profiles
|
||||||
|
|
||||||
def setLang(self, code: str) -> None:
|
def setLang(self, code: str) -> None:
|
||||||
self.meta["defaultLang"] = code
|
self.meta["defaultLang"] = code
|
||||||
sql = "update profiles set data = ? where name = ?"
|
sql = "update profiles set data = ? where name = ? collate nocase"
|
||||||
self.db.execute(sql, self._pickle(self.meta), "_global")
|
self.db.execute(sql, self._pickle(self.meta), "_global")
|
||||||
self.db.commit()
|
self.db.commit()
|
||||||
anki.lang.set_lang(code)
|
anki.lang.set_lang(code)
|
||||||
|
|
Loading…
Reference in a new issue