示例#1
0
def update_workspace_preferences(workspace, preferences_json):
    _currentPreferences = WorkspacePreference.objects.filter(workspace=workspace)
    currentPreferences = {}
    for currentPreference in _currentPreferences:
        currentPreferences[currentPreference.name] = currentPreference

    for name in preferences_json.keys():
        preference_data = preferences_json[name]

        if name in currentPreferences:
            preference = currentPreferences[name]
        else:
            preference = WorkspacePreference(workspace=workspace, name=name)

        if 'value' in preference_data:
            preference.value = unicode(preference_data['value'])

        if 'inherit' in preference_data:
            preference.inherit = preference_data['inherit']

        preference.save()

    cache_key = make_workspace_preferences_cache_key(workspace.id)
    cache.delete(cache_key)

    from wirecloud.platform.get_data import _invalidate_cached_variable_values
    _invalidate_cached_variable_values(workspace)
示例#2
0
def update_workspace_preferences(workspace, preferences_json, invalidate_cache=True):

    changes = False

    # Create a preference instance dict
    currentPreferences = {}
    for currentPreference in workspace.workspacepreference_set.all():
        currentPreferences[currentPreference.name] = currentPreference

    # Update preference values
    for name in preferences_json.keys():
        preference_data = preferences_json[name]
        pref_changes = False

        if name in currentPreferences:
            preference = currentPreferences[name]
        else:
            preference = WorkspacePreference(workspace=workspace, name=name)

        if 'value' in preference_data and preference.value != preference_data['value']:
            preference.value = preference_data['value']
            changes = pref_changes = True

        if 'inherit' in preference_data and preference.inherit != preference_data['inherit']:
            preference.inherit = preference_data['inherit']
            changes = pref_changes = True

        if pref_changes:
            preference.save()

    if invalidate_cache and changes:
        cache_key = make_workspace_preferences_cache_key(workspace)
        cache.delete(cache_key)
        workspace.save()  # Invalidate workspace cache
示例#3
0
def update_workspace_preferences(workspace,
                                 preferences_json,
                                 invalidate_cache=True):

    changes = False

    # Create a preference instance dict
    currentPreferences = {}
    for currentPreference in workspace.workspacepreference_set.all():
        currentPreferences[currentPreference.name] = currentPreference

    # Update preference values
    for name in preferences_json.keys():
        preference_data = preferences_json[name]
        pref_changes = False

        if name in currentPreferences:
            preference = currentPreferences[name]
        else:
            preference = WorkspacePreference(workspace=workspace, name=name)
            changes = pref_changes = True

        if isinstance(preference_data, dict):
            if 'value' in preference_data and preference.value != preference_data[
                    'value']:
                preference.value = preference_data['value']
                changes = pref_changes = True

            if 'inherit' in preference_data and preference.inherit != preference_data[
                    'inherit']:
                preference.inherit = preference_data['inherit']
                changes = pref_changes = True
        else:
            if preference.value != preference_data:
                preference.value = preference_data
                changes = pref_changes = True

            if preference.inherit is not False:
                preference.inherit = False
                changes = pref_changes = True

        if pref_changes:
            preference.save()

    if invalidate_cache and changes:
        cache_key = make_workspace_preferences_cache_key(workspace)
        cache.delete(cache_key)
        workspace.save()  # Invalidate workspace cache