From 9e452d22a9bd32430a71d23e9c20847f082e104a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=A9munaire?= Date: Thu, 1 Nov 2012 09:30:00 +0100 Subject: [PATCH] Events modules: use W in a duration for weeks counter, some fixes --- consumer.py | 6 +++--- modules/events.xml | 3 ++- modules/events/__init__.py | 20 +++++++++++++++++--- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/consumer.py b/consumer.py index 2486460..a71a51a 100644 --- a/consumer.py +++ b/consumer.py @@ -74,10 +74,10 @@ class EventConsumer: try: self.evt.launch_check() except: - print ("\033[1;31mError:.\033[0 during event end") + print ("\033[1;31mError:\033[0m during event end") exc_type, exc_value, exc_traceback = sys.exc_info() - sys.stderr.write (traceback.format_exception_only(exc_type, - exc_value)[0]) + traceback.print_exception(exc_type, exc_value, + exc_traceback) if self.evt.next is not None: self.context.add_event(self.evt, self.evt.id) diff --git a/modules/events.xml b/modules/events.xml index 7e04f9e..298275f 100644 --- a/modules/events.xml +++ b/modules/events.xml @@ -7,7 +7,8 @@ - + + diff --git a/modules/events/__init__.py b/modules/events/__init__.py index 904bba4..3423678 100644 --- a/modules/events/__init__.py +++ b/modules/events/__init__.py @@ -48,6 +48,15 @@ def fini(d, strend): DATAS.delChild(DATAS.index[strend["name"]]) save() +def cmd_gouter(msg): + ndate = datetime.today() + ndate = datetime(ndate.year, ndate.month, ndate.day, 16, 42) + return Response(msg.sender, + msg.countdown_format(ndate, + "Le goûter aura lieu dans %s, préparez vos biscuits !", + "Nous avons %s de retard pour le goûter :("), + channel=msg.channel) + def cmd_we(msg): ndate = datetime.today() + timedelta(5 - datetime.today().weekday()) ndate = datetime(ndate.year, ndate.month, ndate.day, 0, 0, 1) @@ -86,7 +95,7 @@ def start_countdown(msg): evt = ModuleEvent(call=fini, call_data=dict(strend=strnd)) if len(msg.cmd) > 2: - result1 = re.findall("([0-9]+)([smhdjSMHDJ])?", msg.cmd[2]) + result1 = re.findall("([0-9]+)([smhdjwSMHDJW])?", msg.cmd[2]) result2 = re.match("([0-3]?[0-9])/([0-1]?[0-9])/((19|20)?[01239][0-9])", msg.cmd[2]) result3 = re.match("([0-2]?[0-9]):([0-5]?[0-9])(:([0-5]?[0-9]))?", msg.cmd[2]) if result2 is not None or result3 is not None: @@ -107,7 +116,10 @@ def start_countdown(msg): elif result2 is not None: strnd["end"] = datetime(int(result2.group(3)), int(result2.group(2)), int(result2.group(1))) elif result3 is not None: - strnd["end"] = datetime(now.year, now.month, now.day, hou, minu, sec) + if hou * 3600 + minu * 60 + sec > now.hour * 3600 + now.minute * 60 + now.second: + strnd["end"] = datetime(now.year, now.month, now.day, hou, minu, sec) + else: + strnd["end"] = datetime(now.year, now.month, now.day + 1, hou, minu, sec) evt.end = strnd.getDate("end") strnd["id"] = CONTEXT.add_event(evt) @@ -122,12 +134,14 @@ def start_countdown(msg): elif result1 is not None and len(result1) > 0: strnd["end"] = datetime.now() for (t, g) in result1: - if g is None or g == "m" or g == "M": + if g is None or g == "" or g == "m" or g == "M": strnd["end"] += timedelta(minutes=int(t)) elif g == "h" or g == "H": strnd["end"] += timedelta(hours=int(t)) elif g == "d" or g == "D" or g == "j" or g == "J": strnd["end"] += timedelta(days=int(t)) + elif g == "w" or g == "W": + strnd["end"] += timedelta(days=int(t)*7) else: strnd["end"] += timedelta(seconds=int(t)) evt.end = strnd.getDate("end")