|
@@ -101,6 +101,7 @@ class Notes(Command): |
|
|
entries = [] |
|
|
entries = [] |
|
|
|
|
|
|
|
|
if entries: |
|
|
if entries: |
|
|
|
|
|
entries = [entry[0] for entry in entries] |
|
|
self.reply(data, "Entries: {0}".format(", ".join(entries))) |
|
|
self.reply(data, "Entries: {0}".format(", ".join(entries))) |
|
|
else: |
|
|
else: |
|
|
self.reply(data, "No entries in the database.") |
|
|
self.reply(data, "No entries in the database.") |
|
@@ -111,7 +112,7 @@ class Notes(Command): |
|
|
INNER JOIN revisions ON entry_revision = rev_id |
|
|
INNER JOIN revisions ON entry_revision = rev_id |
|
|
WHERE entry_slug = ?""" |
|
|
WHERE entry_slug = ?""" |
|
|
try: |
|
|
try: |
|
|
slug = data.args[1].lower().replace("_", "").replace("-", "") |
|
|
|
|
|
|
|
|
slug = self.slugify(data.args[1]) |
|
|
except IndexError: |
|
|
except IndexError: |
|
|
self.reply(data, "Please specify an entry to read from.") |
|
|
self.reply(data, "Please specify an entry to read from.") |
|
|
return |
|
|
return |
|
@@ -137,7 +138,7 @@ class Notes(Command): |
|
|
query3 = "INSERT INTO entries VALUES (?, ?, ?, ?)" |
|
|
query3 = "INSERT INTO entries VALUES (?, ?, ?, ?)" |
|
|
query4 = "UPDATE entries SET entry_revision = ? WHERE entry_id = ?" |
|
|
query4 = "UPDATE entries SET entry_revision = ? WHERE entry_id = ?" |
|
|
try: |
|
|
try: |
|
|
slug = data.args[1].lower().replace("_", "").replace("-", "") |
|
|
|
|
|
|
|
|
slug = self.slugify(data.args[1]) |
|
|
except IndexError: |
|
|
except IndexError: |
|
|
self.reply(data, "Please specify an entry to edit.") |
|
|
self.reply(data, "Please specify an entry to edit.") |
|
|
return |
|
|
return |
|
@@ -164,7 +165,7 @@ class Notes(Command): |
|
|
return |
|
|
return |
|
|
revid = self.get_next_revision(conn) |
|
|
revid = self.get_next_revision(conn) |
|
|
userid = self.get_user(conn, data.host) |
|
|
userid = self.get_user(conn, data.host) |
|
|
now = datetime.utcnow() |
|
|
|
|
|
|
|
|
now = datetime.utcnow().strftime("%b %d, %Y %H:%M:%S") |
|
|
conn.execute(query2, (revid, id_, userid, now, content)) |
|
|
conn.execute(query2, (revid, id_, userid, now, content)) |
|
|
if create: |
|
|
if create: |
|
|
conn.execute(query3, (id_, slug, title, revid)) |
|
|
conn.execute(query3, (id_, slug, title, revid)) |
|
@@ -180,7 +181,7 @@ class Notes(Command): |
|
|
INNER JOIN users ON rev_user = user_id |
|
|
INNER JOIN users ON rev_user = user_id |
|
|
WHERE entry_slug = ?""" |
|
|
WHERE entry_slug = ?""" |
|
|
try: |
|
|
try: |
|
|
slug = data.args[1].lower().replace("_", "").replace("-", "") |
|
|
|
|
|
|
|
|
slug = self.slugify(data.args[1]) |
|
|
except IndexError: |
|
|
except IndexError: |
|
|
self.reply(data, "Please specify an entry to get info on.") |
|
|
self.reply(data, "Please specify an entry to get info on.") |
|
|
return |
|
|
return |
|
@@ -194,11 +195,11 @@ class Notes(Command): |
|
|
if info: |
|
|
if info: |
|
|
title = info[0][0] |
|
|
title = info[0][0] |
|
|
times = [datum[1] for datum in info] |
|
|
times = [datum[1] for datum in info] |
|
|
earliest = min(times).strftime("%b %d, %Y %H:%M:%S") |
|
|
|
|
|
|
|
|
earliest = min(times) |
|
|
msg = "\x0302{0}\x0F: {1} edits since {2}" |
|
|
msg = "\x0302{0}\x0F: {1} edits since {2}" |
|
|
msg = msg.format(title, len(info), earliest) |
|
|
msg = msg.format(title, len(info), earliest) |
|
|
if len(times) > 1: |
|
|
if len(times) > 1: |
|
|
latest = max(times).strftime("%b %d, %Y %H:%M:%S") |
|
|
|
|
|
|
|
|
latest = max(times) |
|
|
msg += "; last edit on {0}".format(latest) |
|
|
msg += "; last edit on {0}".format(latest) |
|
|
names = [datum[2] for datum in info] |
|
|
names = [datum[2] for datum in info] |
|
|
msg += "; authors: {0}.".format(", ".join(list(set(names)))) |
|
|
msg += "; authors: {0}.".format(", ".join(list(set(names)))) |
|
@@ -213,9 +214,10 @@ class Notes(Command): |
|
|
INNER JOIN revisions ON entry_revision = rev_id |
|
|
INNER JOIN revisions ON entry_revision = rev_id |
|
|
INNER JOIN users ON rev_user = user_id |
|
|
INNER JOIN users ON rev_user = user_id |
|
|
WHERE entry_slug = ?""" |
|
|
WHERE entry_slug = ?""" |
|
|
query2 = "UPDATE entries SET entry_title = ? WHERE entry_id = ?" |
|
|
|
|
|
|
|
|
query2 = """UPDATE entries SET entry_slug = ?, entry_title = ? |
|
|
|
|
|
WHERE entry_id = ?""" |
|
|
try: |
|
|
try: |
|
|
slug = data.args[1].lower().replace("_", "").replace("-", "") |
|
|
|
|
|
|
|
|
slug = self.slugify(data.args[1]) |
|
|
except IndexError: |
|
|
except IndexError: |
|
|
self.reply(data, "Please specify an entry to rename.") |
|
|
self.reply(data, "Please specify an entry to rename.") |
|
|
return |
|
|
return |
|
@@ -240,7 +242,7 @@ class Notes(Command): |
|
|
msg = "You must be an author or a bot admin to rename this entry." |
|
|
msg = "You must be an author or a bot admin to rename this entry." |
|
|
self.reply(data, msg) |
|
|
self.reply(data, msg) |
|
|
return |
|
|
return |
|
|
conn.execute(query2, (newtitle, id_)) |
|
|
|
|
|
|
|
|
conn.execute(query2, (self.slugify(newtitle), newtitle, id_)) |
|
|
|
|
|
|
|
|
msg = "Entry \x0302{0}\x0F renamed to \x0302{1}\x0F." |
|
|
msg = "Entry \x0302{0}\x0F renamed to \x0302{1}\x0F." |
|
|
self.reply(data, msg.format(data.args[1], newtitle)) |
|
|
self.reply(data, msg.format(data.args[1], newtitle)) |
|
@@ -254,7 +256,7 @@ class Notes(Command): |
|
|
query2 = "DELETE FROM entries WHERE entry_id = ?" |
|
|
query2 = "DELETE FROM entries WHERE entry_id = ?" |
|
|
query3 = "DELETE FROM revisions WHERE rev_entry = ?" |
|
|
query3 = "DELETE FROM revisions WHERE rev_entry = ?" |
|
|
try: |
|
|
try: |
|
|
slug = data.args[1].lower().replace("_", "").replace("-", "") |
|
|
|
|
|
|
|
|
slug = self.slugify(data.args[1]) |
|
|
except IndexError: |
|
|
except IndexError: |
|
|
self.reply(data, "Please specify an entry to delete.") |
|
|
self.reply(data, "Please specify an entry to delete.") |
|
|
return |
|
|
return |
|
@@ -271,11 +273,15 @@ class Notes(Command): |
|
|
msg = "You must be an author or a bot admin to delete this entry." |
|
|
msg = "You must be an author or a bot admin to delete this entry." |
|
|
self.reply(data, msg) |
|
|
self.reply(data, msg) |
|
|
return |
|
|
return |
|
|
conn.execute(query2, (id_)) |
|
|
|
|
|
conn.execute(query3, (id_)) |
|
|
|
|
|
|
|
|
conn.execute(query2, (id_,)) |
|
|
|
|
|
conn.execute(query3, (id_,)) |
|
|
|
|
|
|
|
|
self.reply(data, "Entry \x0302{0}\x0F deleted.".format(data.args[1])) |
|
|
self.reply(data, "Entry \x0302{0}\x0F deleted.".format(data.args[1])) |
|
|
|
|
|
|
|
|
|
|
|
def slugify(self, name): |
|
|
|
|
|
"""Convert *name* into an identifier for storing in the database.""" |
|
|
|
|
|
return name.lower().replace("_", "").replace("-", "") |
|
|
|
|
|
|
|
|
def create_db(self, conn): |
|
|
def create_db(self, conn): |
|
|
"""Initialize the notes database with its necessary tables.""" |
|
|
"""Initialize the notes database with its necessary tables.""" |
|
|
script = """ |
|
|
script = """ |
|
@@ -301,12 +307,12 @@ class Notes(Command): |
|
|
|
|
|
|
|
|
def get_user(self, conn, host): |
|
|
def get_user(self, conn, host): |
|
|
"""Get the user ID corresponding to a hostname, or make one.""" |
|
|
"""Get the user ID corresponding to a hostname, or make one.""" |
|
|
query1 = "SELECT user_host FROM users WHERE user_id = ?" |
|
|
|
|
|
|
|
|
query1 = "SELECT user_id FROM users WHERE user_host = ?" |
|
|
query2 = "SELECT MAX(user_id) FROM users" |
|
|
query2 = "SELECT MAX(user_id) FROM users" |
|
|
query3 = "INSERT INTO users VALUES (?, ?)" |
|
|
query3 = "INSERT INTO users VALUES (?, ?)" |
|
|
user = conn.execute(query1).fetchone()[0] |
|
|
|
|
|
|
|
|
user = conn.execute(query1, (host,)).fetchone() |
|
|
if user: |
|
|
if user: |
|
|
return user |
|
|
|
|
|
|
|
|
return user[0] |
|
|
last = conn.execute(query2).fetchone()[0] |
|
|
last = conn.execute(query2).fetchone()[0] |
|
|
later = last + 1 if last else 1 |
|
|
later = last + 1 if last else 1 |
|
|
conn.execute(query3, (later, host)) |
|
|
conn.execute(query3, (later, host)) |
|
|