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