From a2e7246d15b60d654944a5f8bb9aaed3887b8a34 Mon Sep 17 00:00:00 2001 From: Griatch Date: Tue, 14 Aug 2012 00:40:48 +0200 Subject: [PATCH] Changed so deleting a PlayerDB object will automatically also destroy its connected User object. --- src/commands/default/admin.py | 2 +- src/players/models.py | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/commands/default/admin.py b/src/commands/default/admin.py index fdc5c3f909..f16354b821 100644 --- a/src/commands/default/admin.py +++ b/src/commands/default/admin.py @@ -372,8 +372,8 @@ class CmdDelPlayer(MuxCommand): for session in sessions: session.msg(string) session.disconnect() - player.delete() user.delete() + player.delete() caller.msg("Player %s was successfully deleted." % uname) diff --git a/src/players/models.py b/src/players/models.py index 25b0f6ca99..dd51c67d20 100644 --- a/src/players/models.py +++ b/src/players/models.py @@ -363,7 +363,18 @@ class PlayerDB(TypedObject): """ return self.__class__.objects.swap_character(self, new_character, delete_old_character=delete_old_character) - + def delete(self, *args, **kwargs): + "Make sure to delete user also when deleting player - the two may never exist separately." + try: + if self.user: + self.user.delete() + except AssertionError: + pass + try: + super(PlayerDB, self).delete(*args, **kwargs) + except AssertionError: + # this means deleting the user already cleared out the Player object. + pass # # Execution/action methods #