From 751f71b54df8ba0fdb606085afa8ece748deffc4 Mon Sep 17 00:00:00 2001 From: Ben Kurtovic Date: Sun, 30 Oct 2011 18:03:25 -0400 Subject: [PATCH] Updates. --- bot/tasks/afc_statistics.py | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/bot/tasks/afc_statistics.py b/bot/tasks/afc_statistics.py index 6ebe305..00e5a0f 100644 --- a/bot/tasks/afc_statistics.py +++ b/bot/tasks/afc_statistics.py @@ -27,7 +27,7 @@ class Task(BaseTask): # Set some wiki-related attributes: self.pagename = cfg.get("page", "Template:AFC statistics") - self.pending_cat = cfg.get("pending", "Pending AfC submissions") + self.pending_cat = cfg.get("pending", "Pending_AfC_submissions") self.ignore_list = cfg.get("ignore_list", []) default_summary = "Updating statistics for [[WP:WPAFC|WikiProject Articles for creation]]." self.summary = self.make_summary(cfg.get("summary", default_summary)) @@ -38,14 +38,15 @@ class Task(BaseTask): self.tl_row = templates.get("row", "AFC statistics/row") self.tl_footer = templates.get("footer", "AFC statistics/footer") - # Establish a connection with our SQL database: + # Connection data for our SQL database: kwargs = cfg.get("sql", {}) kwargs["read_default_file"] = expanduser("~/.my.cnf") - self.conn = oursql.connect(**kwargs) + self.conn_data = kwargs self.db_access_lock = Lock() def run(self, **kwargs): self.site = wiki.get_site() + self.conn = oursql.connect(**self.conn_data) action = kwargs.get("action") if not action: @@ -62,7 +63,10 @@ class Task(BaseTask): method = methods.get(action) if method: - method(**kwargs) + try: + method(**kwargs) + finally: + self.conn.close() def save(self, **kwargs): if kwargs.get("fromIRC"): @@ -163,17 +167,21 @@ class Task(BaseTask): self.update_page(cursor, real_title) def sync_pending(self, cursor): - query = """SELECT page_title FROM page JOIN row ON page_id = row_id - WHERE row_chart IN (1, 2, 3)""" - cursor.execute(query) + query1 = """SELECT page_id FROM page JOIN row ON page_id = row_id + WHERE row_chart IN (1, 2, 3)""" + query2 = """SELECT cl_from, page_title, page_namespace + FROM categorylinks JOIN page ON cl_from = page_id + WHERE cl_to = ?""" + cursor.execute(query1) tracked = [i[0] for i in cursor.fetchall()] - - category = self.site.get_category(self.pending_cat) - for page in category.members(limit=500): - if page in self.ignore_list: + result = self.site.sql_query(query2, (self.pending_cat,)) + + for pageid, title, ns in result: + title = ":".join((self.site.namespace_id_to_name(ns), title)) + if title in self.ignore_list: continue - if page not in tracked: - self.track_page(cursor, page) + if pageid not in tracked: + self.track_page(cursor, title) def sync_old(self, cursor): query = """DELETE FROM page, row USING page JOIN row @@ -321,7 +329,7 @@ class Task(BaseTask): def get_create(self, pageid): query1 = "SELECT MIN(rev_id) FROM revision WHERE rev_page = ?" - query1 = "SELECT rev_user_text, rev_timestamp, rev_id FROM revision WHERE rev_id = ?" + query2 = "SELECT rev_user_text, rev_timestamp, rev_id FROM revision WHERE rev_id = ?" result1 = self.site.sql_query(query1, (pageid,)) rev_id = list(result1)[0][0] result2 = self.site.sql_query(query2, (rev_id,))