| @@ -56,7 +56,8 @@ class Notes(Command): | |||||
| if command in commands: | if command in commands: | ||||
| commands[command](data) | commands[command](data) | ||||
| else: | else: | ||||
| self.reply("Unknown subcommand: \x0303{0}\x0F.".format(command)) | |||||
| msg = "Unknown subcommand: \x0303{0}\x0F.".format(command) | |||||
| self.reply(data, msg) | |||||
| def do_list(self, data): | def do_list(self, data): | ||||
| """Show a list of entries in the notes database.""" | """Show a list of entries in the notes database.""" | ||||
| @@ -65,7 +66,7 @@ class Notes(Command): | |||||
| try: | try: | ||||
| entries = conn.execute(query).fetchall() | entries = conn.execute(query).fetchall() | ||||
| except sqlite.OperationalError: | except sqlite.OperationalError: | ||||
| entires = [] | |||||
| entries = [] | |||||
| if entries: | if entries: | ||||
| self.reply(data, "Entries: {0}".format(", ".join(entries))) | self.reply(data, "Entries: {0}".format(", ".join(entries))) | ||||
| @@ -154,20 +155,20 @@ class Notes(Command): | |||||
| with sqlite.connect(self._dbfile) as conn, self._db_access_lock: | with sqlite.connect(self._dbfile) as conn, self._db_access_lock: | ||||
| try: | try: | ||||
| data = conn.execute(query, (slug,)).fetchall() | |||||
| info = conn.execute(query, (slug,)).fetchall() | |||||
| except sqlite.OperationalError: | except sqlite.OperationalError: | ||||
| data = [] | |||||
| info = [] | |||||
| if data: | |||||
| title = data[0][0] | |||||
| times = [datum[1] for datum in data] | |||||
| 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).strftime("%b %d, %Y %H:%M:%S") | ||||
| msg = "\x0302{0}\x0F: {1} edits since {2}" | msg = "\x0302{0}\x0F: {1} edits since {2}" | ||||
| msg = msg.format(title, len(data), 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).strftime("%b %d, %Y %H:%M:%S") | ||||
| msg += "; last edit on {0}".format(lastest) | |||||
| names = [datum[2] for datum in data] | |||||
| msg += "; last edit on {0}".format(latest) | |||||
| names = [datum[2] for datum in info] | |||||
| msg += "; authors: {0}.".format(", ".join(list(set(names)))) | msg += "; authors: {0}.".format(", ".join(list(set(names)))) | ||||
| self.reply(data, msg) | self.reply(data, msg) | ||||
| else: | else: | ||||
| @@ -202,6 +203,7 @@ class Notes(Command): | |||||
| msg = "Entry \x0302{0}\x0F not found.".format(data.args[1]) | msg = "Entry \x0302{0}\x0F not found.".format(data.args[1]) | ||||
| self.reply(data, msg) | self.reply(data, msg) | ||||
| return | return | ||||
| permdb = self.config.irc["permissions"] | |||||
| if author != data.host and not permdb.is_admin(data): | if author != data.host and not permdb.is_admin(data): | ||||
| 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) | ||||
| @@ -232,6 +234,7 @@ class Notes(Command): | |||||
| msg = "Entry \x0302{0}\x0F not found.".format(data.args[1]) | msg = "Entry \x0302{0}\x0F not found.".format(data.args[1]) | ||||
| self.reply(data, msg) | self.reply(data, msg) | ||||
| return | return | ||||
| permdb = self.config.irc["permissions"] | |||||
| if author != data.host and not permdb.is_admin(data): | if author != data.host and not permdb.is_admin(data): | ||||
| 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) | ||||
| @@ -255,14 +258,14 @@ class Notes(Command): | |||||
| def get_next_entry(self, conn): | def get_next_entry(self, conn): | ||||
| """Get the next entry ID.""" | """Get the next entry ID.""" | ||||
| query = "SELECT MAX(entry_id) FROM entries" | query = "SELECT MAX(entry_id) FROM entries" | ||||
| next = conn.execute(query).fetchone()[0] | |||||
| return next + 1 if next else 1 | |||||
| later = conn.execute(query).fetchone()[0] | |||||
| return later + 1 if later else 1 | |||||
| def get_next_revision(self, conn): | def get_next_revision(self, conn): | ||||
| """Get the next revision ID.""" | """Get the next revision ID.""" | ||||
| query = "SELECT MAX(rev_id) FROM revisions" | query = "SELECT MAX(rev_id) FROM revisions" | ||||
| next = conn.execute(query).fetchone()[0] | |||||
| return next + 1 if next else 1 | |||||
| later = conn.execute(query).fetchone()[0] | |||||
| return later + 1 if later else 1 | |||||
| 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.""" | ||||
| @@ -273,6 +276,6 @@ class Notes(Command): | |||||
| if user: | if user: | ||||
| return user | return user | ||||
| last = conn.execute(query2).fetchone()[0] | last = conn.execute(query2).fetchone()[0] | ||||
| next = last + 1 if last else 1 | |||||
| conn.execute(query3, (next, host)) | |||||
| return next | |||||
| later = last + 1 if last else 1 | |||||
| conn.execute(query3, (later, host)) | |||||
| return later | |||||