apache / superset

Apache Superset is a Data Visualization and Data Exploration Platform
https://superset.apache.org/
Apache License 2.0
61.99k stars 13.59k forks source link

Label of permission "can csv on Superset " is not precise #30317

Open xavier-GitHub76 opened 1 week ago

xavier-GitHub76 commented 1 week ago

Bug description

With permission "can csv on Superset ", a user can download a chart in CSV, Excel, Image format

How to reproduce the bug

Add "can csv on Superset " on a role Contextual menu on Chart is : image

Screenshots/recordings

No response

Superset version

master / latest-dev

Python version

3.9

Node version

16

Browser

Chrome

Additional context

No response

Checklist

dosubot[bot] commented 1 week ago

To make the permission label "can csv on Superset" more precise, you can update it to something like "can download charts in CSV, Excel, and Image formats".

Here is the relevant code snippet where the permission is checked and the menu items for downloading are created:

{props.supersetCanCSV && (
  <Menu.SubMenu
    title={t('Download')}
    key={MenuKeys.Download}
    onTitleMouseEnter={() => setOpenKeys(undefined)}
  >
    <Menu.Item
      key={MenuKeys.ExportCsv}
      icon={<Icons.FileOutlined css={dropdownIconsStyles} />}
    >
      {t('Export to .CSV')}
    </Menu.Item>
    {isPivotTable && (
      <Menu.Item
        key={MenuKeys.ExportPivotCsv}
        icon={<Icons.FileOutlined css={dropdownIconsStyles} />}
      >
        {t('Export to Pivoted .CSV')}
      </Menu.Item>
    )}
    <Menu.Item
      key={MenuKeys.ExportXlsx}
      icon={<Icons.FileOutlined css={dropdownIconsStyles} />}
    >
      {t('Export to Excel')}
    </Menu.Item>
    {isFeatureEnabled(FeatureFlag.AllowFullCsvExport) &&
      props.supersetCanCSV &&
      isTable && (
        <>
          <Menu.Item
            key={MenuKeys.ExportFullCsv}
            icon={<Icons.FileOutlined css={dropdownIconsStyles} />}
          >
            {t('Export to full .CSV')}
          </Menu.Item>
          <Menu.Item
            key={MenuKeys.ExportFullXlsx}
            icon={<Icons.FileOutlined css={dropdownIconsStyles} />}
          >
            {t('Export to full Excel')}
          </Menu.Item>
        </>
      )}
    <Menu.Item
      key={MenuKeys.DownloadAsImage}
      icon={<Icons.FileImageOutlined css={dropdownIconsStyles} />}
    >
      {t('Download as image')}
    </Menu.Item>
  </Menu.SubMenu>
)}

You should also update the permission label in the relevant part of your codebase where permissions are defined and checked, such as in superset/constants.py and superset/security/manager.py [1][2][3].

To continue talking to Dosu, mention @dosu.

xavier-GitHub76 commented 3 days ago

Label could be update but the permission seems to be deprecated... but used #30384