From 492e585ab7e04b306762cddcad9df42d4e07d471 Mon Sep 17 00:00:00 2001 From: Tom Robinson <tlrobinson@gmail.com> Date: Tue, 11 Oct 2016 17:02:05 -0700 Subject: [PATCH] Fix SQL button logic. Resolves #3515 --- frontend/src/metabase/query_builder/QueryHeader.jsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/frontend/src/metabase/query_builder/QueryHeader.jsx b/frontend/src/metabase/query_builder/QueryHeader.jsx index 58949baa6a3..3f56290fd63 100644 --- a/frontend/src/metabase/query_builder/QueryHeader.jsx +++ b/frontend/src/metabase/query_builder/QueryHeader.jsx @@ -169,7 +169,7 @@ export default class QueryHeader extends Component { } getHeaderButtons() { - const { isNew, isDirty, isEditing, tableMetadata } = this.props; + const { isNew, isDirty, isEditing, tableMetadata, databases } = this.props; var buttonSections = []; @@ -335,9 +335,12 @@ export default class QueryHeader extends Component { key="queryModeToggle" mode={this.props.card.dataset_query.type} allowNativeToQuery={isNew && !isDirty} - allowQueryToNative={isNew && (!isDirty || - (tableMetadata && tableMetadata.db && tableMetadata.db.native_permissions === "write") - )} + allowQueryToNative={tableMetadata ? + // if a table is selected, only enable if user has native write permissions for THAT database + tableMetadata.db && tableMetadata.db.native_permissions === "write" : + // if no table is selected, only enable if user has native write permissions for ANY database + _.any(databases, (db) => db.native_permissions === "write") + } nativeForm={this.props.result && this.props.result.data && this.props.result.data.native_form} onSetMode={this.props.setQueryModeFn} tableMetadata={tableMetadata} -- GitLab