The @event/accept can now be used without parameters to see all events to be accepted

This commit is contained in:
Vincent Le Goff 2017-03-14 10:12:15 -07:00 committed by Griatch
parent 93c7b25fc4
commit f0d5bec05f
2 changed files with 64 additions and 1 deletions

View file

@ -367,6 +367,41 @@ class CmdEvent(COMMAND_DEFAULT_CLASS):
obj = self.obj
event_name = self.event_name
parameters = self.parameters
# If no object, display the list of events to be checked
if obj is None:
table = EvTable("ID", "Type", "Object", "Name", "Updated by",
"On", width=78)
table.reformat_column(0, align="r")
now = datetime.now()
for obj, name, number in self.handler.db.to_valid:
events = self.handler.db.events.get(obj, {}).get(name)
if events is None:
continue
try:
event = events[number]
except IndexError:
continue
type_name = obj.typeclass_path.split(".")[-1]
by = event.get("updated_by")
by = by.key if by else "|gUnknown|n"
updated_on = event.get("updated_on")
if updated_on is None:
updated_on = event.get("created_on")
if updated_on:
updated_on = time_format(
(now - updated_on).total_seconds(), 1)
else:
updated_on = "|gUnknown|n"
table.add_row(obj.id, type_name, obj, name, by, updated_on)
self.msg(table)
return
# An object was specified
events = self.handler.get_events(obj)
types = self.handler.get_event_types(obj)
@ -400,7 +435,7 @@ class CmdEvent(COMMAND_DEFAULT_CLASS):
if event["valid"]:
self.msg("This event has already been accepted.")
else:
event["valid"] = True
self.handler.accept_event(obj, event_name, parameters)
self.msg("The event {} {} of {} has been accepted.".format(
event_name, parameters, obj))

View file

@ -23,6 +23,7 @@ class EventHandler(DefaultScript):
# Permanent data to be stored
self.db.events = {}
self.db.to_valid = []
def at_start(self):
"""Set up the event system."""
@ -95,6 +96,11 @@ class EventHandler(DefaultScript):
"code": code,
})
# If not valid, set it in 'to_valid'
if not valid:
self.db.to_valid.append((obj, event_name, len(events) - 1))
# Build the definition to return (a dictionary)
definition = dict(events[-1])
definition["obj"] = obj
definition["name"] = event_name
@ -135,6 +141,28 @@ class EventHandler(DefaultScript):
"code": code,
})
# If not valid, set it in 'to_valid'
if not valid and (obj, event_name, number) not in self.db.to_valid:
self.db.to_valid.append((obj, event_name, number))
def accept_event(self, obj, event_name, number):
"""
Valid an event.
Args:
obj (Object): the object containing the event.
event_name (str): the name of the event.
number (int): the number of the event.
"""
obj_events = self.db.events.get(obj, {})
events = obj_events.get(event_name, [])
# Accept and connect the event
events[number].update({"valid": True})
if (obj, event_name, number) in self.db.to_valid:
self.db.to_valid.remove((obj, event_name, number))
def call_event(self, obj, event_name, *args):
"""
Call the event.