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