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)
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)
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)
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)