Events modules: can now !start with mixing time units; can indicate a end date
Fixes #3
This commit is contained in:
parent
e16101c838
commit
9c7884f092
@ -86,26 +86,59 @@ def start_countdown(msg):
|
|||||||
evt = ModuleEvent(call=fini, call_data=dict(strend=strnd))
|
evt = ModuleEvent(call=fini, call_data=dict(strend=strnd))
|
||||||
|
|
||||||
if len(msg.cmd) > 2:
|
if len(msg.cmd) > 2:
|
||||||
result = re.match("([0-9]+)([smhdjSMHDJ])?", msg.cmd[2])
|
result1 = re.findall("([0-9]+)([smhdjSMHDJ])?", msg.cmd[2])
|
||||||
if result is not None:
|
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:
|
||||||
try:
|
try:
|
||||||
if result.group(2) is not None and (result.group(2) == "m" or result.group(2) == "M"):
|
now = datetime.now()
|
||||||
strnd["end"] = datetime.now() + timedelta(minutes=int(result.group(1)))
|
if result3 is None or result3.group(4) is None: sec = 0
|
||||||
elif result.group(2) is not None and (result.group(2) == "h" or result.group(2) == "H"):
|
else: sec = int(result3.group(4))
|
||||||
strnd["end"] = datetime.now() + timedelta(hours=int(result.group(1)))
|
if result3 is None or result3.group(2) is None: minu = 0
|
||||||
elif result.group(2) is not None and (result.group(2) == "d" or result.group(2) == "D" or result.group(2) == "j" or result.group(2) == "J"):
|
else: minu = int(result3.group(2))
|
||||||
strnd["end"] = datetime.now() + timedelta(days=int(result.group(1)))
|
if result3 is None or result3.group(1) is None: hou = 0
|
||||||
else:
|
else: hou = int(result3.group(1))
|
||||||
strnd["end"] = datetime.now() + timedelta(seconds=int(result.group(1)))
|
|
||||||
|
if result2 is None or result2.group(3) is None: yea = now.year
|
||||||
|
else: yea = int(result2.group(3))
|
||||||
|
|
||||||
|
if result2 is not None and result3 is not None:
|
||||||
|
strnd["end"] = datetime(yea, int(result2.group(2)), int(result2.group(1)), hou, minu, sec)
|
||||||
|
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)
|
||||||
|
|
||||||
evt.end = strnd.getDate("end")
|
evt.end = strnd.getDate("end")
|
||||||
strnd["id"] = CONTEXT.add_event(evt)
|
strnd["id"] = CONTEXT.add_event(evt)
|
||||||
save()
|
save()
|
||||||
return Response(msg.sender, "%s commencé le %s et se terminera le %s."% (msg.cmd[1], datetime.now(), strnd.getDate("end")))
|
return Response(msg.sender, "%s commencé le %s et se terminera le %s." %
|
||||||
|
(msg.cmd[1], datetime.now().strftime("%A %d %B %Y a %H:%M:%S"),
|
||||||
|
strnd.getDate("end").strftime("%A %d %B %Y a %H:%M:%S")))
|
||||||
except:
|
except:
|
||||||
save()
|
DATAS.delChild(strnd)
|
||||||
return Response(msg.sender, "Impossible de définir la fin de %s.\n%s commencé le %s."% (msg.cmd[1], msg.cmd[1], datetime.now()))
|
return Response(msg.sender,
|
||||||
|
"Mauvais format de date pour l'evenement %s. Il n'a pas ete cree." % msg.cmd[1])
|
||||||
|
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":
|
||||||
|
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))
|
||||||
|
else:
|
||||||
|
strnd["end"] += timedelta(seconds=int(t))
|
||||||
|
evt.end = strnd.getDate("end")
|
||||||
|
strnd["id"] = CONTEXT.add_event(evt)
|
||||||
|
save()
|
||||||
|
return Response(msg.sender, "%s commencé le %s et se terminera le %s." %
|
||||||
|
(msg.cmd[1], datetime.now().strftime("%A %d %B %Y a %H:%M:%S"),
|
||||||
|
strnd.getDate("end").strftime("%A %d %B %Y a %H:%M:%S")))
|
||||||
save()
|
save()
|
||||||
return Response(msg.sender, "%s commencé le %s"% (msg.cmd[1], datetime.now()))
|
return Response(msg.sender, "%s commencé le %s"% (msg.cmd[1],
|
||||||
|
datetime.now().strftime("%A %d %B %Y a %H:%M:%S")))
|
||||||
else:
|
else:
|
||||||
return Response(msg.sender, "%s existe déjà."% (msg.cmd[1]))
|
return Response(msg.sender, "%s existe déjà."% (msg.cmd[1]))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user