소스 검색

Implement do_list(), do_read(); update schema.

tags/v0.1^2
Ben Kurtovic 12 년 전
부모
커밋
865859b136
1개의 변경된 파일43개의 추가작업 그리고 12개의 파일을 삭제
  1. +43
    -12
      earwigbot/commands/notes.py

+ 43
- 12
earwigbot/commands/notes.py 파일 보기

@@ -47,7 +47,7 @@ class Notes(Command):
}

if not data.args:
msg = "The Earwig Mini-Wiki: running v{0}. Subcommands are: {1}. You can get help on any with '!{2} help subcommand'."
msg = "\x0302The Earwig Mini-Wiki\x0F: running v{0}. Subcommands are: {1}. You can get help on any with '!{2} help subcommand'."
cmnds = ", ".join((commands))
self.reply(data, msg.format(self.version, cmnds, data.command))
return
@@ -60,27 +60,58 @@ class Notes(Command):
def create_db(self, conn):
"""Initialize the notes database with its necessary tables."""
script = """
CREATE TABLE pages (page_id, page_title);
CREATE TABLE entries (entry_id, entry_slug, entry_title, entry_revision);
CREATE TABLE users (user_id, user_name);
CREATE TABLE revisions (rev_id, rev_page, rev_user, rev_content);
CREATE TABLE revisions (rev_id, rev_entry, rev_user, rev_content);
"""
conn.executescript(script)

def do_list(self):
pass
def do_list(self, data):
"""Show a list of entries in the notes database."""
query = "SELECT entry_title FROM entries"
with sqlite.connect(self._dbfile) as conn, self._db_access_lock:
try:
entries = conn.execute(query).fetchall()
except sqlite.OperationalError:
entires = []

def do_read(self):
pass
if entries:
self.reply(data, "Entries: {0}".format(", ".join(entries)))
else:
self.reply(data, "No entries in the database.")

def edit(self):
pass
def do_read(self, data):
"""Read an entry from the notes database."""
query = "SELECT entry_title, rev_content FROM entries INNER JOIN revisions ON entry_revision = rev_id WHERE entry_slug = ?"
try:
slug = data.args[1].lower().replace("_", "").replace("-", "")
except IndexError:
self.reply(data, "Please name an entry to read from.")
return

def rename(self):
with sqlite.connect(self._dbfile) as conn, self._db_access_lock:
try:
title, content = conn.execute(query, (slug,)).fetchone()
except sqlite.OperationalError:
title, content = slug, None

if content:
self.reply(data, "\x0302{0}\x0F: {1}".format(title, content))
else:
self.reply(data, "Entry \x0302{0}\x0F not found.".format(title))

def do_edit(self, data):
"""Edit an entry in the notes database."""
pass

def delete(self):
def do_rename(self, data):
"""Rename an entry in the notes database."""
pass

def info(self):
def do_delete(self, data):
"""Delete an entry from the notes database."""
pass

def do_info(self, data):
"""Get info on an entry in the notes database."""
pass

불러오는 중...
취소
저장