aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar jesopo2018-08-03 13:43:45 +0100
committerGravatar jesopo2018-08-03 13:43:45 +0100
commitffd41d0771712fc9688e4f3cac2dc11c8a493bec (patch)
tree3bfa3be628b50bed103e3ead98e1cdf28feb65aa
parentGrammer is important (diff)
signature
Added addition "find" methods to Database.py, along with a "get all" for user
settings to search without a nickname
-rw-r--r--Database.py30
-rw-r--r--IRCBot.py3
-rw-r--r--IRCChannel.py5
-rw-r--r--IRCServer.py6
-rw-r--r--IRCUser.py3
5 files changed, 42 insertions, 5 deletions
diff --git a/Database.py b/Database.py
index a7a0b285..b274d577 100644
--- a/Database.py
+++ b/Database.py
@@ -83,6 +83,8 @@ class Database(object):
values[i] = value[0], json.loads(value[1])
return values
return default
+ def find_bot_settings_prefix(self, prefix, default=[]):
+ return self.find_bot_settings("%s%" % prefix, default)
def del_bot_setting(self, setting):
self.cursor().execute("""DELETE FROM bot_settings WHERE
setting=?""", [setting.lower()])
@@ -109,6 +111,8 @@ class Database(object):
values[i] = value[0], json.loads(value[1])
return values
return default
+ def find_server_settings_prefix(self, server_id, prefix, default=[]):
+ return self.find_server_settings(server_id, "%s%" % prefix, default)
def del_server_setting(self, server_id, setting):
self.cursor().execute("""DELETE FROM server_settings WHERE
server_id=? AND setting=?""", [server_id, setting.lower()])
@@ -132,9 +136,13 @@ class Database(object):
values = self.cursor().fetchall()
if values:
for i, value in enumerate(values):
- values[i] = json.loads(value)
+ values[i] = value[0], json.loads(value[1])
return values
return default
+ def find_channel_settings_prefix(self, server_id, channel, prefix,
+ default=[]):
+ return self.find_channel_settings(server_id, channel, "%s%" % prefix,
+ default)
def del_channel_setting(self, server_id, channel, setting):
self.cursor().execute("""DELETE FROM channel_settings WHERE
server_id=? AND channel=? AND setting=?""", [server_id,
@@ -152,16 +160,30 @@ class Database(object):
if value:
return json.loads(value[0])
return default
+ def get_all_user_settings(self, server_id, setting, default=[]):
+ self.cursor().execute("""SELECT nickname, setting, value FROM
+ user_settings WHERE server_id=? AND setting=?""",
+ [server_id, setting])
+ values = self.cursor().fetchall()
+ if values:
+ for i, value in enumerate(values):
+ values[i] = value[0], value[1], json.loads(value[2])
+ return values
+ return default
def find_user_settings(self, server_id, nickname, pattern, default=[]):
self.cursor().execute("""SELECT setting, value FROM user_settings
- WHERE server_id=? AND nickname=? setting LIKE '?'""", [server_id,
- nickname.lower(), pattern.lower()])
+ WHERE server_id=? AND nickname=? AND setting LIKE '?'""",
+ [server_id, nickname.lower(), pattern.lower()])
values = self.cursor().fetchall()
if values:
for i, value in enumerate(values):
- values[i] = json.loads(value)
+ values[i] = value[0], json.loads(value[1])
return values
return default
+ def find_user_settings_prefix(self, server_id, nickname, prefix,
+ default=[]):
+ return self.find_user_settings(server_id, nickname, "%s%" % prefix,
+ default)
def del_user_setting(self, server_id, nickname, setting):
self.cursor().execute("""DELETE FROM user_settings WHERE
server_id=? AND nickname=? AND setting=?""", [server_id,
diff --git a/IRCBot.py b/IRCBot.py
index 1108aaf6..6d580ffd 100644
--- a/IRCBot.py
+++ b/IRCBot.py
@@ -105,6 +105,9 @@ class Bot(object):
return self.database.get_bot_setting(setting, default)
def find_settings(self, pattern, default=[]):
return self.database.find_bot_settings(pattern, default)
+ def find_settings_prefix(self, prefix, default=[]):
+ return self.database.find_bot_settings_prefix(
+ prefix, default)
def del_setting(self, setting):
self.database.del_bot_setting(setting)
diff --git a/IRCChannel.py b/IRCChannel.py
index f92d1b43..07208725 100644
--- a/IRCChannel.py
+++ b/IRCChannel.py
@@ -73,8 +73,11 @@ class Channel(object):
return self.bot.database.get_channel_setting(
self.server.id, self.name, setting, default)
def find_settings(self, pattern, default=[]):
- return self.bot.database.find_channel_setting(
+ return self.bot.database.find_channel_settings(
self.server.id, self.name, pattern, default)
+ def find_settings_prefix(self, prefix, default=[]):
+ return self.bot.database.find_channel_settings_prefix(
+ self.server.id, self.name, prefix, default)
def del_setting(self, setting):
self.bot.database.del_channel_setting(self.server.id,
self.name, setting)
diff --git a/IRCServer.py b/IRCServer.py
index 56fd6823..d4d6f66d 100644
--- a/IRCServer.py
+++ b/IRCServer.py
@@ -93,8 +93,14 @@ class Server(object):
def find_settings(self, pattern, default=[]):
return self.bot.database.find_server_settings(self.id,
pattern, default)
+ def find_settings_prefix(self, prefix, default=[]):
+ return self.bot.database.find_server_settings_prefix(
+ self.id, prefix, default)
def del_setting(self, setting):
self.bot.database.del_server_setting(self.id, setting)
+ def get_all_user_settings(self, setting, default):
+ return self.bot.database.get_all_user_settings(self.id, setting,
+ default)
def set_own_nickname(self, nickname):
self.nickname = nickname
diff --git a/IRCUser.py b/IRCUser.py
index 64254a97..b0696930 100644
--- a/IRCUser.py
+++ b/IRCUser.py
@@ -29,6 +29,9 @@ class User(object):
def find_settings(self, pattern, default=[]):
return self.bot.database.find_user_settings(self.server.id,
self.nickname, pattern, default)
+ def find_settings_prefix(self, prefix, default=[]):
+ return self.bot.database.find_user_settings_prefix(
+ self.server.id, self.nickname, prefix, default)
def del_setting(self, setting):
self.bot.database.del_user_setting(self.server.id, self.nickname,
setting)