Files
RasadDam_Backend/apps/core/services/visibility_service.py

25 lines
676 B
Python

from apps.core.visibility_registry import VISIBILITY_MAP_BY_ORG_KEY
def apply_visibility_filter_by_org_type(queryset, org):
"""
Dynamically filter queryset based on user's organization type and model.
"""
if not org:
return queryset.none()
model_name = queryset.model.__name__.lower()
if model_name not in VISIBILITY_MAP_BY_ORG_KEY:
return queryset
org_type_key = getattr(org.type, 'key', None)
visibility_field = VISIBILITY_MAP_BY_ORG_KEY[model_name].get(org_type_key)
if visibility_field is None:
return queryset
filter_kwargs = {f"{visibility_field}": org}
return queryset.filter(**filter_kwargs)