Browse Source

A bunch of fixes, mostly related to unicode. Sync seems to work.

tags/v0.1^2
Ben Kurtovic 13 years ago
parent
commit
9352eacd31
2 changed files with 27 additions and 22 deletions
  1. +24
    -19
      bot/tasks/afc_statistics.py
  2. +3
    -3
      bot/wiki/category.py

+ 24
- 19
bot/tasks/afc_statistics.py View File

@@ -216,7 +216,7 @@ class Task(BaseTask):
self.logger.debug(" {0} -> {1}".format(oldid, real_oldid)) self.logger.debug(" {0} -> {1}".format(oldid, real_oldid))
body = result[0][1].replace("_", " ") body = result[0][1].replace("_", " ")
ns = self.site.namespace_id_to_name(result[0][2]) ns = self.site.namespace_id_to_name(result[0][2])
real_title = ":".join((ns, body))
real_title = ":".join((str(ns), body))
self.update_page(cursor, pageid, real_title) self.update_page(cursor, pageid, real_title)


def add_untracked(self, cursor): def add_untracked(self, cursor):
@@ -235,7 +235,7 @@ class Task(BaseTask):
pending = category.members(use_sql=True) pending = category.members(use_sql=True)


for title, pageid in pending: for title, pageid in pending:
if title in self.ignore_list:
if title.decode("utf8") in self.ignore_list:
continue continue
if pageid not in tracked: if pageid not in tracked:
msg = "Tracking page [[{0}]] (id: {1})".format(title, pageid) msg = "Tracking page [[{0}]] (id: {1})".format(title, pageid)
@@ -250,10 +250,9 @@ class Task(BaseTask):
""" """
self.logger.debug("Removing old submissions from chart") self.logger.debug("Removing old submissions from chart")
query = """DELETE FROM page, row USING page JOIN row query = """DELETE FROM page, row USING page JOIN row
ON page_id = row_id WHERE row_chart IN ?
AND ADDTIME(page_special_time, '36:00:00') < NOW()"""
old_charts = (CHART_ACCEPT, CHART_DECLINE)
cursor.execute(query, (old_charts,))
ON page_id = row_id WHERE row_chart IN (?, ?)
AND ADDTIME(page_special_time, '36:00:00') < NOW()"""
cursor.execute(query, (CHART_ACCEPT, CHART_DECLINE))


def untrack_page(self, cursor, pageid): def untrack_page(self, cursor, pageid):
"""Remove a page, given by ID, from our database.""" """Remove a page, given by ID, from our database."""
@@ -287,12 +286,13 @@ class Task(BaseTask):
m_user, m_time, m_id = self.get_modify(pageid) m_user, m_time, m_id = self.get_modify(pageid)
s_user, s_time, s_id = self.get_special(pageid, chart) s_user, s_time, s_id = self.get_special(pageid, chart)


query1 = "INSERT INTO row VALUES ?"
query2 = "INSERT INTO page VALUES ?"
cursor.execute(query1, ((pageid, chart),))
cursor.execute(query2, ((pageid, status, title, short, size, notes,
c_user, c_time, c_id, m_user, m_time, m_id,
s_user, s_time, s_id),))
query1 = "INSERT INTO row VALUES (?, ?)"
query2 = "INSERT INTO page VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
cursor.execute(query1, (pageid, chart))
cursor.execute(query2, (pageid, status, title.decode("utf8"),
short.decode("utf8"), size, notes, c_user,
c_time, c_id, m_user, m_time, m_id, s_user,
s_time, s_id))


def update_page(self, cursor, pageid, title): def update_page(self, cursor, pageid, title):
"""Update hook for when page is already in our database. """Update hook for when page is already in our database.
@@ -356,7 +356,7 @@ class Task(BaseTask):
self.update_page_modify(cursor, result, pageid, size, m_user, m_time, m_id) self.update_page_modify(cursor, result, pageid, size, m_user, m_time, m_id)


if status != result["page_status"]: if status != result["page_status"]:
self.update_page_status(cursor, result, pageid, status, chart, page)
self.update_page_status(cursor, result, pageid, status, chart)


if notes != result["page_notes"]: if notes != result["page_notes"]:
self.update_page_notes(cursor, result, pageid, notes) self.update_page_notes(cursor, result, pageid, notes)
@@ -365,7 +365,8 @@ class Task(BaseTask):
"""Update the title and short_title of a page in our database.""" """Update the title and short_title of a page in our database."""
query = "UPDATE page SET page_title = ?, page_short = ? WHERE page_id = ?" query = "UPDATE page SET page_title = ?, page_short = ? WHERE page_id = ?"
short = self.get_short_title(title) short = self.get_short_title(title)
cursor.execute(query, (title, short, pageid))
cursor.execute(query, (title.decode("utf8"), short.decode("utf8"),
pageid))
msg = " {0}: title: {1} -> {2}" msg = " {0}: title: {1} -> {2}"
self.logger.debug(msg.format(pageid, result["page_title"], title)) self.logger.debug(msg.format(pageid, result["page_title"], title))


@@ -382,7 +383,7 @@ class Task(BaseTask):
result["page_modify_oldid"], m_user, m_time, m_id) result["page_modify_oldid"], m_user, m_time, m_id)
self.logger.debug(msg) self.logger.debug(msg)


def update_page_status(self, cursor, result, pageid, status, chart, page):
def update_page_status(self, cursor, result, pageid, status, chart):
"""Update the status and "specialed" information of a page.""" """Update the status and "specialed" information of a page."""
query1 = """UPDATE page JOIN row ON page_id = row_id query1 = """UPDATE page JOIN row ON page_id = row_id
SET page_status = ?, row_chart = ? WHERE page_id = ?""" SET page_status = ?, row_chart = ? WHERE page_id = ?"""
@@ -402,7 +403,7 @@ class Task(BaseTask):
msg = "{0}: special: {1} / {2} / {3} -> {4} / {5} / {6}" msg = "{0}: special: {1} / {2} / {3} -> {4} / {5} / {6}"
msg = msg.format(pageid, result["page_special_user"], msg = msg.format(pageid, result["page_special_user"],
result["page_special_time"], result["page_special_time"],
result["page_special_oldid"], m_user, m_time, m_id)
result["page_special_oldid"], s_user, s_time, s_id)
self.logger.debug(msg) self.logger.debug(msg)


def update_page_notes(self, cursor, result, pageid, notes): def update_page_notes(self, cursor, result, pageid, notes):
@@ -420,7 +421,7 @@ class Task(BaseTask):
used in the task's code. used in the task's code.
""" """
query = "SELECT page_latest FROM page WHERE page_title = ? AND page_namespace = ?" query = "SELECT page_latest FROM page WHERE page_title = ? AND page_namespace = ?"
namespace, base = title.split(":", 1)
namespace, base = title.decode("utf8").split(":", 1)
try: try:
ns = self.site.namespace_name_to_id(namespace) ns = self.site.namespace_name_to_id(namespace)
except wiki.NamespaceNotFoundError: except wiki.NamespaceNotFoundError:
@@ -430,6 +431,10 @@ class Task(BaseTask):
result = self.site.sql_query(query, (base.replace(" ", "_"), ns)) result = self.site.sql_query(query, (base.replace(" ", "_"), ns))
revid = int(list(result)[0][0]) revid = int(list(result)[0][0])


return self.get_revision_content(revid)

def get_revision_content(self, revid):
"""Get the content of a revision by ID from the API."""
res = self.site.api_query(action="query", prop="revisions", res = self.site.api_query(action="query", prop="revisions",
revids=revid, rvprop="content") revids=revid, rvprop="content")
try: try:
@@ -539,8 +544,8 @@ class Task(BaseTask):
msg = "Exceeded 250 content lookups while determining special for page (id: {0}, chart: {1})" msg = "Exceeded 250 content lookups while determining special for page (id: {0}, chart: {1})"
self.logger.warn(msg.format(pageid, chart)) self.logger.warn(msg.format(pageid, chart))
break break
content = self.site.get_revid_content(revid)
if re.search(search, content, re.I):
content = self.get_revision_content(revid)
if content and re.search(search, content, re.I):
return user, datetime.strptime(ts, "%Y%m%d%H%M%S"), revid return user, datetime.strptime(ts, "%Y%m%d%H%M%S"), revid


return None, None, None return None, None, None


+ 3
- 3
bot/wiki/category.py View File

@@ -41,12 +41,12 @@ class Category(Page):
JOIN categorylinks ON page_id = cl_from JOIN categorylinks ON page_id = cl_from
WHERE cl_to = ?""" WHERE cl_to = ?"""
title = self.title().replace(" ", "_").split(":", 1)[1] title = self.title().replace(" ", "_").split(":", 1)[1]
result = self.site.sql_query(query, (title,))
result = self._site.sql_query(query, (title,))
members = [] members = []
for row in result: for row in result:
body = row[0].replace("_", " ") body = row[0].replace("_", " ")
namespace = self.site.namespace_id_to_name(row[1])
title = ":".join(namespace, body)
namespace = self._site.namespace_id_to_name(row[1])
title = ":".join((str(namespace), body))
members.append((title, row[2])) members.append((title, row[2]))
return members return members




Loading…
Cancel
Save