Events modules: use W in a duration for weeks counter, some fixes

This commit is contained in:
Némunaire 2012-11-01 09:30:00 +01:00
parent a975421e02
commit 9e452d22a9
3 changed files with 22 additions and 7 deletions

View File

@ -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)

View File

@ -7,7 +7,8 @@
<message type="cmd" name="eventslist" call="liste" />
<message type="cmd" name="eventliste" call="liste" />
<message type="cmd" name="eventsliste" call="liste" />
<message type="cmd" name="we" call="cmd_we" />
<message type="cmd" name="gouter" call="cmd_gouter" />
<message type="cmd" name="goûter" call="cmd_gouter" />
<message type="cmd" name="week-end" call="cmd_we" />
<message type="cmd" name="weekend" call="cmd_we" />
<message type="cmd" name="new-year" call="cmd_newyear" />

View File

@ -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")