from django.contrib.auth.decorators import login_required from django.conf import settings class login_required_if_public(object): def __init__(self, f): if settings.PUBLIC_SITE: self.f = login_required(f) else: self.f = f def __call__(self, *args, **kwargs): return self.f(*args, **kwargs)