Make Access optional for Scheduling
This commit is contained in:
@@ -75,9 +75,10 @@ The Scheduling manifest declares `poll` as a required dependency because
|
|||||||
availability collection and option/date poll primitives belong in
|
availability collection and option/date poll primitives belong in
|
||||||
`govoplan-poll`.
|
`govoplan-poll`.
|
||||||
|
|
||||||
The manifest declares `evaluation` as an optional dependency. Scheduling may
|
The manifest declares `access` and `evaluation` as optional dependencies.
|
||||||
trigger post-event or post-appointment feedback, but scheduling must not depend
|
Scheduling may use Access for identity, groups, and permissions, and may trigger
|
||||||
on the heavier evaluation model just to find a meeting time.
|
post-event or post-appointment feedback through Evaluation. It must not require
|
||||||
|
either module just to find a meeting time.
|
||||||
|
|
||||||
## Expected Integrations
|
## Expected Integrations
|
||||||
|
|
||||||
@@ -85,7 +86,7 @@ on the heavier evaluation model just to find a meeting time.
|
|||||||
- `govoplan-evaluation`: optional post-event, post-appointment, or process feedback
|
- `govoplan-evaluation`: optional post-event, post-appointment, or process feedback
|
||||||
- `govoplan-calendar`: availability, calendars, resources, rooms, recurrence, Open-Xchange/calendar adapters
|
- `govoplan-calendar`: availability, calendars, resources, rooms, recurrence, Open-Xchange/calendar adapters
|
||||||
- `govoplan-appointments`: conversion from a selected meeting time into a booked appointment where appropriate
|
- `govoplan-appointments`: conversion from a selected meeting time into a booked appointment where appropriate
|
||||||
- `govoplan-access` and `govoplan-idm`: participants, groups, directory lookup, permissions
|
- `govoplan-access` and `govoplan-idm`: optional participants, groups, directory lookup, permissions
|
||||||
- `govoplan-mail` and `govoplan-notifications`: invitations, reminders, confirmations
|
- `govoplan-mail` and `govoplan-notifications`: invitations, reminders, confirmations
|
||||||
- `govoplan-portal`: external participant scheduling flows
|
- `govoplan-portal`: external participant scheduling flows
|
||||||
- `govoplan-workflow` and `govoplan-tasks`: follow-up work after a time is selected
|
- `govoplan-workflow` and `govoplan-tasks`: follow-up work after a time is selected
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ license = { file = "LICENSE" }
|
|||||||
authors = [{ name = "GovOPlaN" }]
|
authors = [{ name = "GovOPlaN" }]
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"govoplan-core>=0.1.8",
|
"govoplan-core>=0.1.8",
|
||||||
"govoplan-access>=0.1.8",
|
|
||||||
"govoplan-poll>=0.1.8",
|
"govoplan-poll>=0.1.8",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -63,7 +63,10 @@ DOCUMENTATION = (
|
|||||||
body=(
|
body=(
|
||||||
"Scheduling owns meeting scheduling workflows, candidate slots, participant availability "
|
"Scheduling owns meeting scheduling workflows, candidate slots, participant availability "
|
||||||
"collection, conflict explanation, reminders, and decision handoff. It depends on Poll "
|
"collection, conflict explanation, reminders, and decision handoff. It depends on Poll "
|
||||||
"for reusable availability matrices and can optionally trigger Evaluation for post-event feedback."
|
"for reusable availability matrices and can optionally trigger Evaluation for post-event feedback. "
|
||||||
|
"Access is optional: when installed, Scheduling can use principal resolution, permission "
|
||||||
|
"evaluation, groups, and role templates; without it, reduced signed-link or local organizer "
|
||||||
|
"flows remain possible."
|
||||||
),
|
),
|
||||||
layer="available",
|
layer="available",
|
||||||
documentation_types=("admin",),
|
documentation_types=("admin",),
|
||||||
@@ -77,9 +80,9 @@ manifest = ModuleManifest(
|
|||||||
id=MODULE_ID,
|
id=MODULE_ID,
|
||||||
name=MODULE_NAME,
|
name=MODULE_NAME,
|
||||||
version=MODULE_VERSION,
|
version=MODULE_VERSION,
|
||||||
dependencies=("access", "poll"),
|
dependencies=("poll",),
|
||||||
optional_dependencies=("calendar", "appointments", "evaluation", "mail", "notifications", "portal", "workflow", "tasks", "idm", "organizations"),
|
optional_dependencies=("access", "calendar", "appointments", "evaluation", "mail", "notifications", "portal", "workflow", "tasks", "idm", "organizations"),
|
||||||
required_capabilities=(CAPABILITY_AUTH_PRINCIPAL_RESOLVER, CAPABILITY_AUTH_PERMISSION_EVALUATOR),
|
optional_capabilities=(CAPABILITY_AUTH_PRINCIPAL_RESOLVER, CAPABILITY_AUTH_PERMISSION_EVALUATOR),
|
||||||
provides_interfaces=(
|
provides_interfaces=(
|
||||||
ModuleInterfaceProvider(name="scheduling.candidate_slots", version="0.1.8"),
|
ModuleInterfaceProvider(name="scheduling.candidate_slots", version="0.1.8"),
|
||||||
ModuleInterfaceProvider(name="scheduling.decision_handoff", version="0.1.8"),
|
ModuleInterfaceProvider(name="scheduling.decision_handoff", version="0.1.8"),
|
||||||
|
|||||||
@@ -13,6 +13,10 @@ class SchedulingManifestTests(unittest.TestCase):
|
|||||||
self.assertIsInstance(manifest, ModuleManifest)
|
self.assertIsInstance(manifest, ModuleManifest)
|
||||||
self.assertEqual(manifest.id, "scheduling")
|
self.assertEqual(manifest.id, "scheduling")
|
||||||
self.assertIn("poll", manifest.dependencies)
|
self.assertIn("poll", manifest.dependencies)
|
||||||
|
self.assertNotIn("access", manifest.dependencies)
|
||||||
|
self.assertIn("access", manifest.optional_dependencies)
|
||||||
|
self.assertFalse(manifest.required_capabilities)
|
||||||
|
self.assertIn("auth.principalResolver", manifest.optional_capabilities)
|
||||||
self.assertIn("evaluation", manifest.optional_dependencies)
|
self.assertIn("evaluation", manifest.optional_dependencies)
|
||||||
self.assertIn("poll.availability_matrix", {interface.name for interface in manifest.requires_interfaces})
|
self.assertIn("poll.availability_matrix", {interface.name for interface in manifest.requires_interfaces})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user