Source code for betty.ancestry.presence_role

"""
Provide presence roles.
"""

from __future__ import annotations

from typing import final, TYPE_CHECKING

from typing_extensions import override

from betty.asyncio import wait_to_thread
from betty.json.schema import Enum
from betty.locale.localizable import Localizable, _
from betty.plugin import Plugin, PluginRepository
from betty.plugin.entry_point import EntryPointPluginRepository

if TYPE_CHECKING:
    from betty.machine_name import MachineName


[docs] class PresenceRole(Plugin): """ A person's role at an event. Read more about :doc:`/development/plugin/presence-role`. """ pass
PRESENCE_ROLE_REPOSITORY: PluginRepository[PresenceRole] = EntryPointPluginRepository( "betty.presence_role" ) """ The presence role plugin repository. Read more about :doc:`/development/plugin/presence-role`. """
[docs] class PresenceRoleSchema(Enum): """ A JSON Schema for presence roles. """
[docs] def __init__(self): super().__init__( *[ presence_role.plugin_id() for presence_role in wait_to_thread(PRESENCE_ROLE_REPOSITORY.select()) ], def_name="presenceRole", title="Presence role", description="A person's role in an event.", )
[docs] @final class Subject(PresenceRole): """ Someone was the subject of the event. The meaning of this role depends on the event type. For example, for :py:class:`betty.ancestry.event_type.Marriage`, the subjects are the people who got married. For :py:class:`betty.ancestry.event_type.Death` it is the person who died. """
[docs] @override @classmethod def plugin_id(cls) -> MachineName: return "subject"
[docs] @override @classmethod def plugin_label(cls) -> Localizable: return _("Subject") # pragma: no cover
[docs] @final class Witness(PresenceRole): """ Someone `witnessed <https://en.wikipedia.org/wiki/Witness>`_ the event. """
[docs] @override @classmethod def plugin_id(cls) -> MachineName: return "witness" # pragma: no cover
[docs] @override @classmethod def plugin_label(cls) -> Localizable: return _("Witness") # pragma: no cover
[docs] @final class Beneficiary(PresenceRole): """ Someone was a `benificiary <https://en.wikipedia.org/wiki/Beneficiary>`_ in the event, such as a :py:class:`betty.ancestry.event_type.Will`. """
[docs] @override @classmethod def plugin_id(cls) -> MachineName: return "beneficiary" # pragma: no cover
[docs] @override @classmethod def plugin_label(cls) -> Localizable: return _("Beneficiary") # pragma: no cover
[docs] @final class Attendee(PresenceRole): """ Someone attended the event (further details unknown). """
[docs] @override @classmethod def plugin_id(cls) -> MachineName: return "attendee" # pragma: no cover
[docs] @override @classmethod def plugin_label(cls) -> Localizable: return _("Attendee") # pragma: no cover
[docs] @final class Speaker(PresenceRole): """ Someone performed public speaking at the event. """
[docs] @override @classmethod def plugin_id(cls) -> MachineName: return "speaker" # pragma: no cover
[docs] @override @classmethod def plugin_label(cls) -> Localizable: return _("Speaker") # pragma: no cover
[docs] @final class Celebrant(PresenceRole): """ Someone was the `celebrant <https://en.wikipedia.org/wiki/Officiant>`_ at the event. This includes but is not limited to: - civil servant - religious leader - civilian """
[docs] @override @classmethod def plugin_id(cls) -> MachineName: return "celebrant" # pragma: no cover
[docs] @override @classmethod def plugin_label(cls) -> Localizable: return _("Celebrant") # pragma: no cover
[docs] @final class Organizer(PresenceRole): """ Someone organized the event. """
[docs] @override @classmethod def plugin_id(cls) -> MachineName: return "organizer" # pragma: no cover
[docs] @override @classmethod def plugin_label(cls) -> Localizable: return _("Organizer") # pragma: no cover