From 6e5add47b6da6c2473f7960c52b27e0f7fecbef4 Mon Sep 17 00:00:00 2001 From: sandroroux <aroux@edx.org> Date: Wed, 18 Apr 2018 15:17:34 -0400 Subject: [PATCH] Adds retire_user mixin. --- openedx/core/djangolib/model_mixins.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/openedx/core/djangolib/model_mixins.py b/openedx/core/djangolib/model_mixins.py index f2433475f53..5ceefb67dc4 100644 --- a/openedx/core/djangolib/model_mixins.py +++ b/openedx/core/djangolib/model_mixins.py @@ -12,3 +12,25 @@ class DeprecatedModelMixin(object): Override to kill usage of this model. """ raise TypeError("This model has been deprecated and should not be used.") + + +class DeletableByUserValue(object): + """ + This mixin allows inheriting models to delete instances of the model + associated with some user. + """ + + @classmethod + def delete_by_user_value(cls, value, field): + """ + Deletes instances of this model where ``field`` equals ``value``. + + e.g. + ``delete_by_user_value(value='learner@example.com', field='email')`` + + Returns True if any instances were deleted. + Returns False otherwise. + """ + filter_kwargs = {field: value} + num_deleted_records, _ = cls.objects.filter(**filter_kwargs).delete() + return num_deleted_records > 0 -- GitLab