Newer
Older
"""
Custom Django Model mixins.
"""
class DeprecatedModelMixin(object):
"""
Used to make a class unusable in practice, but leave database tables intact.
"""
def __init__(self, *args, **kwargs): # pylint: disable=unused-argument
"""
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 specified 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