from datetime import datetime
from typing import TYPE_CHECKING
from ..abc import BaseObject
from ..codingamer import PartialCodinGamer
from ..utils import to_datetime
if TYPE_CHECKING:
from ..state import ConnectionState
from .clash_of_code import ClashOfCode
[docs]class Solution(BaseObject):
clash_of_code: "ClashOfCode"
codingamer: PartialCodinGamer
submission_id: int
commentable_id: int
votable_id: int
creation_time: datetime
language_id: str
code: str
shared: bool
__slots__ = (
"clash_of_code",
"codingamer",
"codingamer",
"submission_id",
"commentable_id",
"votable_id",
"creation_time",
"language_id",
"code",
"shared",
)
def __init__(
self, state: "ConnectionState", clash_of_code: "ClashOfCode", data: dict
):
self.clash_of_code = clash_of_code
self.codingamer = PartialCodinGamer(
state,
dict(
publicHandle=data["codingamerHandle"],
userId=data["codingamerId"],
pseudo=data.get("pseudo"),
avatar=data.get("avatar"),
cover=data.get("cover"),
),
)
self.submission_id = data.get("testSessionQuestionSubmissionId")
self.commentable_id = data.get("commentableId")
self.votable_id = data.get("votableId")
self.creation_time = to_datetime(data.get("creationTime"))
self.language_id = data.get("programmingLanguageId")
self.code = data.get("code")
self.shared = data.get("shared")
super().__init__(state)
def share(self):
if self._state.is_async:
async def _share():
await self._state.http.share_clash_of_code_solution(
self._state.codingamer.id, self.clash_of_code.public_handle
)
self._setattr("shared", True)
else:
def _share():
self._state.http.share_clash_of_code_solution(
self._state.codingamer.id, self.clash_of_code.public_handle
)
self._setattr("shared", True)
return _share()