feat(campaigns): add Case Quick Access selector
Module Package Release / publish-packages (push) Successful in 13s
Module Package Release / publish-packages (push) Successful in 13s
This commit is contained in:
@@ -36,6 +36,7 @@ from govoplan_core.core.modules import (
|
||||
NavItem,
|
||||
PermissionDefinition,
|
||||
ProductAreaContribution,
|
||||
QuickAccessTool,
|
||||
RoleTemplate,
|
||||
)
|
||||
from govoplan_core.core.reporting import REPORT_PROVIDER_CAPABILITY_PREFIX
|
||||
@@ -384,7 +385,7 @@ def _campaigns_router(context: ModuleContext):
|
||||
manifest = ModuleManifest(
|
||||
id="campaigns",
|
||||
name="Campaigns",
|
||||
version="0.1.18",
|
||||
version="0.1.19",
|
||||
required_capabilities=(
|
||||
CAPABILITY_AUTH_PRINCIPAL_RESOLVER,
|
||||
CAPABILITY_AUTH_PERMISSION_EVALUATOR,
|
||||
@@ -617,6 +618,32 @@ manifest = ModuleManifest(
|
||||
label="Campaign activity widget",
|
||||
order=50,
|
||||
),
|
||||
ViewSurface(
|
||||
id="campaigns.quick_access.campaigns",
|
||||
module_id="campaigns",
|
||||
kind="quick_access",
|
||||
label="Campaign selection",
|
||||
order=55,
|
||||
),
|
||||
),
|
||||
quick_access_tools=(
|
||||
QuickAccessTool(
|
||||
id="campaigns.select",
|
||||
module_id="campaigns",
|
||||
category_id="campaigns",
|
||||
label="Campaigns",
|
||||
description="Select an authorized exact Campaign for the active Case.",
|
||||
surface_id="campaigns.quick_access.campaigns",
|
||||
icon="campaign",
|
||||
full_page_path="/campaigns",
|
||||
required_any=("campaigns:campaign:read",),
|
||||
order=20,
|
||||
modes=("select",),
|
||||
availability="active_object",
|
||||
accepted_reference_kinds=("cases.case",),
|
||||
returned_reference_kinds=("campaigns.campaign",),
|
||||
help_context_id="campaigns.quick_access.campaigns",
|
||||
),
|
||||
),
|
||||
),
|
||||
migration_spec=MigrationSpec(
|
||||
@@ -668,6 +695,48 @@ manifest = ModuleManifest(
|
||||
),
|
||||
documentation=(
|
||||
*CAMPAIGN_USER_DOCUMENTATION,
|
||||
DocumentationTopic(
|
||||
id="campaigns.workflow.link-exact-campaign-to-case",
|
||||
title="Link an exact Campaign reference to an active Case",
|
||||
summary=(
|
||||
"Return an authorized Campaign and current immutable version through "
|
||||
"Quick Access without copying campaign content."
|
||||
),
|
||||
body=(
|
||||
"When a Case is the active object, Campaigns contributes a bounded "
|
||||
"Quick Access selector. The normal Campaign list endpoint applies the "
|
||||
"current actor's tenant, owner, group, share, and administration access "
|
||||
"before candidates appear. Selecting a Campaign returns only its owner "
|
||||
"module, stable Campaign ID, current version ID, display label, tenant, "
|
||||
"and owner route through the versioned result contract. Cases discards "
|
||||
"the label and stores no recipient, message, attachment, delivery, report, "
|
||||
"or campaign configuration content. Opening the reference enters Campaigns "
|
||||
"and rechecks current access. Campaigns disabled, access revoked, or the "
|
||||
"source removed therefore leaves only an unavailable historical Case "
|
||||
"reference; it never turns Case access into Campaign access."
|
||||
),
|
||||
layer="configured",
|
||||
documentation_types=("admin", "user"),
|
||||
audience=("campaign_manager", "case_manager", "operator", "module_admin"),
|
||||
related_modules=("cases", "quick_access"),
|
||||
conditions=(
|
||||
DocumentationCondition(
|
||||
required_modules=("campaigns", "cases"),
|
||||
required_scopes=("campaigns:campaign:read",),
|
||||
),
|
||||
),
|
||||
links=(
|
||||
DocumentationLink(
|
||||
label="Campaigns",
|
||||
href="/campaigns",
|
||||
kind="runtime",
|
||||
),
|
||||
),
|
||||
metadata={
|
||||
"kind": "workflow",
|
||||
"help_contexts": ["campaigns.quick_access.campaigns"],
|
||||
},
|
||||
),
|
||||
DocumentationTopic(
|
||||
id="campaigns.privacy.data-subject-requests",
|
||||
title="Review Campaign data in a data-subject request",
|
||||
|
||||
Reference in New Issue
Block a user