Пример #1
0
def set_feature_enabled(event, name, state):
    """Enables/disables a feature for an event

    :param event: The event.
    :param name: The name of the feature.
    :param state: If the feature is enabled or not.
    :return: Boolean indicating if the state of the feature changed.
    """
    feature_definitions = get_feature_definitions()
    feature = feature_definitions[name]
    enabled = get_enabled_features(event)
    if name in enabled and name not in get_enabled_features(
            event, only_explicit=True):
        # if the feature was only implicitly enabled, enable it explicitly
        enabled.remove(name)
    names = {name} | feature.requires_deep
    if (state and names <= enabled) or (not state and name not in enabled):
        return False
    if state:
        funcs = {feature_definitions[x].enabled for x in names - enabled}
        enabled |= names
    else:
        old = set(enabled)
        enabled -= feature.required_by_deep | {name}
        funcs = {feature_definitions[x].disabled for x in old - enabled}
    features_event_settings.set(event, 'enabled', sorted(enabled))
    db.session.flush()
    for func in funcs:
        func(event)
    return True
Пример #2
0
def set_feature_enabled(event, name, state):
    """Enables/disables a feature for an event

    :param event: The event.
    :param name: The name of the feature.
    :param state: If the feature is enabled or not.
    :return: Boolean indicating if the state of the feature changed.
    """
    feature_definitions = get_feature_definitions()
    feature = feature_definitions[name]
    enabled = get_enabled_features(event)
    if name in enabled and name not in get_enabled_features(event, only_explicit=True):
        # if the feature was only implicitly enabled, enable it explicitly
        enabled.remove(name)
    names = {name} | feature.requires_deep
    if (state and names <= enabled) or (not state and name not in enabled):
        return False
    if state:
        funcs = {feature_definitions[x].enabled for x in names - enabled}
        enabled |= names
    else:
        old = set(enabled)
        enabled -= feature.required_by_deep | {name}
        funcs = {feature_definitions[x].disabled for x in old - enabled}
    features_event_settings.set(event, 'enabled', sorted(enabled))
    db.session.flush()
    for func in funcs:
        func(event)
    return True
Пример #3
0
def set_feature_enabled(event, name, state):
    """Enables/disables a feature for an event

    :param event: The event.
    :param name: The name of the feature.
    :param state: If the feature is enabled or not.
    :return: Boolean indicating if the state of the feature changed.
    """
    feature = get_feature_definition(name)
    enabled = get_enabled_features(event)
    if (name in enabled) == state:
        return False
    if state:
        enabled.add(name)
        func = feature.enabled
    else:
        enabled.discard(name)
        func = feature.disabled
    features_event_settings.set(event, 'enabled', sorted(enabled))
    db.session.flush()
    func(event)
    return True