hub.sr.ht/hubsrht/types/event.py

54 lines
2.1 KiB
Python
Raw Normal View History

2020-03-26 00:17:53 +01:00
import sqlalchemy as sa
import sqlalchemy_utils as sau
from enum import Enum
from srht.database import Base
class EventType(Enum):
source_repo_added = "source_repo_added"
mailing_list_added = "mailing_list_added"
2020-04-02 15:24:29 +02:00
tracker_added = "tracker_added"
2020-03-26 00:17:53 +01:00
external_event = "external_event"
class Event(Base):
2020-04-23 17:32:15 +02:00
__tablename__ = "event"
2020-03-26 00:17:53 +01:00
id = sa.Column(sa.Integer, primary_key=True)
created = sa.Column(sa.DateTime, nullable=False)
project_id = sa.Column(sa.Integer,
sa.ForeignKey("project.id", ondelete="CASCADE"),
nullable=False)
project = sa.orm.relationship("Project",
backref=sa.orm.backref("events", cascade="all, delete"))
2020-03-26 00:17:53 +01:00
"""The project implicated in this event"""
2020-04-01 20:47:47 +02:00
user_id = sa.Column(sa.Integer,
2020-04-23 17:32:15 +02:00
sa.ForeignKey("user.id", ondelete="CASCADE"))
2020-04-01 20:47:47 +02:00
user = sa.orm.relationship("User", backref=sa.orm.backref("events"),
cascade="all, delete")
2020-03-26 00:17:53 +01:00
"""The user implicated in this event"""
event_type = sa.Column(sau.ChoiceType(EventType, impl=sa.String()),
nullable=False)
2020-04-01 20:47:47 +02:00
source_repo_id = sa.Column(sa.Integer,
sa.ForeignKey("source_repo.id", ondelete="CASCADE"))
source_repo = sa.orm.relationship("SourceRepo", cascade="all, delete")
2020-03-26 00:17:53 +01:00
"""The source repository implicated in this event, if applicable"""
2020-04-01 20:47:47 +02:00
mailing_list_id = sa.Column(sa.Integer,
sa.ForeignKey("mailing_list.id", ondelete="CASCADE"))
mailing_list = sa.orm.relationship("MailingList", cascade="all, delete")
2020-03-26 00:17:53 +01:00
"""The mailing list implicated in this event, if applicable"""
2020-04-02 15:24:29 +02:00
tracker_id = sa.Column(sa.Integer,
sa.ForeignKey("tracker.id", ondelete="CASCADE"))
tracker = sa.orm.relationship("Tracker", cascade="all, delete")
"""The ticket tracker implicated in this event, if applicable"""
2020-03-26 00:17:53 +01:00
external_source = sa.Column(sa.Unicode) # e.g. "lists.sr.ht"
external_summary = sa.Column(sa.Unicode) # markdown
external_details = sa.Column(sa.Unicode) # markdown
external_summary_plain = sa.Column(sa.Unicode) # plaintext
external_details_plain = sa.Column(sa.Unicode) # plaintext
external_url = sa.Column(sa.Unicode)