class UserWrapper(object): _user_model_cache = None def _get_model(self): if self._user_model_cache is None: from django.conf import settings if not getattr(settings, 'AUTH_USER_MODEL', False): self._user_model_cache = BaseUser else: try: app_label, model_name = settings.AUTH_USER_MODEL.split('.') self._user_model_cache = models.get_model(app_label, model_name) except (ImportError): # TODO: Error logging raise Exception("Big badaboom") return self._user_model_cache def __getattr__(self, name): return getattr(self._get_model(), name) def __call__(self, *args, **kwargs): return self._get_model()(*args, **kwargs)