Skip to content

Commit

Permalink
Hide restricted ui elements, remove <br> from error message (apache#4900
Browse files Browse the repository at this point in the history
)

* hide forbidden ui elements, remove <br> from message

* add comma for flake8

* add commma for flake8

* change js variables from snake to camel case
  • Loading branch information
jasnovak authored and timifasubaa committed May 31, 2018
1 parent 80e1950 commit e42c179
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 34 deletions.
30 changes: 16 additions & 14 deletions superset/assets/src/dashboard/components/Controls.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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')}
Expand Down
2 changes: 1 addition & 1 deletion superset/assets/src/dashboard/components/SaveModal.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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);
},
});
}
Expand Down
54 changes: 35 additions & 19 deletions superset/assets/src/dashboard/components/SliceHeader.jsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
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';
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,
Expand Down Expand Up @@ -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 &&
Expand Down Expand Up @@ -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"
Expand All @@ -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
Expand All @@ -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);
4 changes: 4 additions & 0 deletions superset/views/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -2046,6 +2046,8 @@ def dashboard(**kwargs): # noqa
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'

Expand All @@ -2054,6 +2056,8 @@ def dashboard(**kwargs): # noqa
'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 = {
Expand Down

0 comments on commit e42c179

Please sign in to comment.