| @@ -56,7 +56,7 @@ class Task(BaseTask): | |||||
| "edit": self.process_edit, | "edit": self.process_edit, | ||||
| "move": self.process_move, | "move": self.process_move, | ||||
| "delete": self.process_delete, | "delete": self.process_delete, | ||||
| "restore": self.process_restore, | |||||
| "restore": self.process_edit, | |||||
| } | } | ||||
| method = methods.get(action) | method = methods.get(action) | ||||
| @@ -161,7 +161,7 @@ class Task(BaseTask): | |||||
| continue | continue | ||||
| if real_oldid == oldid: | if real_oldid == oldid: | ||||
| continue | continue | ||||
| self.update_page(title) | |||||
| self.update_page(cursor, title) | |||||
| def sync_pending(self, cursor): | def sync_pending(self, cursor): | ||||
| query = """SELECT page_title FROM page JOIN row ON page_id = row_id | 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: | if page in self.ignore_list: | ||||
| continue | continue | ||||
| if page not in tracked: | if page not in tracked: | ||||
| self.track_page(page) | |||||
| self.track_page(cursor, page) | |||||
| def sync_old(self, cursor): | def sync_old(self, cursor): | ||||
| query = """DELETE FROM page, row USING page JOIN row | 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()""" | AND ADDTIME(page_special_time, '36:00:00') < NOW()""" | ||||
| cursor.execute(query) | 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 | pass | ||||
| def update_page(self, page): | |||||
| def update_page(self, cursor, page): | |||||
| # Page update hook when page is in our database. | |||||
| pass | pass | ||||
| def process_edit(self, page, **kwargs): | 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): | 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): | 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) | |||||