def queue_settings_calculator()

in airavata_django_portal_sdk/queue_settings_calculators.py [0:0]


def queue_settings_calculator(_func=None, *, id=None, name=None, **kwargs):
    """Decorator for registering queue settings calculator functions."""
    def decorator(func):
        # Register decorator
        name_ = name
        if name_ is None:
            name_ = func.__name__
        id_ = id
        if id_ is None:
            id_ = func.__module__ + ":" + func.__name__
        if exists(id_):
            raise Exception(f"Duplicate queue settings calculator id: {id_}")
        QUEUE_SETTINGS_CALCULATORS.append(QueueSettingsCalculator(id_, name_, func))
        return func
    if _func is None:
        return decorator
    else:
        return decorator(_func)