dinoel93 opened a new issue, #27712:
URL: https://github.com/apache/superset/issues/27712

   ### Bug description
   
   There is some role with access to all interactions with datasets and some 
user in this role.
   This user can create new datasets, edit and delete existing datasets.
   But when this user tries to duplicate any dataset, an error appears:
   `There was an issue duplicating the selected datasets: Fatal error`
   In logs of superset appears:
   `ERROR:flask_appbuilder.api:Entity namespace for "mapped class 
Database->dbs" has no property "table_name"`
   At the same time, a user with administrator rights can duplicate datasets
   
   
   ### How to reproduce the bug
   
   - Create role with permissions shown in screenshots below
   - Create user in this role an permissions to some database
   - Try to duplicate some dataset by this user
   
   ### Screenshots/recordings
   
   ![Снимок экрана от 2024-03-27 
16-31-32](https://github.com/apache/superset/assets/13899853/cb0d7778-5773-49b2-a1b8-6931024cd206)
   ![Снимок экрана от 2024-03-27 
16-28-45](https://github.com/apache/superset/assets/13899853/e85c294b-6db7-4a64-a2e8-f11f5210064d)
   
   
   ### Superset version
   
   3.1.1
   
   ### Python version
   
   3.10
   
   ### Node version
   
   16
   
   ### Browser
   
   Chrome
   
   ### Additional context
   
   Full error from logs:
   `Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]: 2024-03-27 
15:34:24,136:ERROR:flask_appbuilder.api:Entity namespace for "mapped class 
Database->dbs" has no property "table_name"
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]: Traceback (most 
recent call last):
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:   File 
"/usr/local/lib/python3.10/dist-packages/sqlalchemy/sql/base.py", line 1694, in 
_entity_namespace_key
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:     return 
getattr(ns, key)
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]: AttributeError: type 
object 'Database' has no attribute 'table_name'. Did you mean: 'database_name'?
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]: The above exception 
was the direct cause of the following exception:
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]: Traceback (most 
recent call last):
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:   File 
"/usr/local/lib/python3.10/dist-packages/flask_appbuilder/api/__init__.py", 
line 110, in wraps
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:     return f(self, 
*args, **kwargs)
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:   File 
"/usr/local/lib/python3.10/dist-packages/superset/views/base_api.py", line 127, 
in wraps
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:     raise ex
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:   File 
"/usr/local/lib/python3.10/dist-packages/superset/views/base_api.py", line 121, 
in wraps
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:     duration, 
response = time_function(f, self, *args, **kwargs)
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:   File 
"/usr/local/lib/python3.10/dist-packages/superset/utils/core.py", line 1463, in 
time_function
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:     response = 
func(*args, **kwargs)
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:   File 
"/usr/local/lib/python3.10/dist-packages/superset/utils/log.py", line 255, in 
wrapper
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:     value = f(*args, 
**kwargs)
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:   File 
"/usr/local/lib/python3.10/dist-packages/superset/views/base_api.py", line 93, 
in wraps
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:     return f(self, 
*args, **kwargs)
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:   File 
"/usr/local/lib/python3.10/dist-packages/superset/datasets/api.py", line 618, 
in duplicate
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:     new_model = 
DuplicateDatasetCommand(item).run()
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:   File 
"/usr/local/lib/python3.10/dist-packages/superset/commands/dataset/duplicate.py",
 line 51, in run
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:     self.validate()
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:   File 
"/usr/local/lib/python3.10/dist-packages/superset/commands/dataset/duplicate.py",
 line 126, in validate
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:     if 
DatasetDAO.find_one_or_none(table_name=duplicate_name):
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:   File 
"/usr/local/lib/python3.10/dist-packages/superset/daos/base.py", line 128, in 
find_one_or_none
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:     return 
query.filter_by(**filter_by).one_or_none()
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:   File 
"/usr/local/lib/python3.10/dist-packages/sqlalchemy/orm/query.py", line 1806, 
in filter_by
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:     clauses = [
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:   File 
"/usr/local/lib/python3.10/dist-packages/sqlalchemy/orm/query.py", line 1807, 
in <listcomp>
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:     
_entity_namespace_key(from_entity, key) == value
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:   File 
"/usr/local/lib/python3.10/dist-packages/sqlalchemy/sql/base.py", line 1696, in 
_entity_namespace_key
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:     util.raise_(
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:   File 
"/usr/local/lib/python3.10/dist-packages/sqlalchemy/util/compat.py", line 211, 
in raise_
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]:     raise exception
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]: 
sqlalchemy.exc.InvalidRequestError: Entity namespace for "mapped class 
Database->dbs" has no property "table_name"
   Mar 27 15:34:24 superset.virt.qb.loc superset[1387334]: 2024-03-27 
15:34:24,141:INFO:werkzeug:127.0.0.1 - - [27/Mar/2024 15:34:24] "POST 
/api/v1/dataset/duplicate HTTP/1.0" 500 -
   `
   
   ### Checklist
   
   - [X] I have searched Superset docs and Slack and didn't find a solution to 
my problem.
   - [X] I have searched the GitHub issue tracker and didn't find a similar bug 
report.
   - [X] I have checked Superset's logs for errors and if I found a relevant 
Python stacktrace, I included it here as text in the "additional context" 
section.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to