mirror of https://github.com/apache/superset.git
feat: Creating dataset/add route (#20869)
* beginning of routing * elizabeth review * changed folder layout * Update superset-frontend/src/views/CRUD/data/dataset/DatasetPage/index.tsx Co-authored-by: Lyndsi Kay Williams <55605634+lyndsiWilliams@users.noreply.github.com> * Update superset-frontend/src/views/CRUD/data/dataset/DatasetPage/RightPanel/index.tsx Co-authored-by: Lyndsi Kay Williams <55605634+lyndsiWilliams@users.noreply.github.com> Co-authored-by: Lyndsi Kay Williams <55605634+lyndsiWilliams@users.noreply.github.com>
This commit is contained in:
parent
8a04536f9d
commit
460b213057
|
@ -0,0 +1,23 @@
|
|||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
import React from 'react';
|
||||
|
||||
export default function DatasetPanel() {
|
||||
return <div>Dataset Panel</div>;
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
import React from 'react';
|
||||
|
||||
export default function Footer() {
|
||||
return <div>Footer</div>;
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
import React from 'react';
|
||||
|
||||
export default function Header() {
|
||||
return <div>Header</div>;
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
import React from 'react';
|
||||
|
||||
export default function LeftPanel() {
|
||||
return <div>Left Panel</div>;
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
import React from 'react';
|
||||
|
||||
export default function RightPanel() {
|
||||
return <div>Right Panel</div>;
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
import React from 'react';
|
||||
import Header from './Header';
|
||||
import DatasetPanel from './DatasetPanel';
|
||||
import LeftPanel from './LeftPanel';
|
||||
import RightPanel from './RightPanel';
|
||||
import Footer from './Footer';
|
||||
|
||||
export default function DatasetPage() {
|
||||
return (
|
||||
<div>
|
||||
<Header />
|
||||
<LeftPanel />
|
||||
<div css={{ display: 'flex' }}>
|
||||
<DatasetPanel />
|
||||
<Footer />
|
||||
</div>
|
||||
<RightPanel />
|
||||
</div>
|
||||
);
|
||||
}
|
|
@ -81,6 +81,14 @@ const DatasetList = lazy(
|
|||
/* webpackChunkName: "DatasetList" */ 'src/views/CRUD/data/dataset/DatasetList'
|
||||
),
|
||||
);
|
||||
|
||||
const DatasetPage = lazy(
|
||||
() =>
|
||||
import(
|
||||
/* webpackChunkName: "DatasetEditor" */ 'src/views/CRUD/data/dataset/DatasetPage/index'
|
||||
),
|
||||
);
|
||||
|
||||
const ExecutionLog = lazy(
|
||||
() =>
|
||||
import(
|
||||
|
@ -189,6 +197,14 @@ export const routes: Routes = [
|
|||
path: '/superset/explore/p',
|
||||
Component: ExplorePage,
|
||||
},
|
||||
{
|
||||
path: '/dataset/add/',
|
||||
Component: DatasetPage,
|
||||
},
|
||||
{
|
||||
path: '/dataset/:datasetId',
|
||||
Component: DatasetPage,
|
||||
},
|
||||
];
|
||||
|
||||
const frontEndRoutes = routes
|
||||
|
|
|
@ -169,7 +169,7 @@ class SupersetAppInitializer: # pylint: disable=too-many-public-methods
|
|||
DatabaseView,
|
||||
ExcelToDatabaseView,
|
||||
)
|
||||
from superset.views.datasource.views import Datasource
|
||||
from superset.views.datasource.views import DatasetEditor, Datasource
|
||||
from superset.views.dynamic_plugins import DynamicPluginsView
|
||||
from superset.views.explore import ExplorePermalinkView, ExploreView
|
||||
from superset.views.key_value import KV
|
||||
|
@ -289,6 +289,7 @@ class SupersetAppInitializer: # pylint: disable=too-many-public-methods
|
|||
appbuilder.add_view_no_menu(Dashboard)
|
||||
appbuilder.add_view_no_menu(DashboardModelViewAsync)
|
||||
appbuilder.add_view_no_menu(Datasource)
|
||||
appbuilder.add_view_no_menu(DatasetEditor)
|
||||
appbuilder.add_view_no_menu(EmbeddedView)
|
||||
appbuilder.add_view_no_menu(ExploreView)
|
||||
appbuilder.add_view_no_menu(ExplorePermalinkView)
|
||||
|
|
|
@ -18,10 +18,10 @@ import json
|
|||
from collections import Counter
|
||||
from typing import Any
|
||||
|
||||
from flask import request
|
||||
from flask_appbuilder import expose
|
||||
from flask import redirect, request
|
||||
from flask_appbuilder import expose, permission_name
|
||||
from flask_appbuilder.api import rison
|
||||
from flask_appbuilder.security.decorators import has_access_api
|
||||
from flask_appbuilder.security.decorators import has_access, has_access_api
|
||||
from flask_babel import _
|
||||
from marshmallow import ValidationError
|
||||
from sqlalchemy.exc import NoSuchTableError
|
||||
|
@ -203,3 +203,27 @@ class Datasource(BaseSupersetView):
|
|||
payload=payload,
|
||||
)
|
||||
return self.json_response({"result": rv})
|
||||
|
||||
|
||||
class DatasetEditor(BaseSupersetView):
|
||||
route_base = "/dataset"
|
||||
class_permission_name = "Dataset"
|
||||
|
||||
@expose("/add/")
|
||||
@has_access
|
||||
@permission_name("read")
|
||||
def root(self) -> FlaskResponse:
|
||||
dev = request.args.get("testing")
|
||||
if dev is not None:
|
||||
return super().render_app_template()
|
||||
return redirect("/")
|
||||
|
||||
@expose("/<pk>", methods=["GET"])
|
||||
@has_access
|
||||
@permission_name("read")
|
||||
# pylint: disable=unused-argument
|
||||
def show(self, pk: int) -> FlaskResponse:
|
||||
dev = request.args.get("testing")
|
||||
if dev is not None:
|
||||
return super().render_app_template()
|
||||
return redirect("/")
|
||||
|
|
Loading…
Reference in New Issue