Add the @event/accept switch
This commit is contained in:
parent
5e43f1370f
commit
93c7b25fc4
1 changed files with 83 additions and 5 deletions
|
|
@ -182,6 +182,7 @@ class CmdEvent(COMMAND_DEFAULT_CLASS):
|
||||||
"""Display the list of events connected to the object."""
|
"""Display the list of events connected to the object."""
|
||||||
obj = self.obj
|
obj = self.obj
|
||||||
event_name = self.event_name
|
event_name = self.event_name
|
||||||
|
parameters = self.parameters
|
||||||
events = self.handler.get_events(obj)
|
events = self.handler.get_events(obj)
|
||||||
types = self.handler.get_event_types(obj)
|
types = self.handler.get_event_types(obj)
|
||||||
|
|
||||||
|
|
@ -192,12 +193,51 @@ class CmdEvent(COMMAND_DEFAULT_CLASS):
|
||||||
self.msg("No event {} has been set on {}.".format(event_name, obj))
|
self.msg("No event {} has been set on {}.".format(event_name, obj))
|
||||||
return
|
return
|
||||||
|
|
||||||
# Create the table
|
if parameters:
|
||||||
|
# Check that the parameter points to an existing event
|
||||||
|
try:
|
||||||
|
parameters = int(parameters) - 1
|
||||||
|
assert parameters >= 0
|
||||||
|
event = events[event_name][parameters]
|
||||||
|
except (AssertionError, ValueError):
|
||||||
|
self.msg("The event {} {} cannot be found in {}.".format(
|
||||||
|
event_name, parameters, obj))
|
||||||
|
return
|
||||||
|
|
||||||
|
# Display the events' details
|
||||||
|
author = event.get("author")
|
||||||
|
author = author.key if author else "|gUnknown|n"
|
||||||
|
updated_by = event.get("updated_by")
|
||||||
|
updated_by = updated_by.key if updated_by else "|gUnknown|n"
|
||||||
|
created_on = event.get("created_on")
|
||||||
|
created_on = created_on.strftime("%Y-%m-%d %H:%M:%S") \
|
||||||
|
if created_on else "|gUnknown|n"
|
||||||
|
updated_on = event.get("updated_on")
|
||||||
|
updated_on = updated_on.strftime("%Y-%m-%d %H:%M:%S") \
|
||||||
|
if updated_on else "|gUnknown|n"
|
||||||
|
number = parameters + 1
|
||||||
|
msg = "Event {} {} of {}:".format(event_name, number, obj)
|
||||||
|
msg += "\nCreated by {} at {}.".format(author, created_on)
|
||||||
|
msg += "\nUpdated by {} at {}".format(updated_by, updated_on)
|
||||||
|
|
||||||
|
if self.is_validator:
|
||||||
|
if event.get("valid"):
|
||||||
|
msg += "\nThis event is |rconnected|n and active."
|
||||||
|
else:
|
||||||
|
msg += "\nThis event |rhasn't been|n accepted yet."
|
||||||
|
|
||||||
|
msg += "\nEvent code:\n "
|
||||||
|
msg += "\n ".join([l for l in event["code"].splitlines()])
|
||||||
|
self.msg(msg)
|
||||||
|
return
|
||||||
|
|
||||||
|
# No parameter has been specified, display the table of events
|
||||||
cols = ["Number", "Author", "Updated"]
|
cols = ["Number", "Author", "Updated"]
|
||||||
if self.is_validator:
|
if self.is_validator:
|
||||||
cols.append("Valid")
|
cols.append("Valid")
|
||||||
|
|
||||||
table = EvTable(*cols, width=78)
|
table = EvTable(*cols, width=78)
|
||||||
|
table.reformat_column(0, align="r")
|
||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
for i, event in enumerate(created):
|
for i, event in enumerate(created):
|
||||||
author = event.get("author")
|
author = event.get("author")
|
||||||
|
|
@ -217,11 +257,13 @@ class CmdEvent(COMMAND_DEFAULT_CLASS):
|
||||||
row.append("Yes" if event.get("valid") else "No")
|
row.append("Yes" if event.get("valid") else "No")
|
||||||
table.add_row(*row)
|
table.add_row(*row)
|
||||||
|
|
||||||
table.reformat_column(0, align="r")
|
|
||||||
self.msg(table)
|
self.msg(table)
|
||||||
else:
|
else:
|
||||||
table = EvTable("Event name", "Number", "Description",
|
table = EvTable("Event name", "Number", "Description",
|
||||||
width=78)
|
valign="t", width=78)
|
||||||
|
table.reformat_column(0, width=20)
|
||||||
|
table.reformat_column(1, width=10, align="r")
|
||||||
|
table.reformat_column(2, width=48)
|
||||||
for name, infos in sorted(types.items()):
|
for name, infos in sorted(types.items()):
|
||||||
number = len(events.get(name, []))
|
number = len(events.get(name, []))
|
||||||
lines = sum(len(e["code"].splitlines()) for e in \
|
lines = sum(len(e["code"].splitlines()) for e in \
|
||||||
|
|
@ -230,7 +272,6 @@ class CmdEvent(COMMAND_DEFAULT_CLASS):
|
||||||
description = infos[1].splitlines()[0]
|
description = infos[1].splitlines()[0]
|
||||||
table.add_row(name, no, description)
|
table.add_row(name, no, description)
|
||||||
|
|
||||||
table.reformat_column(1, width=10, align="r")
|
|
||||||
self.msg(table)
|
self.msg(table)
|
||||||
|
|
||||||
def add_event(self):
|
def add_event(self):
|
||||||
|
|
@ -324,7 +365,44 @@ class CmdEvent(COMMAND_DEFAULT_CLASS):
|
||||||
def accept_event(self):
|
def accept_event(self):
|
||||||
"""Accept an event."""
|
"""Accept an event."""
|
||||||
obj = self.obj
|
obj = self.obj
|
||||||
self.msg("Calling accept.")
|
event_name = self.event_name
|
||||||
|
parameters = self.parameters
|
||||||
|
events = self.handler.get_events(obj)
|
||||||
|
types = self.handler.get_event_types(obj)
|
||||||
|
|
||||||
|
# If no event name is specified, display the list of events
|
||||||
|
if not event_name:
|
||||||
|
self.list_events()
|
||||||
|
return
|
||||||
|
|
||||||
|
# Check that the event exists
|
||||||
|
if not event_name in events:
|
||||||
|
self.msg("The event name {} can't be found in {}.".format(
|
||||||
|
event_name, obj))
|
||||||
|
return
|
||||||
|
|
||||||
|
if not parameters:
|
||||||
|
self.msg("Which event do you wish to accept? Specify a number.")
|
||||||
|
self.list_events()
|
||||||
|
return
|
||||||
|
|
||||||
|
# Check that the parameter points to an existing event
|
||||||
|
try:
|
||||||
|
parameters = int(parameters) - 1
|
||||||
|
assert parameters >= 0
|
||||||
|
event = events[event_name][parameters]
|
||||||
|
except (AssertionError, ValueError):
|
||||||
|
self.msg("The event {} {} cannot be found in {}.".format(
|
||||||
|
event_name, parameters, obj))
|
||||||
|
return
|
||||||
|
|
||||||
|
# Accept the event
|
||||||
|
if event["valid"]:
|
||||||
|
self.msg("This event has already been accepted.")
|
||||||
|
else:
|
||||||
|
event["valid"] = True
|
||||||
|
self.msg("The event {} {} of {} has been accepted.".format(
|
||||||
|
event_name, parameters, obj))
|
||||||
|
|
||||||
# Private functions to handle editing
|
# Private functions to handle editing
|
||||||
def _ev_load(caller):
|
def _ev_load(caller):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue