Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 35 additions & 6 deletions backend/src/baserow/contrib/database/api/rows/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -558,7 +558,11 @@ def get(self, request, table_id, query_params):
),
401: get_error_schema(["ERROR_NO_PERMISSION_TO_TABLE"]),
404: get_error_schema(
["ERROR_TABLE_DOES_NOT_EXIST", "ERROR_ROW_DOES_NOT_EXIST"]
[
"ERROR_TABLE_DOES_NOT_EXIST",
"ERROR_ROW_DOES_NOT_EXIST",
"ERROR_VIEW_DOES_NOT_EXIST",
]
),
},
)
Expand Down Expand Up @@ -821,7 +825,11 @@ class RowView(APIView):
),
401: get_error_schema(["ERROR_NO_PERMISSION_TO_TABLE"]),
404: get_error_schema(
["ERROR_TABLE_DOES_NOT_EXIST", "ERROR_ROW_DOES_NOT_EXIST"]
[
"ERROR_TABLE_DOES_NOT_EXIST",
"ERROR_ROW_DOES_NOT_EXIST",
"ERROR_VIEW_DOES_NOT_EXIST",
]
),
},
)
Expand All @@ -830,6 +838,7 @@ class RowView(APIView):
UserNotInWorkspace: ERROR_USER_NOT_IN_GROUP,
TableDoesNotExist: ERROR_TABLE_DOES_NOT_EXIST,
RowDoesNotExist: ERROR_ROW_DOES_NOT_EXIST,
ViewDoesNotExist: ERROR_VIEW_DOES_NOT_EXIST,
NoPermissionToTable: ERROR_NO_PERMISSION_TO_TABLE,
TokenCannotIncludeRowMetadata: ERROR_CANNOT_INCLUDE_ROW_METADATA,
FieldDataConstraintException: ERROR_FIELD_DATA_CONSTRAINT,
Expand Down Expand Up @@ -956,7 +965,11 @@ def get(self, request, table_id, row_id, metadata, query_params: dict):
),
401: get_error_schema(["ERROR_NO_PERMISSION_TO_TABLE"]),
404: get_error_schema(
["ERROR_TABLE_DOES_NOT_EXIST", "ERROR_ROW_DOES_NOT_EXIST"]
[
"ERROR_TABLE_DOES_NOT_EXIST",
"ERROR_ROW_DOES_NOT_EXIST",
"ERROR_VIEW_DOES_NOT_EXIST",
]
),
},
)
Expand All @@ -965,6 +978,7 @@ def get(self, request, table_id, row_id, metadata, query_params: dict):
UserNotInWorkspace: ERROR_USER_NOT_IN_GROUP,
TableDoesNotExist: ERROR_TABLE_DOES_NOT_EXIST,
RowDoesNotExist: ERROR_ROW_DOES_NOT_EXIST,
ViewDoesNotExist: ERROR_VIEW_DOES_NOT_EXIST,
NoPermissionToTable: ERROR_NO_PERMISSION_TO_TABLE,
DeadlockException: ERROR_DATABASE_DEADLOCK,
FieldDataConstraintException: ERROR_FIELD_DATA_CONSTRAINT,
Expand Down Expand Up @@ -1088,7 +1102,11 @@ def patch(
["ERROR_USER_NOT_IN_GROUP", "ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM"]
),
404: get_error_schema(
["ERROR_TABLE_DOES_NOT_EXIST", "ERROR_ROW_DOES_NOT_EXIST"]
[
"ERROR_TABLE_DOES_NOT_EXIST",
"ERROR_ROW_DOES_NOT_EXIST",
"ERROR_VIEW_DOES_NOT_EXIST",
]
),
},
)
Expand All @@ -1097,6 +1115,7 @@ def patch(
UserNotInWorkspace: ERROR_USER_NOT_IN_GROUP,
TableDoesNotExist: ERROR_TABLE_DOES_NOT_EXIST,
RowDoesNotExist: ERROR_ROW_DOES_NOT_EXIST,
ViewDoesNotExist: ERROR_VIEW_DOES_NOT_EXIST,
NoPermissionToTable: ERROR_NO_PERMISSION_TO_TABLE,
CannotDeleteAlreadyDeletedItem: ERROR_CANNOT_DELETE_ALREADY_DELETED_ITEM,
CannotDeleteRowsInTable: ERROR_CANNOT_DELETE_ROWS_IN_TABLE,
Expand Down Expand Up @@ -1337,7 +1356,11 @@ class BatchRowsView(APIView):
),
401: get_error_schema(["ERROR_NO_PERMISSION_TO_TABLE"]),
404: get_error_schema(
["ERROR_TABLE_DOES_NOT_EXIST", "ERROR_ROW_DOES_NOT_EXIST"]
[
"ERROR_TABLE_DOES_NOT_EXIST",
"ERROR_ROW_DOES_NOT_EXIST",
"ERROR_VIEW_DOES_NOT_EXIST",
]
),
},
)
Expand All @@ -1347,6 +1370,7 @@ class BatchRowsView(APIView):
TableDoesNotExist: ERROR_TABLE_DOES_NOT_EXIST,
RowDoesNotExist: ERROR_ROW_DOES_NOT_EXIST,
RowIdsNotUnique: ERROR_ROW_IDS_NOT_UNIQUE,
ViewDoesNotExist: ERROR_VIEW_DOES_NOT_EXIST,
NoPermissionToTable: ERROR_NO_PERMISSION_TO_TABLE,
CannotCreateRowsInTable: ERROR_CANNOT_CREATE_ROWS_IN_TABLE,
DeadlockException: ERROR_DATABASE_DEADLOCK,
Expand Down Expand Up @@ -1501,7 +1525,11 @@ def post(self, request: Request, table_id: int, query_params) -> Response:
),
401: get_error_schema(["ERROR_NO_PERMISSION_TO_TABLE"]),
404: get_error_schema(
["ERROR_TABLE_DOES_NOT_EXIST", "ERROR_ROW_DOES_NOT_EXIST"]
[
"ERROR_TABLE_DOES_NOT_EXIST",
"ERROR_ROW_DOES_NOT_EXIST",
"ERROR_VIEW_DOES_NOT_EXIST",
]
),
},
)
Expand All @@ -1511,6 +1539,7 @@ def post(self, request: Request, table_id: int, query_params) -> Response:
TableDoesNotExist: ERROR_TABLE_DOES_NOT_EXIST,
RowDoesNotExist: ERROR_ROW_DOES_NOT_EXIST,
RowIdsNotUnique: ERROR_ROW_IDS_NOT_UNIQUE,
ViewDoesNotExist: ERROR_VIEW_DOES_NOT_EXIST,
NoPermissionToTable: ERROR_NO_PERMISSION_TO_TABLE,
DeadlockException: ERROR_DATABASE_DEADLOCK,
FieldDataConstraintException: ERROR_FIELD_DATA_CONSTRAINT,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"type": "feature",
"message": "Show matching restricted view filters and allow setting default values",
"issue_origin": "github",
"issue_number": 4926,
"domain": "database",
"bullet_points": [],
"created_at": "2026-04-08"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"type": "refactor",
"message": "Replace custom moveToBody mixin with Vue 3 built-in Teleport component.",
"issue_origin": "github",
"issue_number": null,
"domain": "core",
"bullet_points": [],
"created_at": "2026-04-08"
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,4 @@
@import 'assistant_onboarding';
@import 'date_dependency';
@import 'data_scanner';
@import 'restricted_view_filter_context';
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
.restricted-view-filter-context {
.expandable__content--card {
padding: 0;
}
}

.restricted-view-filter-context__head {
display: flex;
align-items: flex-start;
gap: 10px;
}

.restricted-view-filter-context__icon {
flex: 0 0 20px;
font-size: 16px;
position: relative;
top: 1px;

&--warning {
color: $palette-yellow-800;
}

&--success {
color: $palette-green-700;
}
}

.restricted-view-filter-context__text {
flex: 1 1 auto;
min-width: 0;
}

.restricted-view-filter-context__title {
font-weight: 500;
font-size: 13px;
line-height: 20px;
margin-bottom: 4px;
}

.restricted-view-filter-context__subtitle {
font-size: 12px;
color: $palette-neutral-900;
margin-top: 2px;
line-height: 16px;
}

.restricted-view-filter-context__toggle {
flex: 0 0 auto;
font-size: 14px;
color: $color-neutral-500;
position: relative;
top: 3px;
}

.restricted-view-filter-context__body {
padding: 20px 16px 20px 46px;
}

.restricted-view-filter-context__field {
display: flex;
align-items: center;
width: 100%;

&:not(:last-child) {
margin-bottom: 24px;
}
}

.restricted-view-filter-context__field-label {
@extend %ellipsis;

width: 110px;
flex: 0 0 110px;
margin-right: 20px;
font-size: 13px;
font-weight: 500;
line-height: 20px;
color: $palette-neutral-1200;
}

.restricted-view-filter-context__field-icon {
width: 16px;
color: $palette-neutral-600;
font-size: 14px;
}

.restricted-view-filter-context__field-input {
width: 100%;
}

.restricted-view-filter-context__remove {
display: inline-block;
margin-top: 4px;
font-size: 12px;
}
Loading
Loading