|
|
@ -1,20 +1,24 @@
|
|
|
|
from __future__ import annotations
|
|
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
|
|
from datetime import datetime
|
|
|
|
|
|
|
|
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
from typing import TYPE_CHECKING, Generic, TypeVar
|
|
|
|
|
|
|
|
|
|
|
|
from mipac.types.announcement import IAnnouncement
|
|
|
|
from mipac.types.announcement import (
|
|
|
|
|
|
|
|
IAnnouncement,
|
|
|
|
|
|
|
|
IAnnouncementCommon,
|
|
|
|
|
|
|
|
IAnnouncementSystem,
|
|
|
|
|
|
|
|
)
|
|
|
|
from mipac.util import str_to_datetime
|
|
|
|
from mipac.util import str_to_datetime
|
|
|
|
|
|
|
|
|
|
|
|
if TYPE_CHECKING:
|
|
|
|
if TYPE_CHECKING:
|
|
|
|
from mipac.manager.client import ClientManager
|
|
|
|
from mipac.manager.client import ClientManager
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
T = TypeVar('T', bound=IAnnouncementCommon)
|
|
|
|
|
|
|
|
|
|
|
|
class Announcement:
|
|
|
|
|
|
|
|
def __init__(
|
|
|
|
class AnnouncementCommon(Generic[T]):
|
|
|
|
self, announcement: IAnnouncement, *, client: ClientManager
|
|
|
|
def __init__(self, announcement: T, *, client: ClientManager) -> None:
|
|
|
|
) -> None:
|
|
|
|
self.__announcement: T = announcement
|
|
|
|
self.__announcement: IAnnouncement = announcement
|
|
|
|
|
|
|
|
self.__client: ClientManager = client
|
|
|
|
self.__client: ClientManager = client
|
|
|
|
|
|
|
|
|
|
|
|
@property
|
|
|
|
@property
|
|
|
@ -45,6 +49,26 @@ class Announcement:
|
|
|
|
def image_url(self) -> str | None:
|
|
|
|
def image_url(self) -> str | None:
|
|
|
|
return self.__announcement['image_url']
|
|
|
|
return self.__announcement['image_url']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Announcement(AnnouncementCommon):
|
|
|
|
|
|
|
|
def __init__(
|
|
|
|
|
|
|
|
self, announcement: IAnnouncement, *, client: ClientManager
|
|
|
|
|
|
|
|
) -> None:
|
|
|
|
|
|
|
|
super().__init__(announcement, client=client)
|
|
|
|
|
|
|
|
self.__announcement: IAnnouncement
|
|
|
|
|
|
|
|
|
|
|
|
@property
|
|
|
|
@property
|
|
|
|
def is_read(self) -> bool:
|
|
|
|
def is_read(self) -> bool:
|
|
|
|
return self.__announcement['is_read']
|
|
|
|
return self.__announcement['is_read']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AnnouncementSystem(AnnouncementCommon):
|
|
|
|
|
|
|
|
def __init__(
|
|
|
|
|
|
|
|
self, announcement: IAnnouncementSystem, *, client: ClientManager
|
|
|
|
|
|
|
|
) -> None:
|
|
|
|
|
|
|
|
super().__init__(announcement, client=client)
|
|
|
|
|
|
|
|
self.__announcement: IAnnouncementSystem
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@property
|
|
|
|
|
|
|
|
def reads(self) -> int:
|
|
|
|
|
|
|
|
return self.__announcement['reads']
|
|
|
|