From 06a491574ce3cb7de4fd6e5e2c48c3618e5026a8 Mon Sep 17 00:00:00 2001 From: emacip Date: Wed, 6 Feb 2019 13:40:22 +0000 Subject: [PATCH 1/3] User can turn off download - export csv from a dashboard --- superset/assets/backendSync.json | 9 +++++++++ .../dashboard/components/gridComponents/Chart_spec.jsx | 1 + superset/assets/src/dashboard/components/SliceHeader.jsx | 4 ++++ .../src/dashboard/components/SliceHeaderControls.jsx | 8 +++++++- .../src/dashboard/components/gridComponents/Chart.jsx | 3 +++ superset/assets/src/dashboard/containers/Chart.jsx | 1 + .../assets/src/dashboard/reducers/getInitialState.js | 1 + superset/views/core.py | 2 ++ 8 files changed, 28 insertions(+), 1 deletion(-) diff --git a/superset/assets/backendSync.json b/superset/assets/backendSync.json index 8008621d42dd..200aa818eba5 100644 --- a/superset/assets/backendSync.json +++ b/superset/assets/backendSync.json @@ -3717,6 +3717,15 @@ "description": "Whether to fill the objects", "default": true }, + "filter_configs": { + "type": "CollectionControl", + "label": "Filters", + "description": "Filter configuration for the filter box", + "validators": [ + null + ], + "controlName": "FilterBoxItemControl" + }, "normalized": { "type": "CheckboxControl", "label": "Normalized", diff --git a/superset/assets/spec/javascripts/dashboard/components/gridComponents/Chart_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/gridComponents/Chart_spec.jsx index 23d634cfc757..1933e5c558aa 100644 --- a/superset/assets/spec/javascripts/dashboard/components/gridComponents/Chart_spec.jsx +++ b/superset/assets/spec/javascripts/dashboard/components/gridComponents/Chart_spec.jsx @@ -57,6 +57,7 @@ describe('Chart', () => { editMode: false, isExpanded: false, supersetCanExplore: false, + supersetCanCSV: false, sliceCanEdit: false, }; diff --git a/superset/assets/src/dashboard/components/SliceHeader.jsx b/superset/assets/src/dashboard/components/SliceHeader.jsx index 9da155d25976..913a00dc4f22 100644 --- a/superset/assets/src/dashboard/components/SliceHeader.jsx +++ b/superset/assets/src/dashboard/components/SliceHeader.jsx @@ -41,6 +41,7 @@ const propTypes = { annotationError: PropTypes.object, sliceName: PropTypes.string, supersetCanExplore: PropTypes.bool, + supersetCanCSV: PropTypes.bool, sliceCanEdit: PropTypes.bool, }; @@ -61,6 +62,7 @@ const defaultProps = { isExpanded: false, sliceName: '', supersetCanExplore: false, + supersetCanCSV: false, sliceCanEdit: false, }; @@ -82,6 +84,7 @@ class SliceHeader extends React.PureComponent { innerRef, sliceName, supersetCanExplore, + supersetCanCSV, sliceCanEdit, editMode, updateSliceName, @@ -133,6 +136,7 @@ class SliceHeader extends React.PureComponent { exploreChart={exploreChart} exportCSV={exportCSV} supersetCanExplore={supersetCanExplore} + supersetCanCSV={supersetCanCSV} sliceCanEdit={sliceCanEdit} /> )} diff --git a/superset/assets/src/dashboard/components/SliceHeaderControls.jsx b/superset/assets/src/dashboard/components/SliceHeaderControls.jsx index b86b01272b14..114a91c471d8 100644 --- a/superset/assets/src/dashboard/components/SliceHeaderControls.jsx +++ b/superset/assets/src/dashboard/components/SliceHeaderControls.jsx @@ -36,6 +36,7 @@ const propTypes = { cachedDttm: PropTypes.string, updatedDttm: PropTypes.number, supersetCanExplore: PropTypes.bool, + supersetCanCSV: PropTypes.bool, sliceCanEdit: PropTypes.bool, toggleExpandSlice: PropTypes.func, forceRefresh: PropTypes.func, @@ -53,6 +54,7 @@ const defaultProps = { isCached: false, isExpanded: false, supersetCanExplore: false, + supersetCanCSV: false, sliceCanEdit: false, }; @@ -161,7 +163,11 @@ class SliceHeaderControls extends React.PureComponent { )} - {t('Export CSV')} + {this.props.supersetCanCSV && ( + + {t('Export CSV')} + + )} {this.props.supersetCanExplore && ( diff --git a/superset/assets/src/dashboard/components/gridComponents/Chart.jsx b/superset/assets/src/dashboard/components/gridComponents/Chart.jsx index 7d1f1674a83c..c54b8e72af75 100644 --- a/superset/assets/src/dashboard/components/gridComponents/Chart.jsx +++ b/superset/assets/src/dashboard/components/gridComponents/Chart.jsx @@ -45,6 +45,7 @@ const propTypes = { editMode: PropTypes.bool.isRequired, isExpanded: PropTypes.bool.isRequired, supersetCanExplore: PropTypes.bool.isRequired, + supersetCanCSV: PropTypes.bool.isRequired, sliceCanEdit: PropTypes.bool.isRequired, }; @@ -164,6 +165,7 @@ class Chart extends React.Component { toggleExpandSlice, timeout, supersetCanExplore, + supersetCanCSV, sliceCanEdit, } = this.props; @@ -198,6 +200,7 @@ class Chart extends React.Component { updateSliceName={updateSliceName} sliceName={sliceName} supersetCanExplore={supersetCanExplore} + supersetCanCSV={supersetCanCSV} sliceCanEdit={sliceCanEdit} /> diff --git a/superset/assets/src/dashboard/containers/Chart.jsx b/superset/assets/src/dashboard/containers/Chart.jsx index 7d689ecf09dd..e500e3365a12 100644 --- a/superset/assets/src/dashboard/containers/Chart.jsx +++ b/superset/assets/src/dashboard/containers/Chart.jsx @@ -62,6 +62,7 @@ function mapStateToProps( editMode: dashboardState.editMode, isExpanded: !!dashboardState.expandedSlices[id], supersetCanExplore: !!dashboardInfo.superset_can_explore, + supersetCanCSV: !!dashboardInfo.superset_can_csv, sliceCanEdit: !!dashboardInfo.slice_can_edit, }; } diff --git a/superset/assets/src/dashboard/reducers/getInitialState.js b/superset/assets/src/dashboard/reducers/getInitialState.js index 9b093cdbfdd2..57354c86a42b 100644 --- a/superset/assets/src/dashboard/reducers/getInitialState.js +++ b/superset/assets/src/dashboard/reducers/getInitialState.js @@ -174,6 +174,7 @@ export default function(bootstrapData) { dash_edit_perm: dashboard.dash_edit_perm, dash_save_perm: dashboard.dash_save_perm, superset_can_explore: dashboard.superset_can_explore, + superset_can_csv: dashboard.superset_can_csv, slice_can_edit: dashboard.slice_can_edit, common: { flash_messages: common.flash_messages, diff --git a/superset/views/core.py b/superset/views/core.py index fa704989d89f..639505fcd00f 100755 --- a/superset/views/core.py +++ b/superset/views/core.py @@ -2146,6 +2146,7 @@ def dashboard(self, dashboard_id): security_manager.can_access('can_save_dash', 'Superset') dash_save_perm = security_manager.can_access('can_save_dash', 'Superset') superset_can_explore = security_manager.can_access('can_explore', 'Superset') + superset_can_csv = security_manager.can_access('can_csv', 'Superset') slice_can_edit = security_manager.can_access('can_edit', 'SliceModelView') standalone_mode = request.args.get('standalone') == 'true' @@ -2167,6 +2168,7 @@ def dashboard(**kwargs): # noqa 'dash_save_perm': dash_save_perm, 'dash_edit_perm': dash_edit_perm, 'superset_can_explore': superset_can_explore, + 'superset_can_csv': superset_can_csv, 'slice_can_edit': slice_can_edit, }) From 270b7f601cf090c1218a65a6096c23f3340020b4 Mon Sep 17 00:00:00 2001 From: emacip Date: Wed, 6 Feb 2019 17:13:35 +0000 Subject: [PATCH 2/3] Revert changes in the backendSync --- superset/assets/backendSync.json | 9 --------- 1 file changed, 9 deletions(-) diff --git a/superset/assets/backendSync.json b/superset/assets/backendSync.json index 200aa818eba5..8008621d42dd 100644 --- a/superset/assets/backendSync.json +++ b/superset/assets/backendSync.json @@ -3717,15 +3717,6 @@ "description": "Whether to fill the objects", "default": true }, - "filter_configs": { - "type": "CollectionControl", - "label": "Filters", - "description": "Filter configuration for the filter box", - "validators": [ - null - ], - "controlName": "FilterBoxItemControl" - }, "normalized": { "type": "CheckboxControl", "label": "Normalized", From 788f932fd097517b2c9d137b0c09090e5564bc82 Mon Sep 17 00:00:00 2001 From: emacip Date: Wed, 6 Feb 2019 18:53:38 +0000 Subject: [PATCH 3/3] Fix space error in the MenuItem Export CSV --- .../assets/src/dashboard/components/SliceHeaderControls.jsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/superset/assets/src/dashboard/components/SliceHeaderControls.jsx b/superset/assets/src/dashboard/components/SliceHeaderControls.jsx index 114a91c471d8..e768e2af5495 100644 --- a/superset/assets/src/dashboard/components/SliceHeaderControls.jsx +++ b/superset/assets/src/dashboard/components/SliceHeaderControls.jsx @@ -164,9 +164,7 @@ class SliceHeaderControls extends React.PureComponent { )} {this.props.supersetCanCSV && ( - - {t('Export CSV')} - + {t('Export CSV')} )} {this.props.supersetCanExplore && (