| @@ -1,6 +1,6 @@ | |||||
| # -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||||
| # | # | ||||
| # Copyright (C) 2009-2014 Ben Kurtovic <ben.kurtovic@gmail.com> | |||||
| # Copyright (C) 2009-2017 Ben Kurtovic <ben.kurtovic@gmail.com> | |||||
| # | # | ||||
| # Permission is hereby granted, free of charge, to any person obtaining a copy | # Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| # of this software and associated documentation files (the "Software"), to deal | # of this software and associated documentation files (the "Software"), to deal | ||||
| @@ -234,18 +234,21 @@ class AFCStatistics(Task): | |||||
| self._untrack_page(). | self._untrack_page(). | ||||
| """ | """ | ||||
| self.logger.debug("Updating tracked submissions") | self.logger.debug("Updating tracked submissions") | ||||
| query = """SELECT s.page_id, s.page_title, s.page_modify_oldid, | |||||
| r.page_latest, r.page_title, r.page_namespace | |||||
| FROM page AS s | |||||
| LEFT JOIN {0}_p.page AS r ON s.page_id = r.page_id | |||||
| WHERE s.page_modify_oldid != r.page_latest | |||||
| OR r.page_id IS NULL""" | |||||
| cursor.execute(query.format(self.site.name)) | |||||
| for pageid, title, oldid, real_oldid, real_title, real_ns in cursor: | |||||
| if not real_oldid: | |||||
| query1 = """SELECT page_id, page_title, page_modify_oldid | |||||
| FROM page""" | |||||
| query2 = """SELECT page_latest, page_title, page_namespace | |||||
| FROM page WHERE page_id = ?""" | |||||
| cursor.execute(query1) | |||||
| for pageid, title, oldid in cursor.fetchall(): | |||||
| result = list(self.site.sql_query(query2, (pageid,))) | |||||
| if not result: | |||||
| self._untrack_page(cursor, pageid) | self._untrack_page(cursor, pageid) | ||||
| continue | continue | ||||
| real_oldid, real_title, real_ns = result[0] | |||||
| if oldid == real_oldid: | |||||
| continue | |||||
| msg = u"Updating page [[{0}]] (id: {1}) @ {2}" | msg = u"Updating page [[{0}]] (id: {1}) @ {2}" | ||||
| self.logger.debug(msg.format(title, pageid, oldid)) | self.logger.debug(msg.format(title, pageid, oldid)) | ||||
| msg = u" {0}: oldid: {1} -> {2}" | msg = u" {0}: oldid: {1} -> {2}" | ||||
| @@ -269,15 +272,19 @@ class AFCStatistics(Task): | |||||
| self.ignore_list, we will track it with self._track_page(). | self.ignore_list, we will track it with self._track_page(). | ||||
| """ | """ | ||||
| self.logger.debug("Adding untracked pending submissions") | self.logger.debug("Adding untracked pending submissions") | ||||
| query = """SELECT r.page_id, r.page_title, r.page_namespace | |||||
| FROM {0}_p.page AS r | |||||
| INNER JOIN {0}_p.categorylinks AS c ON r.page_id = c.cl_from | |||||
| LEFT JOIN page AS s ON r.page_id = s.page_id | |||||
| WHERE s.page_id IS NULL AND c.cl_to = ?""" | |||||
| cursor.execute(query.format(self.site.name), | |||||
| (self.pending_cat.replace(" ", "_"),)) | |||||
| for pageid, title, ns in cursor: | |||||
| query1 = "SELECT page_id FROM page" | |||||
| query2 = """SELECT page_id, page_title, page_namespace | |||||
| INNER JOIN categorylinks ON page_id = cl_from | |||||
| WHERE cl_to = ?""" | |||||
| cursor.execute(query1) | |||||
| tracked = [pid for (pid,) in cursor.fetchall()] | |||||
| pend_cat = self.pending_cat.replace(" ", "_") | |||||
| for pageid, title, ns in self.site.sql_query(query2, (pend_cat,)): | |||||
| if pageid in tracked: | |||||
| continue | |||||
| title = title.decode("utf8").replace("_", " ") | title = title.decode("utf8").replace("_", " ") | ||||
| ns_name = self.site.namespace_id_to_name(ns) | ns_name = self.site.namespace_id_to_name(ns) | ||||
| if ns_name: | if ns_name: | ||||