superset-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From maximebeauche...@apache.org
Subject [incubator-superset] branch master updated: Hide restricted ui elements, remove <br> from error message (#4900)
Date Fri, 04 May 2018 00:36:33 GMT
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 <36554140+jasnovak@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.

Mime
View raw message