Browse Source

Support inserting a minimum TIMESTAMP value that MySQL likes.

tags/v0.1^2
Ben Kurtovic 12 years ago
parent
commit
98e151f08e
1 changed files with 8 additions and 4 deletions
  1. +8
    -4
      earwigbot/tasks/drn_clerkbot.py

+ 8
- 4
earwigbot/tasks/drn_clerkbot.py View File

@@ -95,6 +95,9 @@ class DRNClerkBot(Task):
self.conn_data = kwargs self.conn_data = kwargs
self.db_access_lock = RLock() self.db_access_lock = RLock()


# Minimum size a MySQL TIMESTAMP field can hold:
self.min_ts = datetime(1970, 1, 1, 0, 0, 1)

def run(self, **kwargs): def run(self, **kwargs):
"""Entry point for a task event.""" """Entry point for a task event."""
if not self.db_access_lock.acquire(False): # Non-blocking if not self.db_access_lock.acquire(False): # Non-blocking
@@ -203,10 +206,9 @@ class DRNClerkBot(Task):
f_time = datetime.strptime(match.group(2), strp) f_time = datetime.strptime(match.group(2), strp)
else: else:
f_user, f_time = None, datetime.utcnow() f_user, f_time = None, datetime.utcnow()
zero = datetime.min
case = _Case(id_, title, status, self.STATUS_UNKNOWN, f_user, case = _Case(id_, title, status, self.STATUS_UNKNOWN, f_user,
f_time, "", zero, "", zero, zero, False, False, 0,
new=True)
f_time, "", self.min_ts, "", self.min_ts,
self.min_ts, False, False, 0, new=True)
cases.append(case) cases.append(case)
else: else:
case.status = status case.status = status
@@ -328,7 +330,7 @@ class DRNClerkBot(Task):
return [] return []


def clerk_closed_case(self, case, signatures): def clerk_closed_case(self, case, signatures):
if case.close_time == datetime.min:
if case.close_time == self.min_ts:
case.close_time = datetime.utcnow() case.close_time = datetime.utcnow()
timestamps = [timestamp for (editor, timestamp) in signatures] timestamps = [timestamp for (editor, timestamp) in signatures]
closed_age = (datetime.utcnow() - case.close_time).total_seconds() closed_age = (datetime.utcnow() - case.close_time).total_seconds()
@@ -356,6 +358,8 @@ class DRNClerkBot(Task):
signatures = [] signatures = []
for userlink, stamp in matches: for userlink, stamp in matches:
username = userlink.split("/", 1)[0].replace("_", " ").strip() username = userlink.split("/", 1)[0].replace("_", " ").strip()
if username == "DoNotArchiveUntil":
continue
stamp = stamp.strip() stamp = stamp.strip()
timestamp = datetime.strptime(stamp, "%H:%M, %d %B %Y (UTC)") timestamp = datetime.strptime(stamp, "%H:%M, %d %B %Y (UTC)")
signatures.append((username, timestamp)) signatures.append((username, timestamp))


Loading…
Cancel
Save