You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ma...@apache.org on 2018/05/04 00:36:33 UTC
[incubator-superset] branch master updated: Hide restricted ui
elements, remove
from error message (#4900)
This is an automated email from the ASF dual-hosted git repository.
maximebeauchemin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
The following commit(s) were added to refs/heads/master by this push:
new e2d5c33 Hide restricted ui elements, remove <br> from error message (#4900)
e2d5c33 is described below
commit e2d5c3363859573d72cf3cb95d604bd56b8705de
Author: jasnovak <36...@users.noreply.github.com>
AuthorDate: Thu May 3 17:36:31 2018 -0700
Hide restricted ui elements, remove <br> from error message (#4900)
* hide forbidden ui elements, remove <br> from message
* add comma for flake8
* add commma for flake8
* change js variables from snake to camel case
---
.../assets/src/dashboard/components/Controls.jsx | 30 ++++++------
.../assets/src/dashboard/components/SaveModal.jsx | 2 +-
.../src/dashboard/components/SliceHeader.jsx | 54 ++++++++++++++--------
superset/views/core.py | 4 ++
4 files changed, 56 insertions(+), 34 deletions(-)
diff --git a/superset/assets/src/dashboard/components/Controls.jsx b/superset/assets/src/dashboard/components/Controls.jsx
index 00cb6d5..feacf96 100644
--- a/superset/assets/src/dashboard/components/Controls.jsx
+++ b/superset/assets/src/dashboard/components/Controls.jsx
@@ -143,20 +143,22 @@ class Controls extends React.PureComponent {
/>
}
/>
- <SaveModal
- dashboard={dashboard}
- filters={filters}
- serialize={serialize}
- onSave={onSave}
- css={this.state.css}
- triggerNode={
- <MenuItemContent
- text={saveText}
- tooltip={t('Save the dashboard')}
- faIcon="save"
- />
- }
- />
+ {dashboard.dash_save_perm &&
+ <SaveModal
+ dashboard={dashboard}
+ filters={filters}
+ serialize={serialize}
+ onSave={onSave}
+ css={this.state.css}
+ triggerNode={
+ <MenuItemContent
+ text={saveText}
+ tooltip={t('Save the dashboard')}
+ faIcon="save"
+ />
+ }
+ />
+ }
{editMode &&
<ActionMenuItem
text={t('Edit properties')}
diff --git a/superset/assets/src/dashboard/components/SaveModal.jsx b/superset/assets/src/dashboard/components/SaveModal.jsx
index da465a0..a849954 100644
--- a/superset/assets/src/dashboard/components/SaveModal.jsx
+++ b/superset/assets/src/dashboard/components/SaveModal.jsx
@@ -69,7 +69,7 @@ class SaveModal extends React.PureComponent {
error(error) {
saveModal.close();
const errorMsg = getAjaxErrorMsg(error);
- notify.error(t('Sorry, there was an error saving this dashboard: ') + '</ br>' + errorMsg);
+ notify.error(t('Sorry, there was an error saving this dashboard: ') + errorMsg);
},
});
}
diff --git a/superset/assets/src/dashboard/components/SliceHeader.jsx b/superset/assets/src/dashboard/components/SliceHeader.jsx
index 8abcc86..6db9c68 100644
--- a/superset/assets/src/dashboard/components/SliceHeader.jsx
+++ b/superset/assets/src/dashboard/components/SliceHeader.jsx
@@ -1,6 +1,7 @@
import React from 'react';
import PropTypes from 'prop-types';
import moment from 'moment';
+import { connect } from 'react-redux';
import { t } from '../../locales';
import EditableTitle from '../../components/EditableTitle';
@@ -8,6 +9,8 @@ import TooltipWrapper from '../../components/TooltipWrapper';
const propTypes = {
slice: PropTypes.object.isRequired,
+ supersetCanExplore: PropTypes.bool,
+ sliceCanEdit: PropTypes.bool,
isExpanded: PropTypes.bool,
isCached: PropTypes.bool,
cachedDttm: PropTypes.string,
@@ -72,6 +75,7 @@ class SliceHeader extends React.PureComponent {
title={slice.slice_name}
canEdit={!!this.props.updateSliceName && this.props.editMode}
onSaveTitle={this.onSaveTitle}
+ showTooltip={this.props.editMode}
noPermitTooltip={'You don\'t have the rights to alter this dashboard.'}
/>
{!!Object.values(this.props.annotationQuery || {}).length &&
@@ -126,15 +130,17 @@ class SliceHeader extends React.PureComponent {
</TooltipWrapper>
</a>
}
- <a href={slice.edit_url} target="_blank">
- <TooltipWrapper
- placement="top"
- label="edit"
- tooltip={t('Edit chart')}
- >
- <i className="fa fa-pencil" />
- </TooltipWrapper>
- </a>
+ {this.props.sliceCanEdit &&
+ <a href={slice.edit_url} target="_blank">
+ <TooltipWrapper
+ placement="top"
+ label="edit"
+ tooltip={t('Edit chart')}
+ >
+ <i className="fa fa-pencil" />
+ </TooltipWrapper>
+ </a>
+ }
<a className="exportCSV" onClick={this.exportCSV}>
<TooltipWrapper
placement="top"
@@ -144,15 +150,17 @@ class SliceHeader extends React.PureComponent {
<i className="fa fa-table" />
</TooltipWrapper>
</a>
- <a className="exploreChart" onClick={this.exploreChart}>
- <TooltipWrapper
- placement="top"
- label="exploreChart"
- tooltip={t('Explore chart')}
- >
- <i className="fa fa-share" />
- </TooltipWrapper>
- </a>
+ {this.props.supersetCanExplore &&
+ <a className="exploreChart" onClick={this.exploreChart}>
+ <TooltipWrapper
+ placement="top"
+ label="exploreChart"
+ tooltip={t('Explore chart')}
+ >
+ <i className="fa fa-share" />
+ </TooltipWrapper>
+ </a>
+ }
{this.props.editMode &&
<a className="remove-chart" onClick={this.removeSlice}>
<TooltipWrapper
@@ -175,4 +183,12 @@ class SliceHeader extends React.PureComponent {
SliceHeader.propTypes = propTypes;
SliceHeader.defaultProps = defaultProps;
-export default SliceHeader;
+function mapStateToProps({ dashboard }) {
+ return {
+ supersetCanExplore: dashboard.dashboard.superset_can_explore,
+ sliceCanEdit: dashboard.dashboard.slice_can_edit,
+ };
+}
+
+export { SliceHeader };
+export default connect(mapStateToProps, () => ({}))(SliceHeader);
diff --git a/superset/views/core.py b/superset/views/core.py
index a79ff2b..0359cae 100755
--- a/superset/views/core.py
+++ b/superset/views/core.py
@@ -2046,6 +2046,8 @@ class Superset(BaseSupersetView):
dash_edit_perm = check_ownership(dash, raise_if_false=False)
dash_save_perm = \
dash_edit_perm and security_manager.can_access('can_save_dash', 'Superset')
+ superset_can_explore = security_manager.can_access('can_explore', 'Superset')
+ slice_can_edit = security_manager.can_access('can_edit', 'SliceModelView')
standalone_mode = request.args.get('standalone') == 'true'
@@ -2054,6 +2056,8 @@ class Superset(BaseSupersetView):
'standalone_mode': standalone_mode,
'dash_save_perm': dash_save_perm,
'dash_edit_perm': dash_edit_perm,
+ 'superset_can_explore': superset_can_explore,
+ 'slice_can_edit': slice_can_edit,
})
bootstrap_data = {
--
To stop receiving notification emails like this one, please contact
maximebeauchemin@apache.org.