From 41eff3bec27c79ba0ef7aebbe386124e0a8facda Mon Sep 17 00:00:00 2001 From: "Casper V. Kristensen" Date: Thu, 24 Sep 2020 21:18:43 +0200 Subject: [PATCH] Add additional, model-imposed failsafe for (main) character deletion. --- drakul/users/models.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drakul/users/models.py b/drakul/users/models.py index b11e11d..13db412 100644 --- a/drakul/users/models.py +++ b/drakul/users/models.py @@ -123,5 +123,12 @@ class Character(models.Model): def clean(self): self.name = self.name.capitalize() + def delete(self, *args, **kwargs): + if self.user.main == self: + # Sanity check: this is already checked by the profile and admin forms which allow character deletion, but + # we check it again to avoid unintentionally cascading the delete to the entire user. + raise ValidationError("Can't delete user's main character.") + return super().delete(*args, **kwargs) + def __str__(self): return self.name