helper to get all inheriting classes

This commit is contained in:
Matthias 2021-12-01 20:36:15 +01:00
parent 88d8acfebd
commit a73a4255c2
No known key found for this signature in database
GPG Key ID: F50EF5741D33E076

View File

@ -736,3 +736,18 @@ def get_objectreference(obj, type_ref: str = 'content_type', object_ref: str = '
'model': str(model_cls._meta.verbose_name), 'model': str(model_cls._meta.verbose_name),
**ret **ret
} }
def inheritors(cls):
"""
Return all classes that are subclasses from the supplied cls
"""
subcls = set()
work = [cls]
while work:
parent = work.pop()
for child in parent.__subclasses__():
if child not in subcls:
subcls.add(child)
work.append(child)
return subcls