Ben Kurtovic 13 роки тому
джерело
коміт
751f71b54d
1 змінених файлів з 22 додано та 14 видалено
  1. +22
    -14
      bot/tasks/afc_statistics.py

+ 22
- 14
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,))


Завантаження…
Відмінити
Зберегти