-
Notifications
You must be signed in to change notification settings - Fork 6
Enclose moose #563
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Enclose moose #563
Changes from all commits
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
2ae0e8b
added support for enclose.moose: created router, schemas and db_model…
MikaeldeVerdier c261153
minor improvement to default release_date
MikaeldeVerdier 33d496f
tests (yay) for enclose_moose_router
MikaeldeVerdier 7a98ec8
Added ENCLOSE_MOOSE_TOKEN to test workflow env
MikaeldeVerdier 6435c64
minor improvement to bfs
MikaeldeVerdier f23d8a6
added get_all_submissions and admin_get_all_submissions routes; updat…
MikaeldeVerdier e142618
Separated LevelRead into InitialRead and UnlockedRead (before and aft…
MikaeldeVerdier ce37c07
removed initial and unlocked schemas and instead made spoiler fields …
MikaeldeVerdier 2502eb2
added a separate flag for show_spoilers, otherwise admins couldn't se…
MikaeldeVerdier 554e32f
fixed show_spoilers after submission
MikaeldeVerdier a0d6ed7
changed level_id to an autoincrementing integer
MikaeldeVerdier 24d0bd3
Merge remote-tracking branch 'origin/main' into enclose_moose
MikaeldeVerdier 35d7d10
added a seperate title for swedish/english
MikaeldeVerdier 2cd8739
Merge remote-tracking branch 'origin/main' into enclose_moose
MikaeldeVerdier 728dc49
Fix copy-paste error in tests, add foreignkey to player_id in submiss…
georgelgeback c29b179
Move leading newline check and fix broken local tests
georgelgeback cbf8db3
fixed requested changes
MikaeldeVerdier 16f5e2a
Fix server error when sending None values for encoded grid or wall bu…
georgelgeback File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,55 @@ | ||
| from pydantic import Field, model_validator | ||
| from datetime import datetime, date | ||
| from zoneinfo import ZoneInfo | ||
| from api_schemas.base_schema import BaseSchema | ||
| from api_schemas.enclose_moose_submission_schema import EncloseMooseSubmissionRead | ||
|
|
||
|
|
||
| class EncloseMooseLevelRead(BaseSchema): | ||
| level_id: int | ||
| release_date: date | ||
| day_index: int | None | ||
| name_sv: str | ||
| name_en: str | ||
|
|
||
| encoded_grid: str | ||
| wall_budget: int | ||
|
|
||
| show_spoilers: bool = Field(default=False, exclude=True) | ||
|
|
||
| optimal_score: int | None = None | ||
| optimal_solution: set[int] | None = None | ||
| optimal_is_unique: bool | None = None | ||
|
|
||
| player_submission: EncloseMooseSubmissionRead | None = None | ||
| score_distribution: dict[int, int] | None = None | ||
|
|
||
| @model_validator(mode="after") | ||
| def redact_spoilers(self): | ||
| if not self.show_spoilers: | ||
| self.optimal_score = None | ||
| self.optimal_solution = None | ||
| self.optimal_is_unique = None | ||
| self.score_distribution = None | ||
|
|
||
| return self | ||
|
|
||
|
|
||
| class EncloseMooseLevelCreate(BaseSchema): | ||
| release_date: date = Field(default_factory=lambda: datetime.now(ZoneInfo("Europe/Stockholm")).date()) | ||
| day_index: int | None = None | ||
| name_sv: str | ||
| name_en: str | ||
|
|
||
| encoded_grid: str | ||
| wall_budget: int | ||
|
|
||
|
|
||
| class EncloseMooseLevelUpdate(BaseSchema): | ||
| release_date: date | None = None | ||
| day_index: int | None = None | ||
| name_sv: str | None = None | ||
| name_en: str | None = None | ||
|
|
||
| encoded_grid: str | None = None | ||
| wall_budget: int | None = None | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| from api_schemas.base_schema import BaseSchema | ||
| from helpers.types import datetime | ||
|
|
||
|
|
||
| class EncloseMooseSubmissionRead(BaseSchema): | ||
| level_id: int | ||
| submission_time: datetime | ||
|
|
||
| player_id: int | ||
| player_score: int | ||
| player_solution: set[int] | ||
|
|
||
|
|
||
| class EncloseMooseSubmissionCreate(BaseSchema): | ||
| player_solution: set[int] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,38 @@ | ||
| from datetime import date | ||
| from helpers.constants import MAX_ENCLOSE_LEVEL_NAME, MAX_ENCLOSE_GRID | ||
| from .base_model import BaseModel_DB | ||
| from sqlalchemy.orm import relationship, mapped_column, Mapped | ||
| from typing import TYPE_CHECKING, Optional | ||
| from sqlalchemy import String, Date, JSON | ||
|
|
||
| if TYPE_CHECKING: | ||
| from db_models.enclose_moose_submission_model import EncloseMooseSubmission_DB | ||
|
|
||
|
|
||
| class EncloseMooseLevel_DB(BaseModel_DB): | ||
| __tablename__ = "enclose_moose_level_table" | ||
|
|
||
| level_id: Mapped[int] = mapped_column(primary_key=True, init=False) | ||
| release_date: Mapped[Optional[date]] = mapped_column(Date) | ||
| day_index: Mapped[Optional[int]] = mapped_column() | ||
| name_sv: Mapped[str] = mapped_column(String(MAX_ENCLOSE_LEVEL_NAME)) | ||
| name_en: Mapped[str] = mapped_column(String(MAX_ENCLOSE_LEVEL_NAME)) | ||
|
|
||
| encoded_grid: Mapped[str] = mapped_column(String(MAX_ENCLOSE_GRID)) | ||
| wall_budget: Mapped[int] = mapped_column() | ||
|
|
||
| optimal_score: Mapped[int] = mapped_column() | ||
| optimal_solution: Mapped[list[int]] = mapped_column(JSON) | ||
| optimal_is_unique: Mapped[Optional[bool]] = mapped_column() | ||
|
|
||
| submissions: Mapped[list["EncloseMooseSubmission_DB"]] = relationship( | ||
| back_populates="level", cascade="all, delete-orphan", init=False | ||
| ) | ||
|
|
||
| @property | ||
| def score_distribution(self): | ||
| score_distribution: dict[int, int] = {} | ||
| for submission in self.submissions: | ||
| score_distribution[submission.player_score] = score_distribution.get(submission.player_score, 0) + 1 | ||
|
|
||
| return score_distribution |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| from .base_model import BaseModel_DB | ||
| from sqlalchemy.orm import relationship, mapped_column, Mapped | ||
| from sqlalchemy import ForeignKey, JSON | ||
| from typing import TYPE_CHECKING | ||
| from helpers.types import datetime_utc | ||
|
|
||
| if TYPE_CHECKING: | ||
| from db_models.enclose_moose_level_model import EncloseMooseLevel_DB | ||
|
|
||
|
|
||
| class EncloseMooseSubmission_DB(BaseModel_DB): | ||
| __tablename__ = "enclose_moose_submission_table" | ||
|
|
||
| level_id: Mapped[int] = mapped_column( | ||
| ForeignKey("enclose_moose_level_table.level_id", ondelete="CASCADE"), | ||
| primary_key=True, | ||
| ) | ||
| submission_time: Mapped[datetime_utc] = mapped_column() | ||
|
|
||
| player_id: Mapped[int] = mapped_column( | ||
| ForeignKey("user_table.id", ondelete="CASCADE"), | ||
| primary_key=True, | ||
| ) | ||
| player_score: Mapped[int] = mapped_column() | ||
| player_solution: Mapped[list[int]] = mapped_column(JSON) | ||
|
|
||
| level: Mapped["EncloseMooseLevel_DB"] = relationship(back_populates="submissions", init=False, viewonly=True) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.