Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions backend/coreapp/platforms.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,9 @@
COMMON_MSDOS_DIFF_FLAGS,
Flags,
)
from coreapp.models.preset import Preset
from coreapp.models.scratch import Scratch
from rest_framework.exceptions import APIException

from coreapp.serializers import TersePresetSerializer

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -47,7 +45,6 @@ def get_num_scratches(self) -> int:
def to_json(
self,
include_compilers: bool = False,
include_presets: bool = False,
include_num_scratches: bool = False,
) -> Dict[str, Any]:
ret: Dict[str, Any] = {
Expand All @@ -63,11 +60,6 @@ def to_json(
for x in compilers.available_compilers()
if x.platform.id == self.id
]
if include_presets:
ret["presets"] = [
TersePresetSerializer(p).data
for p in Preset.objects.filter(platform=self.id).order_by("name")
]
if include_num_scratches:
ret["num_scratches"] = self.get_num_scratches()
return ret
Expand Down
16 changes: 0 additions & 16 deletions backend/coreapp/tests/test_preset.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,22 +77,6 @@ def test_user_create_preset(self) -> None:
assert preset.owner is not None
assert preset.owner.pk == self.user.pk

def test_list_compiler_with_custom_presets(self) -> None:
user = self.create_user()
self.create_preset(DUMMY_PRESET_DICT)
response = self.client.get(reverse("compiler"))
body = response.json()

assert "platforms" in body
assert "dummy" in body["platforms"]
assert "presets" in body["platforms"]["dummy"]
assert len(body["platforms"]["dummy"]["presets"]) == 1
assert (
body["platforms"]["dummy"]["presets"][0]["name"]
== DUMMY_PRESET_DICT["name"]
)
assert body["platforms"]["dummy"]["presets"][0]["owner"]["id"] == user.pk

def test_owner_can_delete_preset(self) -> None:
self.create_user()
preset = self.create_preset(DUMMY_PRESET_DICT)
Expand Down
2 changes: 0 additions & 2 deletions backend/coreapp/views/compiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,14 +74,12 @@ def compilers_json() -> Dict[str, Dict[str, object]]:

@staticmethod
def platforms_json(
include_presets: bool = True,
include_num_scratches: bool = False,
) -> Dict[str, Dict[str, object]]:
ret: Dict[str, Dict[str, object]] = {}

for platform in compilers.available_platforms():
ret[platform.id] = platform.to_json(
include_presets=include_presets,
include_num_scratches=include_num_scratches,
)

Expand Down
7 changes: 1 addition & 6 deletions backend/coreapp/views/platform.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,7 @@ def head(self, request: Request) -> Response:

@condition(last_modified_func=endpoint_updated)
def get(self, request: Request) -> Response:
return Response(
CompilerDetail.platforms_json(
include_presets=False, include_num_scratches=False
)
)
return Response(CompilerDetail.platforms_json(include_num_scratches=False))


@api_view(["GET"])
Expand All @@ -52,7 +48,6 @@ def single_platform(request: Request, id: str) -> Response:
return Response(
platform.to_json(
include_compilers=True,
include_presets=True,
include_num_scratches=True,
)
)
Expand Down
13 changes: 7 additions & 6 deletions frontend/src/app/(navfooter)/new/NewScratchForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import { get } from "@/lib/api/request";
import type { TerseScratch } from "@/lib/api/types";
import { SingleLineScratchItem } from "@/components/ScratchItem";
import { useDebounce } from "use-debounce";
import { usePlatform } from "@/lib/api";
import { useCompilers, usePresets } from "@/lib/api";

interface FormLabelProps {
children: React.ReactNode;
Expand Down Expand Up @@ -171,16 +171,17 @@ export default function NewScratchForm({
}, []);

// 2. Fetch compilers and presets for selected platform
const platformDetails = usePlatform(platform);
const compilers = useCompilers(platform);
const presets = usePresets(platform);
useEffect(() => {
if (platformDetails) {
setAvailableCompilers(platformDetails.compilers);
setAvailablePresets(platformDetails.presets);
if (compilers && typeof presets !== "undefined") {
setAvailableCompilers(Object.keys(compilers));
setAvailablePresets(presets);
} else {
setAvailableCompilers([]);
setAvailablePresets(undefined);
}
}, [platformDetails]);
}, [compilers, presets]);

// 3. Select compiler based on local storage
useEffect(() => {
Expand Down
1 change: 0 additions & 1 deletion frontend/src/lib/api/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,6 @@ export interface PlatformMetadata extends PlatformBase {

export interface Platform extends PlatformBase {
compilers: string[];
presets: Preset[];
}

export interface ScratchResult {
Expand Down