Skip to content

Commit

Permalink
further drying
Browse files Browse the repository at this point in the history
  • Loading branch information
mistercrunch committed Jan 22, 2020
1 parent 1e9f0ec commit c868620
Show file tree
Hide file tree
Showing 11 changed files with 51 additions and 65 deletions.
2 changes: 1 addition & 1 deletion superset/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ def init_views(self) -> None:
CssTemplateAsyncModelView,
)
from superset.views.chart.api import ChartRestApi
from superset.views.chart.views import SliceModelView, SliceAsync, SliceAddView
from superset.views.chart.views import SliceModelView, SliceAsync
from superset.views.dashboard.api import DashboardRestApi
from superset.views.dashboard.views import (
DashboardModelView,
Expand Down
22 changes: 16 additions & 6 deletions superset/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
NULL_STRING = "<NULL>"


class RouteMethod:
class RouteMethod: # pylint: disable=too-few-public-methods
"""
Route methods are a FAB concept around ModelView and RestModelView
classes in FAB. Derivatives can define `include_route_method` and
Expand All @@ -32,12 +32,13 @@ class RouteMethod:
route methods, namely the ones defined in the base classes in FAB
"""

# ModelView specific
ACTION = "action"
ACTION_POST = "action_post"
ADD = "add"
API_CREATE = "API_CREATE"
API_CREATE = "api_create"
API_DELETE = "api_delete"
API_GET = "API_GET"
API_GET = "api_get"
API_READ = "api_read"
API_UPDATE = "api_update"
DELETE = "delete"
Expand All @@ -46,6 +47,15 @@ class RouteMethod:
LIST = "list"
SHOW = "show"

# Common sets
CRUD_SET = frozenset((ADD, LIST, EDIT, DELETE, ACTION_POST))
RELATED_VIEW_SET = frozenset((ADD, LIST, EDIT, DELETE))
# RestModelView specific
EXPORT = "export"
GET = "get"
GET_LIST = "get_list"
POST = "post"
PUT = "put"
RELATED = "related"

# Commonly used sets
CRUD_SET = {ADD, LIST, EDIT, DELETE, ACTION_POST}
RELATED_VIEW_SET = {ADD, LIST, EDIT, DELETE}
REST_MODEL_VIEW_CRUD_SET = {DELETE, GET, GET_LIST, POST, PUT}
2 changes: 1 addition & 1 deletion superset/security/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@

from superset import sql_parse
from superset.connectors.connector_registry import ConnectorRegistry
from superset.constants import RouteMethods
from superset.constants import RouteMethod
from superset.exceptions import SupersetSecurityException
from superset.utils.core import DatasourceName

Expand Down
1 change: 0 additions & 1 deletion superset/views/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@

import simplejson as json
import yaml

from flask import abort, flash, g, get_flashed_messages, redirect, Response, session
from flask_appbuilder import BaseView, ModelView
from flask_appbuilder.actions import action
Expand Down
11 changes: 11 additions & 0 deletions superset/views/base_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,17 @@ class BaseSupersetModelRestApi(ModelRestApi):
"""

logger = logging.getLogger(__name__)
method_permission_name = {
"get_list": "list",
"get": "show",
"export": "mulexport",
"post": "add",
"put": "edit",
"delete": "delete",
"bulk_delete": "delete",
"info": "list",
"related": "list",
}

order_rel_fields: Dict[str, Tuple[str, str]] = {}
"""
Expand Down
9 changes: 0 additions & 9 deletions superset/views/chart/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,15 +134,6 @@ class ChartRestApi(SliceMixin, BaseOwnedModelRestApi):
allow_browser_login = True

class_permission_name = "SliceModelView"
method_permission_name = {
"get_list": "list",
"get": "show",
"post": "add",
"put": "edit",
"delete": "delete",
"info": "list",
"related": "list",
}
show_columns = [
"slice_name",
"description",
Expand Down
40 changes: 15 additions & 25 deletions superset/views/chart/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

from superset import db
from superset.connectors.connector_registry import ConnectorRegistry
from superset.constants import RouteMethod
from superset.models.slice import Slice
from superset.utils import core as utils
from superset.views.base import check_ownership, DeleteMixin, SupersetModelView
Expand Down Expand Up @@ -69,35 +70,24 @@ class SliceAsync(SliceModelView): # pylint: disable=too-many-ancestors
include_route_methods = {RouteMethod.API_READ}

list_columns = [
"id",
"slice_link",
"viz_type",
"slice_name",
"changed_on",
"changed_on_humanized",
"creator",
"modified",
"datasource_id",
"datasource_link",
"datasource_name_text",
"datasource_type",
"description",
"description_markeddown",
"edit_url",
"icons",
"changed_on_humanized",
]
label_columns = {"icons": " ", "slice_link": _("Chart")}


class SliceAddView(SliceModelView): # pylint: disable=too-many-ancestors
route_base = "/sliceaddview"
list_columns = [
"id",
"modified",
"owners",
"params",
"slice_link",
"slice_name",
"slice_url",
"edit_url",
"viz_type",
"params",
"description",
"description_markeddown",
"datasource_id",
"datasource_type",
"datasource_name_text",
"datasource_link",
"owners",
"modified",
"changed_on",
"changed_on_humanized",
]
label_columns = {"icons": " ", "slice_link": _("Chart")}
1 change: 0 additions & 1 deletion superset/views/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@
from superset.utils.dates import now_as_float
from superset.utils.decorators import etag_cache, stats_timing
from superset.views.chart import views as chart_views
from superset.views.constants import RouteMethod

from .base import (
api,
Expand Down
24 changes: 5 additions & 19 deletions superset/views/dashboard/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
from marshmallow.validate import Length
from sqlalchemy.exc import SQLAlchemyError

from superset.constants import RouteMethod
from superset.exceptions import SupersetException, SupersetSecurityException
from superset.models.dashboard import Dashboard
from superset.utils import core as utils
Expand Down Expand Up @@ -130,30 +131,15 @@ def make_object(self, data: Dict, discard: List[str] = None) -> Dashboard:

class DashboardRestApi(DashboardMixin, BaseOwnedModelRestApi):
datamodel = SQLAInterface(Dashboard)
include_route_methods = {
"get_list",
"get",
"post",
"put",
"delete",
"related",
"export",
include_route_methods = RouteMethod.REST_MODEL_VIEW_CRUD_SET | {
RouteMethod.EXPORT,
RouteMethod.RELATED,
"bulk_delete", # not using RouteMethod since locally defined
}
resource_name = "dashboard"
allow_browser_login = True

class_permission_name = "DashboardModelView"
method_permission_name = {
"get_list": "list",
"get": "show",
"export": "mulexport",
"post": "add",
"put": "edit",
"delete": "delete",
"bulk_delete": "delete",
"info": "list",
"related": "list",
}
show_columns = [
"dashboard_title",
"slug",
Expand Down
2 changes: 1 addition & 1 deletion superset/views/database/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from flask_appbuilder.models.sqla.interface import SQLAInterface

import superset.models.core as models
from superset.views.base import BaseSupersetModelRestApi
from superset.views.base_api import BaseSupersetModelRestApi

from .mixins import DatabaseFilter, DatabaseMixin
from .validators import sqlalchemy_uri_validator
Expand Down
2 changes: 1 addition & 1 deletion superset/views/log/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from flask_appbuilder.models.sqla.interface import SQLAInterface

import superset.models.core as models
from superset.views.base import BaseSupersetModelRestApi
from superset.views.base_api import BaseSupersetModelRestApi

from . import LogMixin

Expand Down

0 comments on commit c868620

Please sign in to comment.