Пример #1
0
    list_columns = [
        "slice_name",
        "description",
        "changed_by.username",
        "changed_by_name",
        "changed_on",
        "viz_type",
        "params",
        "cache_timeout",
    ]
    # Will just affect _info endpoint
    edit_columns = ["slice_name"]
    add_columns = edit_columns

    # exclude_route_methods = ("info",)

    add_model_schema = ChartPostSchema()
    edit_model_schema = ChartPutSchema()

    order_rel_fields = {
        "slices": ("slice_name", "asc"),
        "owners": ("first_name", "asc"),
    }
    filter_rel_fields_field = {
        "owners": "first_name",
        "dashboards": "dashboard_title"
    }


appbuilder.add_api(ChartRestApi)
Пример #2
0
    class_permission_name = "DatabaseAsync"
    method_permission_name = {
        "get_list": "list",
        "get": "show",
        "post": "add",
        "put": "edit",
        "delete": "delete",
        "info": "list",
    }
    resource_name = "database"
    allow_browser_login = True
    base_filters = [["id", DatabaseFilter, lambda: []]]
    list_columns = [
        "id",
        "database_name",
        "expose_in_sqllab",
        "allow_ctas",
        "force_ctas_schema",
        "allow_run_async",
        "allow_dml",
        "allow_multi_schema_metadata_fetch",
        "allow_csv_upload",
        "allows_subquery",
        "backend",
    ]
    # Removes the local limit for the page size
    max_page_size = -1


appbuilder.add_api(DatabaseRestApi)
Пример #3
0
from flask_appbuilder import ModelRestApi
from flask_appbuilder.models.sqla.interface import SQLAInterface

import superset.models.core as models
from superset import app, appbuilder

from . import LogMixin


class LogRestApi(LogMixin, ModelRestApi):
    datamodel = SQLAInterface(models.Log)

    class_permission_name = "LogModelView"
    method_permission_name = {
        "get_list": "list",
        "get": "show",
        "post": "add",
        "put": "edit",
        "delete": "delete",
        "info": "list",
    }
    resource_name = "log"
    allow_browser_login = True
    list_columns = ("user.username", "action", "dttm")
    show_columns = list_columns


if (not app.config.get("FAB_ADD_SECURITY_VIEWS") is False
        or app.config.get("SUPERSET_LOG_VIEW") is False):
    appbuilder.add_api(LogRestApi)
Пример #4
0
            400:
              $ref: '#/components/responses/400'
            401:
              $ref: '#/components/responses/401'
            404:
              $ref: '#/components/responses/404'
            422:
              $ref: '#/components/responses/422'
            500:
              $ref: '#/components/responses/500'
        """
        if not request.is_json:
            self.response_400(message="Request is not JSON")
        item = self.datamodel.get(pk, self._base_filters)
        if not item:
            return self.response_404()

        item = self.edit_model_schema.load(request.json, instance=item)
        if item.errors:
            return self.response_422(message=item.errors)
        try:
            self.datamodel.edit(item.data, raise_exception=True)
            return self.response(200,
                                 result=self.edit_model_schema.dump(
                                     item.data, many=False).data)
        except SQLAlchemyError as e:
            return self.response_422(message=str(e))


appbuilder.add_api(DashboardRestApi)