mirror of
https://github.com/evennia/evennia.git
synced 2026-04-04 15:07:16 +02:00
The @event/accept can now be used without parameters to see all events to be accepted
This commit is contained in:
parent
93c7b25fc4
commit
f0d5bec05f
2 changed files with 64 additions and 1 deletions
|
|
@ -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))
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue