change utils.iso8601_format to default to no milliseconds, switch to using
utils.iso8601 functions in badges.py
This commit is contained in:
parent
537613545d
commit
87340bcbf9
4 changed files with 19 additions and 14 deletions
|
@ -9,10 +9,6 @@ DATE_FORMAT = "%Y-%m-%d"
|
||||||
class Module(ModuleManager.BaseModule):
|
class Module(ModuleManager.BaseModule):
|
||||||
def _now(self):
|
def _now(self):
|
||||||
return datetime.datetime.utcnow()
|
return datetime.datetime.utcnow()
|
||||||
def _format_datetime(self, dt: datetime.datetime):
|
|
||||||
return datetime.datetime.strftime(dt, DATETIME_FORMAT)
|
|
||||||
def _parse_datetime(self, dt: str):
|
|
||||||
return datetime.datetime.strptime(dt, DATETIME_FORMAT)
|
|
||||||
|
|
||||||
def _parse_date(self, dt: str):
|
def _parse_date(self, dt: str):
|
||||||
if dt.lower() == "today":
|
if dt.lower() == "today":
|
||||||
|
@ -64,7 +60,7 @@ class Module(ModuleManager.BaseModule):
|
||||||
found_badge = self._find_badge(badges, badge)
|
found_badge = self._find_badge(badges, badge)
|
||||||
|
|
||||||
if found_badge:
|
if found_badge:
|
||||||
dt = self._parse_datetime(badges[found_badge])
|
dt = utils.iso8601_parse(badges[found_badge])
|
||||||
days_since = self._days_since(now, dt)
|
days_since = self._days_since(now, dt)
|
||||||
event["stdout"].write("(%s) %s on day %s (%s)" % (
|
event["stdout"].write("(%s) %s on day %s (%s)" % (
|
||||||
event["user"].nickname, found_badge, days_since,
|
event["user"].nickname, found_badge, days_since,
|
||||||
|
@ -84,7 +80,7 @@ class Module(ModuleManager.BaseModule):
|
||||||
now = self._round_up_day(self._now())
|
now = self._round_up_day(self._now())
|
||||||
badges = []
|
badges = []
|
||||||
for badge, date in self._get_badges(user).items():
|
for badge, date in self._get_badges(user).items():
|
||||||
days_since = self._days_since(now, self._parse_datetime(date))
|
days_since = self._days_since(now, utils.iso8601_parse(date))
|
||||||
badges.append("%s on day %s" % (
|
badges.append("%s on day %s" % (
|
||||||
badge, days_since))
|
badge, days_since))
|
||||||
|
|
||||||
|
@ -105,7 +101,7 @@ class Module(ModuleManager.BaseModule):
|
||||||
if badge_name.lower() == badge_lower:
|
if badge_name.lower() == badge_lower:
|
||||||
raise utils.EventError("You already have a '%s' badge" % badge)
|
raise utils.EventError("You already have a '%s' badge" % badge)
|
||||||
|
|
||||||
badges[badge] = self._format_datetime(self._now())
|
badges[badge] = utils.iso8601_format_now()
|
||||||
self._set_badges(event["user"], badges)
|
self._set_badges(event["user"], badges)
|
||||||
event["stdout"].write("Added '%s' badge" % badge)
|
event["stdout"].write("Added '%s' badge" % badge)
|
||||||
|
|
||||||
|
@ -141,7 +137,7 @@ class Module(ModuleManager.BaseModule):
|
||||||
found_badge = self._find_badge(badges, badge)
|
found_badge = self._find_badge(badges, badge)
|
||||||
|
|
||||||
if found_badge:
|
if found_badge:
|
||||||
badges[found_badge] = self._format_datetime(self._now())
|
badges[found_badge] = utils.iso8601_format_now()
|
||||||
self._set_badges(event["user"], badges)
|
self._set_badges(event["user"], badges)
|
||||||
event["stdout"].write("Reset badge '%s'" % found_badge)
|
event["stdout"].write("Reset badge '%s'" % found_badge)
|
||||||
else:
|
else:
|
||||||
|
@ -164,7 +160,7 @@ class Module(ModuleManager.BaseModule):
|
||||||
|
|
||||||
dt = self._parse_date(event["args_split"][-1])
|
dt = self._parse_date(event["args_split"][-1])
|
||||||
|
|
||||||
badges[found_badge] = self._format_datetime(dt)
|
badges[found_badge] = utils.iso8601_format(dt)
|
||||||
self._set_badges(event["user"], badges)
|
self._set_badges(event["user"], badges)
|
||||||
event["stdout"].write("Updated '%s' badge to %s" % (
|
event["stdout"].write("Updated '%s' badge to %s" % (
|
||||||
found_badge, self._date_str(dt)))
|
found_badge, self._date_str(dt)))
|
||||||
|
@ -182,7 +178,7 @@ class Module(ModuleManager.BaseModule):
|
||||||
found_badge = self._find_badge(badges, badge)
|
found_badge = self._find_badge(badges, badge)
|
||||||
dt = self._parse_date(event["args_split"][-1])
|
dt = self._parse_date(event["args_split"][-1])
|
||||||
|
|
||||||
badges[found_badge or badge] = self._format_datetime(dt)
|
badges[found_badge or badge] = utils.iso8601_format(dt)
|
||||||
self._set_badges(event["user"], badges)
|
self._set_badges(event["user"], badges)
|
||||||
|
|
||||||
add_or_update = "Added" if not found_badge else "Updated"
|
add_or_update = "Added" if not found_badge else "Updated"
|
||||||
|
|
|
@ -236,7 +236,8 @@ class Server(IRCObject.Object):
|
||||||
self.ping_sent = False
|
self.ping_sent = False
|
||||||
|
|
||||||
now = datetime.datetime.utcnow()
|
now = datetime.datetime.utcnow()
|
||||||
self.set_setting("last-read", utils.iso8601_format(now))
|
self.set_setting("last-read",
|
||||||
|
utils.iso8601_format(now, milliseconds=True))
|
||||||
return lines
|
return lines
|
||||||
|
|
||||||
def send(self, line_parsed: IRCLine.ParsedLine):
|
def send(self, line_parsed: IRCLine.ParsedLine):
|
||||||
|
|
|
@ -13,7 +13,7 @@ LEVELS = {
|
||||||
class BitBotFormatter(logging.Formatter):
|
class BitBotFormatter(logging.Formatter):
|
||||||
def formatTime(self, record, datefmt=None):
|
def formatTime(self, record, datefmt=None):
|
||||||
datetime_obj = datetime.datetime.fromtimestamp(record.created)
|
datetime_obj = datetime.datetime.fromtimestamp(record.created)
|
||||||
return utils.iso8601_format(datetime_obj)
|
return utils.iso8601_format(datetime_obj, milliseconds=True)
|
||||||
|
|
||||||
class Log(object):
|
class Log(object):
|
||||||
def __init__(self, to_file: bool, level: str, location: str):
|
def __init__(self, to_file: bool, level: str, location: str):
|
||||||
|
|
|
@ -7,9 +7,17 @@ class Direction(enum.Enum):
|
||||||
|
|
||||||
ISO8601_PARSE = "%Y-%m-%dT%H:%M:%S%z"
|
ISO8601_PARSE = "%Y-%m-%dT%H:%M:%S%z"
|
||||||
|
|
||||||
def iso8601_format(dt: datetime.datetime) -> str:
|
def iso8601_format(dt: datetime.datetime, milliseconds: bool=False) -> str:
|
||||||
formatted = dt.isoformat(timespec="milliseconds")
|
timespec = "seconds"
|
||||||
|
if milliseconds:
|
||||||
|
timespec = "milliseconds"
|
||||||
|
|
||||||
|
formatted = dt.isoformat(timespec=timespec)
|
||||||
return "%sZ" % formatted
|
return "%sZ" % formatted
|
||||||
|
def iso8601_format_now() -> str:
|
||||||
|
return iso8601_format(datetime.datetime.utcnow())
|
||||||
|
def iso8601_parse(s: str) -> datetime.datetime:
|
||||||
|
return datetime.datetime.strptime(s, ISO8601_PARSE)
|
||||||
|
|
||||||
TIME_SECOND = 1
|
TIME_SECOND = 1
|
||||||
TIME_MINUTE = TIME_SECOND*60
|
TIME_MINUTE = TIME_SECOND*60
|
||||||
|
|
Loading…
Reference in a new issue