Source code for parliament.models.meeting_item

from __future__ import annotations

import uuid

from sqlalchemy import Column, Text, ForeignKey
from sqlalchemy.orm import relationship

from onegov.core.orm import Base
from onegov.core.orm.types import UUID
from onegov.parliament.models import Meeting
from onegov.search import ORMSearchable

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    import uuid


[docs] class MeetingItem(Base, ORMSearchable):
[docs] __tablename__ = 'par_meeting_items'
[docs] es_public = True
[docs] es_properties = { 'title': {'type': 'text'}, 'number': {'type': 'text'} }
@property
[docs] def es_suggestion(self) -> str: return self.title
#: Internal ID
[docs] id: Column[uuid.UUID] = Column( UUID, # type:ignore[arg-type] primary_key=True, default=uuid.uuid4, )
#: The title of the meeting item
[docs] title: Column[str] = Column(Text, nullable=False)
#: number of the meeting item
[docs] number: Column[str | None] = Column(Text, nullable=True)
#: political business id
[docs] political_business_id: Column[uuid.UUID | None] = Column( UUID, # type:ignore[arg-type] ForeignKey('par_political_businesses.id'), )
#: link ID only used for mapping after import #: The id of the meeting
[docs] meeting_id: Column[uuid.UUID] = Column( UUID, # type:ignore[arg-type] ForeignKey('par_meetings.id'), nullable=False )
#: The meeting
[docs] meeting: relationship[Meeting] = relationship( Meeting, back_populates='meeting_items' )
[docs] def __repr__(self) -> str: return f'<Meeting Item {self.number} {self.title}>'