def add_default_permissions(instance, roles=None, models=None): # Audit is imported into models, so models can't be imported up top from treemap.models import MapFeature if roles is None: roles = Role.objects.filter(instance=instance) if models is None: # MapFeature is "Authorizable", but it is effectively abstract # Only it's subclasses should have permissions added models = all_subclasses(Authorizable) - {MapFeature} for role in roles: _add_default_permissions(models, role, instance)
def _get_model_class(class_dict, cls, model_name): """ Convert a model name (as a string) into the model class """ if model_name.startswith('udf:'): from udf import UserDefinedCollectionValue return UserDefinedCollectionValue if not class_dict: # One-time load of class dictionary for c in all_subclasses(cls): class_dict[c.__name__] = c return class_dict[model_name]