from django.apps import apps from django.conf import settings from typing import Any, Dict, Type from .convert import AbcIdConverter prefixes = {} # type: Dict[Type[Any], str] def short_url(entity): if not prefixes: for k, m in settings.SHORTEN_MODELS.items(): prefixes[apps.get_model(m)] = k base = "/" if hasattr(settings, "SHORT_BASE_URL"): base = settings.SHORT_BASE_URL return base + prefixes[type(entity)] + AbcIdConverter().to_url(entity.id)