Procházet zdrojové kódy

Fix a bunch of bugs; mainly typos.

tags/v0.1^2
Ben Kurtovic před 12 roky
rodič
revize
88d4a7be46
1 změnil soubory, kde provedl 31 přidání a 25 odebrání
  1. +31
    -25
      earwigbot/tasks/drn_clerkbot.py

+ 31
- 25
earwigbot/tasks/drn_clerkbot.py Zobrazit soubor

@@ -21,7 +21,7 @@
# SOFTWARE. # SOFTWARE.


from datetime import datetime from datetime import datetime
from os import expanduser
from os.path import expanduser
import re import re
from threading import RLock from threading import RLock
from time import mktime, sleep, time from time import mktime, sleep, time
@@ -67,8 +67,13 @@ class DRNClerkBot(Task):
self.volunteer_title = cfg.get("volunteers", self.volunteer_title = cfg.get("volunteers",
"Wikipedia:Dispute resolution noticeboard/Volunteering") "Wikipedia:Dispute resolution noticeboard/Volunteering")
self.very_old_title = cfg.get("veryOldTitle", "User talk:Szhang (WMF)") self.very_old_title = cfg.get("veryOldTitle", "User talk:Szhang (WMF)")
default_summary = "Updating $3 cases for the [[WP:DRN|dispute resolution noticeboard]]."
self.summary = self.make_summary(cfg.get("summary", default_summary))

clerk_summary = "Updating $3 cases for the [[WP:DRN|dispute resolution noticeboard]]."
notify_summary = "Notifying user regarding [[WP:DRN|dispute resolution notieboard]] case."
chart_summary = "Updating statistics for the [[WP:DRN|dispute resolution notieboard]]."
self.clerk_summary = self.make_summary(cfg.get("clerkSummary", clerk_summary))
self.notify_summary = self.make_summary(cfg.get("notifySummary", notify_summary))
self.chart_summary = self.make_summary(cfg.get("chartSummary", chart_summary))


# Templates used: # Templates used:
templates = cfg.get("templates", {}) templates = cfg.get("templates", {})
@@ -109,11 +114,11 @@ class DRNClerkBot(Task):
page = site.get_page(self.title) page = site.get_page(self.title)
text = page.get() text = page.get()
self.read_page(conn, cases, text) self.read_page(conn, cases, text)
noticies = self.clerk(conn, cases)
self.save(page, cases, kwargs)
notices = self.clerk(conn, cases)
self.save(page, cases, kwargs, start)
self.send_notices(site, notices) self.send_notices(site, notices)
if action in ["all", "update_chart"]: if action in ["all", "update_chart"]:
self.update_chart(conn)
self.update_chart(conn, site)
finally: finally:
self.db_access_lock.release() self.db_access_lock.release()


@@ -283,7 +288,7 @@ class DRNClerkBot(Task):
return notices return notices


def clerk_open_case(self, case, signatures): def clerk_open_case(self, case, signatures):
self.check_for_review(case):
self.check_for_review(case)
if len(case.body) - case.last_volunteer_size > 15000: if len(case.body) - case.last_volunteer_size > 15000:
if case.last_action != self.STATUS_NEEDASSIST: if case.last_action != self.STATUS_NEEDASSIST:
case.status = self.STATUS_NEEDASSIST case.status = self.STATUS_NEEDASSIST
@@ -295,14 +300,14 @@ class DRNClerkBot(Task):
return [] return []


def clerk_needassist_case(self, case, volunteers, newsigs): def clerk_needassist_case(self, case, volunteers, newsigs):
self.check_for_review(case):
self.check_for_review(case)
if any([editor in volunteers for (editor, timestamp) in newsigs]): if any([editor in volunteers for (editor, timestamp) in newsigs]):
if case.last_action != self.STATUS_OPEN: if case.last_action != self.STATUS_OPEN:
case.status = self.STATUS_OPEN case.status = self.STATUS_OPEN
return [] return []


def clerk_stale_case(self, case, newsigs): def clerk_stale_case(self, case, newsigs):
self.check_for_review(case):
self.check_for_review(case)
if newsigs: if newsigs:
if case.last_action != self.STATUS_OPEN: if case.last_action != self.STATUS_OPEN:
case.status = self.STATUS_OPEN case.status = self.STATUS_OPEN
@@ -323,7 +328,7 @@ class DRNClerkBot(Task):
if not case.close_time: if not case.close_time:
case.close_time = datetime.utcnow() case.close_time = datetime.utcnow()
timestamps = [timestamp for (editor, timestamp) in signatures] timestamps = [timestamp for (editor, timestamp) in signatures]
close_age = (datetime.utcnow() - case.close_time).total_seconds()
closed_age = (datetime.utcnow() - case.close_time).total_seconds()
modify_age = (datetime.utcnow() - max(timestamps)).total_seconds() modify_age = (datetime.utcnow() - max(timestamps)).total_seconds()
if closed_age > 60 * 60 * 24 and modify_age > 60 * 60 * 24: if closed_age > 60 * 60 * 24 and modify_age > 60 * 60 * 24:
arch_top = self.tl_archive_top arch_top = self.tl_archive_top
@@ -374,6 +379,7 @@ class DRNClerkBot(Task):
if user: if user:
party = user.group(1).strip() party = user.group(1).strip()
notice = _Notice("User talk:" + party, template, too_late) notice = _Notice("User talk:" + party, template, too_late)
notices.append(notice)


case.parties_notified = True case.parties_notified = True
return notices return notices
@@ -389,13 +395,13 @@ class DRNClerkBot(Task):


newest_ts = max([stamp for (user, stamp) in sigs]) newest_ts = max([stamp for (user, stamp) in sigs])
newest_user = [usr for (usr, stamp) in sigs if stamp == newest_ts][0] newest_user = [usr for (usr, stamp) in sigs if stamp == newest_ts][0]
case.modify_user = newest_ts
case.modify_time = newest_user
case.modify_time = newest_ts
case.modify_user = newest_user


newest_vts = max([stamp for (usr, stamp) in sigs if usr in volunteers]) newest_vts = max([stamp for (usr, stamp) in sigs if usr in volunteers])
newest_vuser = [usr for (usr, stamp) in sigs if stamp == newest_vts][0] newest_vuser = [usr for (usr, stamp) in sigs if stamp == newest_vts][0]
case.volunteer_user = newest_vol
case.volunteer_time = volsigs[1]
case.volunteer_time = newest_vts
case.volunteer_user = newest_vuser


if case.new: if case.new:
self.save_new_case(conn, case) self.save_new_case(conn, case)
@@ -452,7 +458,7 @@ class DRNClerkBot(Task):
query = "UPDATE case SET {0} WHERE case_id = ?".format(changes) query = "UPDATE case SET {0} WHERE case_id = ?".format(changes)
cursor.execute(query, args) cursor.execute(query, args)


def save(self, page, cases, kwargs):
def save(self, page, cases, kwargs, start):
"""Save any changes to the noticeboard.""" """Save any changes to the noticeboard."""
newtext = text = page.get() newtext = text = page.get()
counter = 0 counter = 0
@@ -472,7 +478,7 @@ class DRNClerkBot(Task):
log = "Someone has edited the page while we were working; restarting" log = "Someone has edited the page while we were working; restarting"
self.logger.warn(log) self.logger.warn(log)
return self.run(**kwargs) return self.run(**kwargs)
summary = self.summary.replace("$3", str(counter))
summary = self.clerk_summary.replace("$3", str(counter))
page.edit(text, summary, minor=True, bot=True) page.edit(text, summary, minor=True, bot=True)
self.logger.info(u"Saved page [[{0}]]".format(page.title)) self.logger.info(u"Saved page [[{0}]]".format(page.title))


@@ -495,7 +501,7 @@ class DRNClerkBot(Task):
self.logger.info(log) self.logger.info(log)
text += ("\n" if text else "") + template text += ("\n" if text else "") + template
try: try:
page.edit(text, summary, minor=False, bot=True)
page.edit(text, self.notify_summary, minor=False, bot=True)
except exceptions.EditError as error: except exceptions.EditError as error:
name, msg = type(error).name, error.message name, msg = type(error).name, error.message
log = u"Couldn't leave notice on {0} because of {1}: {2}" log = u"Couldn't leave notice on {0} because of {1}: {2}"
@@ -518,7 +524,7 @@ class DRNClerkBot(Task):
newtext = re.sub("<!-- sig begin -->(.*?)<!-- sig end -->", newtext = re.sub("<!-- sig begin -->(.*?)<!-- sig end -->",
"<!-- sig begin -->~~~ at ~~~~~<!-- sig end -->", "<!-- sig begin -->~~~ at ~~~~~<!-- sig end -->",
newtext) newtext)
page.edit(newtext, summary, minor=True, bot=True)
page.edit(newtext, self.chart_summary, minor=True, bot=True)
self.logger.info(u"Chart saved to [[{0}]]".format(page.title)) self.logger.info(u"Chart saved to [[{0}]]".format(page.title))


def compile_chart(self, conn): def compile_chart(self, conn):
@@ -552,13 +558,13 @@ class DRNClerkBot(Task):


def translate_status(self, num): def translate_status(self, num):
translations = { translations = {
STATUS_NEW: "n",
STATUS_OPEN: "o",
STATUS_STALE: "s",
STATUS_NEEDASSIST: "e",
STATUS_REVIEW: "r",
STATUS_RESOLVED: "d",
STATUS_CLOSED: "c",
self.STATUS_NEW: "n",
self.STATUS_OPEN: "o",
self.STATUS_STALE: "s",
self.STATUS_NEEDASSIST: "e",
self.STATUS_REVIEW: "r",
self.STATUS_RESOLVED: "d",
self.STATUS_CLOSED: "c",
} }
return translations[num] return translations[num]




Načítá se…
Zrušit
Uložit