Files
web/api/task/schemas.py
T

100 lines
1.8 KiB
Python

from datetime import datetime
from typing import Optional
from ninja import Schema, ModelSchema
from .models import Tutorial, Challenge
class TutorialSlim(Schema):
display: int
title: str
is_public: bool
class TutorialAll(ModelSchema):
class Meta:
model = Tutorial
fields = "__all__"
class TutorialIn(Schema):
display: int
title: str
content: str
is_public: bool = False
example_html: Optional[str] = None
example_css: Optional[str] = None
example_js: Optional[str] = None
class ChallengeSlim(Schema):
display: int
title: str
score: int
pass_score: Optional[float] = None
is_public: bool
author_name: Optional[str] = None
class ChallengeDisplay(ChallengeSlim):
submitted: bool
class ChallengeAll(ModelSchema):
author_name: Optional[str] = None
class Meta:
model = Challenge
fields = "__all__"
class ChallengeIn(Schema):
display: int
title: str
content: str
score: int = 0
is_public: bool = False
example_html: Optional[str] = None
example_css: Optional[str] = None
example_js: Optional[str] = None
class CreationSlim(Schema):
display: int
title: str
content: str
created: datetime
modified: datetime
has_code: bool
@staticmethod
def resolve_has_code(obj):
return bool(obj.html or obj.css or obj.js)
class CreationOut(Schema):
task_id: int
display: int
title: str
content: str
html: str
css: str
js: str
owner_name: str
created: datetime
modified: datetime
@staticmethod
def resolve_task_id(obj):
return obj.pk
class CreationIn(Schema):
title: str
content: str = ""
class CreationCodeIn(Schema):
html: str = ""
css: str = ""
js: str = ""