Compare commits
No commits in common. "bec08bcf4899cb8a286613ced4750030d188288f" and "1c41baacb4edd8cf448ae0c235a15cf9e4cc91b9" have entirely different histories.
bec08bcf48
...
1c41baacb4
1 changed files with 21 additions and 9 deletions
30
scl.py
30
scl.py
|
@ -1,11 +1,19 @@
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
from mastodon import Mastodon
|
from mastodon import Mastodon
|
||||||
from sqlalchemy import create_engine, select
|
import sqlite3
|
||||||
|
from typing import List
|
||||||
|
from typing import Optional
|
||||||
|
from sqlalchemy import ForeignKey, select
|
||||||
|
from sqlalchemy import String
|
||||||
|
from sqlalchemy.orm import DeclarativeBase
|
||||||
|
from sqlalchemy.orm import Mapped
|
||||||
|
from sqlalchemy.orm import Session
|
||||||
|
from sqlalchemy.orm import mapped_column
|
||||||
|
from sqlalchemy.orm import relationship
|
||||||
from sqlalchemy.exc import NoResultFound
|
from sqlalchemy.exc import NoResultFound
|
||||||
from sqlalchemy.orm import DeclarativeBase, Mapped, Session, mapped_column
|
from sqlalchemy import create_engine
|
||||||
|
|
||||||
post_datetime_format = "%b %e %l:%M %p"
|
post_datetime_format = "%b %e %l:%M %p"
|
||||||
|
|
||||||
|
@ -28,16 +36,20 @@ class SclOutage(Base):
|
||||||
__tablename__ = "scl_outages"
|
__tablename__ = "scl_outages"
|
||||||
scl_outage_id: Mapped[int] = mapped_column(primary_key=True, unique=True)
|
scl_outage_id: Mapped[int] = mapped_column(primary_key=True, unique=True)
|
||||||
outage_user_id: Mapped[str] = mapped_column()
|
outage_user_id: Mapped[str] = mapped_column()
|
||||||
most_recent_post_id: Mapped[Optional[str]] = mapped_column()
|
most_recent_post_id: Mapped[str] = mapped_column()
|
||||||
last_updated_time: Mapped[datetime] = mapped_column()
|
last_updated_time: Mapped[datetime] = mapped_column()
|
||||||
estimated_restoration_time: Mapped[datetime] = mapped_column()
|
estimated_restoration_time: Mapped[datetime] = mapped_column()
|
||||||
cause: Mapped[str] = mapped_column()
|
cause: Mapped[str] = mapped_column()
|
||||||
outage_size: Mapped[str] = mapped_column()
|
outage_size: Mapped[str] = mapped_column()
|
||||||
status: Mapped[Optional[str]] = mapped_column()
|
status: Mapped[Optional[str]] = mapped_column()
|
||||||
no_longer_in_response_time: Mapped[Optional[datetime]] = mapped_column()
|
no_longer_in_response_time: Mapped[
|
||||||
|
Optional[datetime]
|
||||||
|
] = (
|
||||||
|
mapped_column()
|
||||||
|
) # If the event is no longer being returned in the response, this will be set to the current time
|
||||||
|
|
||||||
def __repr__(self) -> str:
|
def __repr__(self) -> str:
|
||||||
return f"SclOutage(scl_outage_id={self.scl_outage_id!r}, most_recent_post_id={self.most_recent_post_id!r}, last_updated_time={self.last_updated_time!r}, no_longer_in_response_time={self.no_longer_in_response_time!r})"
|
return f"User(scl_outage_id={self.scl_outage_id!r}, most_recent_post_id={self.most_recent_post_id!r}, last_updated_time={self.last_updated_time!r}, no_longer_in_response_time={self.no_longer_in_response_time!r})"
|
||||||
|
|
||||||
|
|
||||||
engine = create_engine("sqlite:///scl.db")
|
engine = create_engine("sqlite:///scl.db")
|
||||||
|
@ -118,7 +130,7 @@ with Session(engine) as session:
|
||||||
mastodon_post_result = mastodon.status_post(
|
mastodon_post_result = mastodon.status_post(
|
||||||
status="\n".join(updated_entries),
|
status="\n".join(updated_entries),
|
||||||
in_reply_to_id=existing_record.most_recent_post_id,
|
in_reply_to_id=existing_record.most_recent_post_id,
|
||||||
visibility="unlisted",
|
visibility="public",
|
||||||
)
|
)
|
||||||
existing_record.most_recent_post_id = mastodon_post_result["id"]
|
existing_record.most_recent_post_id = mastodon_post_result["id"]
|
||||||
|
|
||||||
|
@ -171,7 +183,7 @@ Cause: {}
|
||||||
active_outage.outage_user_id
|
active_outage.outage_user_id
|
||||||
),
|
),
|
||||||
in_reply_to_id=active_outage.most_recent_post_id,
|
in_reply_to_id=active_outage.most_recent_post_id,
|
||||||
visibility="unlisted",
|
visibility="public",
|
||||||
)
|
)
|
||||||
|
|
||||||
active_outage.most_recent_post_id = mastodon_post_result["id"]
|
active_outage.most_recent_post_id = mastodon_post_result["id"]
|
||||||
|
|
Loading…
Reference in a new issue