feat: add personal and group view ownership

This commit is contained in:
2026-07-28 22:13:15 +02:00
parent 34221b633b
commit 3de8d4aa5f
12 changed files with 833 additions and 213 deletions
+60 -2
View File
@@ -31,6 +31,10 @@ MODULE_VERSION = "0.1.0"
DEFINITION_READ_SCOPE = "views:definition:read"
DEFINITION_WRITE_SCOPE = "views:definition:write"
GROUP_DEFINITION_READ_SCOPE = "views:group_definition:read"
GROUP_DEFINITION_WRITE_SCOPE = "views:group_definition:write"
PERSONAL_DEFINITION_READ_SCOPE = "views:personal_definition:read"
PERSONAL_DEFINITION_WRITE_SCOPE = "views:personal_definition:write"
ASSIGNMENT_READ_SCOPE = "views:assignment:read"
ASSIGNMENT_WRITE_SCOPE = "views:assignment:write"
SELECTION_READ_SCOPE = "views:selection:read"
@@ -72,6 +76,26 @@ PERMISSIONS = (
"Manage tenant Views",
"Create, revise, publish, and archive tenant View definitions.",
),
_permission(
GROUP_DEFINITION_READ_SCOPE,
"View group Views",
"Read View definitions owned by groups the account belongs to.",
),
_permission(
GROUP_DEFINITION_WRITE_SCOPE,
"Manage group Views",
"Create, revise, publish, and archive Views owned by the account's groups.",
),
_permission(
PERSONAL_DEFINITION_READ_SCOPE,
"View personal Views",
"Read View definitions owned by the current account.",
),
_permission(
PERSONAL_DEFINITION_WRITE_SCOPE,
"Manage personal Views",
"Create, revise, publish, and archive Views owned by the current account.",
),
_permission(
ASSIGNMENT_READ_SCOPE,
"View tenant View assignments",
@@ -126,17 +150,39 @@ ROLE_TEMPLATES = (
permissions=(
DEFINITION_READ_SCOPE,
DEFINITION_WRITE_SCOPE,
GROUP_DEFINITION_READ_SCOPE,
GROUP_DEFINITION_WRITE_SCOPE,
PERSONAL_DEFINITION_READ_SCOPE,
PERSONAL_DEFINITION_WRITE_SCOPE,
ASSIGNMENT_READ_SCOPE,
ASSIGNMENT_WRITE_SCOPE,
SELECTION_READ_SCOPE,
SELECTION_WRITE_SCOPE,
),
),
RoleTemplate(
slug="view_designer",
name="View designer",
description="Design personal Views and reusable Views for assigned groups.",
permissions=(
GROUP_DEFINITION_READ_SCOPE,
GROUP_DEFINITION_WRITE_SCOPE,
PERSONAL_DEFINITION_READ_SCOPE,
PERSONAL_DEFINITION_WRITE_SCOPE,
SELECTION_READ_SCOPE,
SELECTION_WRITE_SCOPE,
),
),
RoleTemplate(
slug="view_user",
name="View user",
description="Use and select Views made available to the account.",
permissions=(SELECTION_READ_SCOPE, SELECTION_WRITE_SCOPE),
description="Use available Views and design Views for the current account.",
permissions=(
PERSONAL_DEFINITION_READ_SCOPE,
PERSONAL_DEFINITION_WRITE_SCOPE,
SELECTION_READ_SCOPE,
SELECTION_WRITE_SCOPE,
),
default_authenticated=True,
),
)
@@ -203,6 +249,14 @@ manifest = ModuleManifest(
description="Edit tenant, group, and user Views and assignments.",
order=30,
),
ViewSurface(
id="views.settings.personal",
module_id=MODULE_ID,
kind="section",
label="Personal and group Views",
description="Design reusable Views owned by the account or its groups.",
order=40,
),
),
),
route_factory=_router,
@@ -269,6 +323,10 @@ __all__ = [
"ASSIGNMENT_WRITE_SCOPE",
"DEFINITION_READ_SCOPE",
"DEFINITION_WRITE_SCOPE",
"GROUP_DEFINITION_READ_SCOPE",
"GROUP_DEFINITION_WRITE_SCOPE",
"PERSONAL_DEFINITION_READ_SCOPE",
"PERSONAL_DEFINITION_WRITE_SCOPE",
"MODULE_ID",
"MODULE_VERSION",
"SELECTION_READ_SCOPE",