From 4e4ac23854d728c1016b88ee51bad98a6ac3a3db Mon Sep 17 00:00:00 2001 From: Andrew Bastien Date: Fri, 5 Apr 2019 04:44:49 -0400 Subject: [PATCH 1/2] Added at_object_creation_copy hook to DefaultObject. --- evennia/objects/objects.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/evennia/objects/objects.py b/evennia/objects/objects.py index cabcdccfe2..353d46172f 100644 --- a/evennia/objects/objects.py +++ b/evennia/objects/objects.py @@ -959,7 +959,22 @@ class DefaultObject(with_metaclass(TypeclassBase, ObjectDB)): if obj.key.startswith(key) and obj.key.lstrip(key).isdigit()) return "%s%03i" % (key, num) new_key = new_key or find_clone_key() - return ObjectDB.objects.copy_object(self, new_key=new_key) + new_obj = ObjectDB.objects.copy_object(self, new_key=new_key) + new_obj.at_object_creation_copy(self) + return new_obj + + def at_object_creation_copy(self, source_obj): + """ + Called by DefaultObject.copy(). Meant to be overloaded. In case there's extra data not covered by + .copy(), this can be used to deal with it. + + Args: + source_obj (Object): The Object this was copied from. + + Returns: + None + """ + pass def delete(self): """ From 7b35ec286b32809d36927e377583caaafd6bcf0c Mon Sep 17 00:00:00 2001 From: Andrew Bastien Date: Mon, 15 Apr 2019 09:47:14 -0400 Subject: [PATCH 2/2] Refactored the copy hook and added Kwargs. --- evennia/objects/objects.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/evennia/objects/objects.py b/evennia/objects/objects.py index 353d46172f..c72fa72ac6 100644 --- a/evennia/objects/objects.py +++ b/evennia/objects/objects.py @@ -933,7 +933,7 @@ class DefaultObject(with_metaclass(TypeclassBase, ObjectDB)): return obj, errors - def copy(self, new_key=None): + def copy(self, new_key=None, **kwargs): """ Makes an identical copy of this object, identical except for a new dbref in the database. If you want to customize the copy @@ -959,17 +959,17 @@ class DefaultObject(with_metaclass(TypeclassBase, ObjectDB)): if obj.key.startswith(key) and obj.key.lstrip(key).isdigit()) return "%s%03i" % (key, num) new_key = new_key or find_clone_key() - new_obj = ObjectDB.objects.copy_object(self, new_key=new_key) - new_obj.at_object_creation_copy(self) + new_obj = ObjectDB.objects.copy_object(self, new_key=new_key, **kwargs) + self.at_object_post_copy(new_obj, **kwargs) return new_obj - def at_object_creation_copy(self, source_obj): + def at_object_post_copy(self, new_obj, **kwargs): """ Called by DefaultObject.copy(). Meant to be overloaded. In case there's extra data not covered by .copy(), this can be used to deal with it. Args: - source_obj (Object): The Object this was copied from. + new_obj (Object): The new Copy of this object. Returns: None