From 3176f4b10083566c132b69a2c842809681d838dc Mon Sep 17 00:00:00 2001 From: Vincent Le Goff Date: Thu, 31 Aug 2017 21:38:49 +0200 Subject: [PATCH] Fix a bug in the permanent delay when the object is destroyed --- evennia/scripts/taskhandler.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/evennia/scripts/taskhandler.py b/evennia/scripts/taskhandler.py index 27dc702142..f4819ba076 100644 --- a/evennia/scripts/taskhandler.py +++ b/evennia/scripts/taskhandler.py @@ -39,6 +39,7 @@ class TaskHandler(object): It populates `self.tasks` according to the ServerConfig. """ + to_save = False value = ServerConfig.objects.conf("delayed_tasks", default={}) if isinstance(value, basestring): tasks = dbunserialize(value) @@ -51,9 +52,16 @@ class TaskHandler(object): if isinstance(callback, tuple): # `callback` can be an object and name for instance methods obj, method = callback + if obj is None: + to_save = True + continue + callback = getattr(obj, method) self.tasks[task_id] = (date, callback, args, kwargs) + if to_save: + self.save() + def save(self): """Save the tasks in ServerConfig.""" for task_id, (date, callback, args, kwargs) in self.tasks.items():