"""
Data types for people's presences at events.
"""
from __future__ import annotations
from typing import final, TYPE_CHECKING
from typing_extensions import override
from betty.locale.localizable import _, Localizable
from betty.model import Entity
from betty.model.association import BidirectionalToOne, ToOneResolver
from betty.plugin import ShorthandPluginBase
from betty.privacy import HasPrivacy, Privacy, merge_privacies, is_public
if TYPE_CHECKING:
from betty.json.linked_data import JsonLdObject
from betty.project import Project
from betty.serde.dump import DumpMapping, Dump
from betty.ancestry.person import Person
from betty.ancestry.presence_role import PresenceRole
from betty.ancestry.event import Event
[docs]
@final
class Presence(ShorthandPluginBase, HasPrivacy, Entity):
"""
The presence of a :py:class:`betty.ancestry.person.Person` at an :py:class:`betty.ancestry.event.Event`.
"""
_plugin_id = "presence"
_plugin_label = _("Presence")
#: The person whose presence is described.
person = BidirectionalToOne["Presence", "Person"](
"betty.ancestry.presence:Presence",
"person",
"betty.ancestry.person:Person",
"presences",
title="Person",
)
#: The event the person was present at.
event = BidirectionalToOne["Presence", "Event"](
"betty.ancestry.presence:Presence",
"event",
"betty.ancestry.event:Event",
"presences",
title="Event",
)
#: The role the person performed at the event.
role: PresenceRole