def related_not_authorized(self, user, objs): """ Find all objects related to ``objs`` that should also be deleted. ``objs`` must be a homogenous iterable of objects (e.g. a QuerySet). """ collector = NestedObjects(using=DEFAULT_DB_ALIAS) collector.collect(objs) blocked = [] for model, obj in collector.instances_with_model(): admin_instance = admin.site._registry.get(obj.__class__, None) if admin_instance and hasattr(admin_instance, 'is_authorized'): if not admin_instance.is_authorized(user, obj): blocked += [obj] return blocked
def get_related_objects(obj): collector = NestedObjects(using='default') collector.collect(obj) return [(model._meta.verbose_name_plural, instance) for model, instance in collector.instances_with_model()]