Преглед изворни кода

Fixes in Unicode, status determination; removed created.

tags/v0.1^2
Ben Kurtovic пре 13 година
родитељ
комит
1c850764d7
1 измењених фајлова са 35 додато и 36 уклоњено
  1. +35
    -36
      bot/tasks/afc_statistics.py

+ 35
- 36
bot/tasks/afc_statistics.py Прегледај датотеку

@@ -143,18 +143,14 @@ class Task(BaseTask):
table, where keys are column names and values are their cell contents.
"""
row = "{0}|s={page_status}|t={page_title}|h={page_short}|z={page_size}|"
row += "cr={page_create_user}|cd={page_create_time}|ci={page_create_oldid}|"
row += "sr={page_special_user}|sd={page_special_time}|si={page_special_oldid}"
row += "mr={page_modify_user}|md={page_modify_time}|mi={page_modify_oldid}|"

page["page_create_time"] = self.format_time(page["page_create_time"])
page["page_special_time"] = self.format_time(page["page_special_time"])
page["page_modify_time"] = self.format_time(page["page_modify_time"])

if page["page_special_user"]:
row += "sr={page_special_user}|sd={page_special_time}|si={page_special_oldid}|"
page["page_special_time"] = self.format_time(page["page_special_time"])

if page["page_notes"]:
row += "n=1{page_notes}"
row += "|n=1{page_notes}"

return "".join(("{{", row.format(self.tl_row, **page), "}}"))

@@ -313,18 +309,17 @@ class Task(BaseTask):

short = self.get_short_title(title)
size = self.get_size(content)
c_user, c_time, c_id = self.get_create(pageid)
m_user, m_time, m_id = self.get_modify(pageid)
s_user, s_time, s_id = self.get_special(pageid, chart)
notes = self.get_notes(chart, content, m_time, c_user)
notes = self.get_notes(chart, content, m_time, s_user)

query1 = "INSERT INTO row VALUES (?, ?)"
query2 = "INSERT INTO page VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
query2 = "INSERT INTO page VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
cursor.execute(query1, (pageid, chart))
cursor.execute(query2, (pageid, status, title.decode("utf8"),
short.decode("utf8"), size, notes, c_user,
c_time, c_id, m_user, m_time, m_id, s_user,
s_time, s_id))
short.decode("utf8"), size, notes,
m_user.decode("utf8"), m_time, m_id,
s_user.decode("utf8"), s_time, s_id))

def update_page(self, cursor, pageid, title):
"""Update hook for when page is already in our database.
@@ -352,7 +347,7 @@ class Task(BaseTask):

size = self.get_size(content)
m_user, m_time, m_id = self.get_modify(pageid)
notes = self.get_notes(chart, content, m_time, result["page_create_user"])
notes = self.get_notes(chart, content, m_time, result["page_special_user"])

if title != result["page_title"]:
self.update_page_title(cursor, result, pageid, title)
@@ -380,7 +375,8 @@ class Task(BaseTask):
query = """UPDATE page SET page_size = ?, page_modify_user = ?,
page_modify_time = ?, page_modify_oldid = ?
WHERE page_id = ?"""
cursor.execute(query, (size, m_user, m_time, m_id, pageid))
cursor.execute(query, (size, m_user.decode("utf8"), m_time, m_id,
pageid))

msg = " {0}: modify: {1} / {2} / {3} -> {4} / {5} / {6}"
msg = msg.format(pageid, result["page_modify_user"],
@@ -404,7 +400,8 @@ class Task(BaseTask):
s_user, s_time, s_id = self.get_special(pageid, chart)

if s_id != result["page_special_oldid"]:
cursor.execute(query2, (s_user, s_time, s_id, pageid))
cursor.execute(query2, (s_user.decode("utf8"), s_time, s_id,
pageid))
msg = "{0}: special: {1} / {2} / {3} -> {4} / {5} / {6}"
msg = msg.format(pageid, result["page_special_user"],
result["page_special_time"],
@@ -477,14 +474,14 @@ class Task(BaseTask):
elif "P" in statuses:
status, chart = "p", CHART_PEND
elif "T" in statuses:
status, chart = None, CHART_MISPLACE
status, chart = None, CHART_NONE
elif "D" in statuses:
status, chart = "d", CHART_DECLINE
else:
status, chart = None, CHART_NONE

if namespace == wiki.NS_MAIN:
if chart == CHART_NONE:
if not statuses:
status, chart = "a", CHART_ACCEPT
else:
status, chart = None, CHART_MISPLACE
@@ -559,19 +556,6 @@ class Task(BaseTask):
"""Return a page's size in a short, pretty format."""
return "{0} kB".format(round(len(content) / 1000.0, 2))

def get_create(self, pageid):
"""Return information about a page's first edit ("creation").

This consists of the page creator, creation time, and the earliest
revision ID.
"""
query = """SELECT rev_user_text, rev_timestamp, rev_id
FROM revision WHERE rev_id =
(SELECT MIN(rev_id) FROM revision WHERE rev_page = ?)"""
result = self.site.sql_query(query, (pageid,))
c_user, c_time, c_id = list(result)[0]
return c_user, datetime.strptime(c_time, "%Y%m%d%H%M%S"), c_id

def get_modify(self, pageid):
"""Return information about a page's last edit ("modification").

@@ -590,8 +574,8 @@ class Task(BaseTask):
I tend to use the term "special" as a verb a lot, which is bound to
cause confusion. It is merely a short way of saying "the edit in which
a declined submission was declined, an accepted submission was
accepted, a submission in review was set as such, and a pending draft
was submitted."
accepted, a submission in review was set as such, a pending submission
was submitted, and a "misplaced" submission was created."

This "information" consists of the special edit's editor, its time, and
its revision ID. If the page's status is not something that involves
@@ -599,8 +583,10 @@ class Task(BaseTask):
returned if we cannot determine when the page was "special"-ed, or if
it was "special"-ed more than 250 edits ago.
"""
if chart in [CHART_NONE, CHART_MISPLACE]:
if chart ==CHART_NONE:
return None, None, None
elif chart == CHART_MISPLACE:
return self.get_create(pageid)
elif chart == CHART_ACCEPT:
search_for = None
search_not = ["R", "H", "P", "T", "D"]
@@ -642,7 +628,20 @@ class Task(BaseTask):

return last

def get_notes(self, chart, content, m_time, c_user):
def get_create(self, pageid):
"""Return information about a page's first edit ("creation").

This consists of the page creator, creation time, and the earliest
revision ID.
"""
query = """SELECT rev_user_text, rev_timestamp, rev_id
FROM revision WHERE rev_id =
(SELECT MIN(rev_id) FROM revision WHERE rev_page = ?)"""
result = self.site.sql_query(query, (pageid,))
c_user, c_time, c_id = list(result)[0]
return c_user, datetime.strptime(c_time, "%Y%m%d%H%M%S"), c_id

def get_notes(self, chart, content, m_time, s_user):
"""Return any special notes or warnings about this page.

resubmit: submission was resubmitted after a previous decline
@@ -676,7 +675,7 @@ class Task(BaseTask):
if time_since_modify > max_time:
notes += "|no=1" # Submission hasn't been touched in over 4 days

creator = self.site.get_user(c_user)
creator = self.site.get_user(s_user)
try:
if creator.blockinfo():
notes += "|nb=1" # Submitter is blocked


Loading…
Откажи
Сачувај