feat(poll): enforce governed participation ownership
This commit is contained in:
@@ -15,11 +15,12 @@ from govoplan_core.core.modules import (
|
||||
)
|
||||
from govoplan_core.db.base import Base
|
||||
from govoplan_core.core.poll import CAPABILITY_POLL_SCHEDULING
|
||||
from govoplan_poll.backend.participation import CAPABILITY_POLL_PARTICIPATION_GATEWAY
|
||||
from govoplan_poll.backend.db import models as poll_models # noqa: F401 - populate Poll ORM metadata
|
||||
|
||||
MODULE_ID = "poll"
|
||||
MODULE_NAME = "Poll"
|
||||
MODULE_VERSION = "0.1.9"
|
||||
MODULE_VERSION = "0.1.10"
|
||||
READ_SCOPE = "poll:poll:read"
|
||||
WRITE_SCOPE = "poll:poll:write"
|
||||
ADMIN_SCOPE = "poll:poll:admin"
|
||||
@@ -107,6 +108,10 @@ def _poll_scheduling_provider(context: ModuleContext) -> object:
|
||||
return SqlPollSchedulingProvider()
|
||||
|
||||
|
||||
def _poll_participation_gateway_provider(context: ModuleContext) -> object:
|
||||
return _poll_scheduling_provider(context)
|
||||
|
||||
|
||||
manifest = ModuleManifest(
|
||||
id=MODULE_ID,
|
||||
name=MODULE_NAME,
|
||||
@@ -115,17 +120,21 @@ manifest = ModuleManifest(
|
||||
optional_dependencies=("access", "calendar", "campaigns", "portal", "mail", "notifications", "forms_runtime"),
|
||||
optional_capabilities=(CAPABILITY_AUTH_PRINCIPAL_RESOLVER, CAPABILITY_AUTH_PERMISSION_EVALUATOR),
|
||||
provides_interfaces=(
|
||||
ModuleInterfaceProvider(name="poll.option_selection", version="0.1.9"),
|
||||
ModuleInterfaceProvider(name="poll.availability_matrix", version="0.1.9"),
|
||||
ModuleInterfaceProvider(name="poll.response_collection", version="0.1.9"),
|
||||
ModuleInterfaceProvider(name="poll.workflow_context", version="0.1.9"),
|
||||
ModuleInterfaceProvider(name="poll.signed_participation", version="0.1.9"),
|
||||
ModuleInterfaceProvider(name="poll.option_selection", version=MODULE_VERSION),
|
||||
ModuleInterfaceProvider(name="poll.availability_matrix", version=MODULE_VERSION),
|
||||
ModuleInterfaceProvider(name="poll.response_collection", version=MODULE_VERSION),
|
||||
ModuleInterfaceProvider(name="poll.workflow_context", version=MODULE_VERSION),
|
||||
ModuleInterfaceProvider(name="poll.signed_participation", version=MODULE_VERSION),
|
||||
ModuleInterfaceProvider(name="poll.governed_participation", version=MODULE_VERSION),
|
||||
),
|
||||
permissions=PERMISSIONS,
|
||||
role_templates=ROLE_TEMPLATES,
|
||||
route_factory=_poll_router,
|
||||
tenant_summary_providers=(_tenant_summary,),
|
||||
capability_factories={CAPABILITY_POLL_SCHEDULING: _poll_scheduling_provider},
|
||||
capability_factories={
|
||||
CAPABILITY_POLL_SCHEDULING: _poll_scheduling_provider,
|
||||
CAPABILITY_POLL_PARTICIPATION_GATEWAY: _poll_participation_gateway_provider,
|
||||
},
|
||||
migration_spec=MigrationSpec(
|
||||
module_id=MODULE_ID,
|
||||
metadata=Base.metadata,
|
||||
@@ -136,6 +145,7 @@ manifest = ModuleManifest(
|
||||
poll_models.PollInvitation,
|
||||
poll_models.PollLifecycleTransition,
|
||||
poll_models.PollOption,
|
||||
poll_models.PollParticipationSubmission,
|
||||
poll_models.PollResponse,
|
||||
label="Poll",
|
||||
),
|
||||
@@ -147,6 +157,7 @@ manifest = ModuleManifest(
|
||||
poll_models.PollInvitation,
|
||||
poll_models.PollLifecycleTransition,
|
||||
poll_models.PollOption,
|
||||
poll_models.PollParticipationSubmission,
|
||||
poll_models.PollResponse,
|
||||
label="Poll",
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user