From 22850c86bd98a41ecdf7b4aaa5b2e98ccef389a6 Mon Sep 17 00:00:00 2001 From: Ben Kurtovic Date: Sun, 30 Oct 2011 14:58:57 -0400 Subject: [PATCH] process_edit(), process_move(), process_delete(), process_restore() --- bot/tasks/afc_statistics.py | 49 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/bot/tasks/afc_statistics.py b/bot/tasks/afc_statistics.py index 54c387d..7dc0bfd 100644 --- a/bot/tasks/afc_statistics.py +++ b/bot/tasks/afc_statistics.py @@ -56,7 +56,7 @@ class Task(BaseTask): "edit": self.process_edit, "move": self.process_move, "delete": self.process_delete, - "restore": self.process_restore, + "restore": self.process_edit, } method = methods.get(action) @@ -161,7 +161,7 @@ class Task(BaseTask): continue if real_oldid == oldid: continue - self.update_page(title) + self.update_page(cursor, title) def sync_pending(self, cursor): query = """SELECT page_title FROM page JOIN row ON page_id = row_id @@ -174,7 +174,7 @@ class Task(BaseTask): if page in self.ignore_list: continue if page not in tracked: - self.track_page(page) + self.track_page(cursor, page) def sync_old(self, cursor): query = """DELETE FROM page, row USING page JOIN row @@ -182,20 +182,47 @@ class Task(BaseTask): AND ADDTIME(page_special_time, '36:00:00') < NOW()""" cursor.execute(query) - def track_page(self, page): + def track_page(self, cursor, page): + # Page update hook when page is not in our database. pass - def update_page(self, page): + def update_page(self, cursor, page): + # Page update hook when page is in our database. pass def process_edit(self, page, **kwargs): - pass + query = "SELECT * FROM page WHERE page_title = ?" + with self.conn.cursor() as cursor, self.db_access_lock: + cursor.execute(query, (page,)) + result = cursor.fetchall() + if result: + self.update_page(cursor, page) + else: + self.track_page(cursor, page) def process_move(self, page, **kwargs): - pass + query1 = "SELECT * FROM page WHERE page_title = ?" + query2 = "SELECT page_latest FROM page WHERE page_title = ?" + query3 = "UPDATE page SET page_title = ?, page_modify_oldid = ? WHERE page_title = ?" + source, dest = page + with self.conn.cursor() as cursor, self.db_access_lock: + cursor.execute(query1, (source,)) + result = cursor.fetchall() + if not result: + self.track_page(cursor, page) + else: + try: + new_oldid = list(self.site.sql_query(query2, (dest,)))[0][0] + except IndexError: + new_oldid = result[11] + cursor.execute(query3, (dest, new_oldid, source)) def process_delete(self, page, **kwargs): - pass - - def process_restore(self, page, **kwargs): - pass + query1 = "SELECT page_id FROM page WHERE page_title = ?" + query2 = "DELETE FROM page JOIN row ON page_id = row_id WHERE page_title = ?" + with self.conn.cursor() as cursor, self.db_access_lock: + result = self.site.sql_query(query1, (page,)) + if not list(result)[0]: + cursor.execute(query2, (page,)) + return + self.process_edit(page)