Skip to content

Commit 49dcd3c

Browse files
committed
added attributes for modifable visiblity for finalanswers , wokred solution and structured tutorials
1 parent c172a9f commit 49dcd3c

File tree

3 files changed

+45
-3
lines changed

3 files changed

+45
-3
lines changed

.metals/metals.lock.db

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#FileLock
2-
#Thu Jul 31 14:30:19 BST 2025
2+
#Mon Aug 04 15:03:28 BST 2025
33
hostName=localhost
44
id=19860ab936622402fe2f44aa1920af12cbe404b7acd
55
method=file

in2lambda/api/set.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import panflute as pf
77

88
from in2lambda.api.question import Question
9+
from in2lambda.api.visibility_status import VisibilityController, VisibilityStatus
910

1011

1112
@dataclass
@@ -14,6 +15,9 @@ class Set:
1415

1516
_name: str = field(default="set")
1617
_description: str = field(default="")
18+
_finalAnswerVisibility: VisibilityController = field(default_factory=lambda: VisibilityController(VisibilityStatus.OPEN_WITH_WARNINGS))
19+
_workedSolutionVisibility: VisibilityController = field(default_factory=lambda: VisibilityController(VisibilityStatus.OPEN_WITH_WARNINGS))
20+
_structuredTutorialVisibility: VisibilityController = field(default_factory=lambda: VisibilityController(VisibilityStatus.OPEN))
1721

1822
questions: list[Question] = field(default_factory=list)
1923
_current_question_index = -1
@@ -58,8 +62,8 @@ def add_question(
5862
>>> import panflute as pf
5963
>>> s = Set()
6064
>>> s.add_question("Some title", pf.Para(pf.Str("hello"), pf.Space, pf.Str("there")))
61-
>>> s
62-
Set(_name='set', _description='', questions=[Question(title='Some title', parts=[], images=[], main_text='hello there')])
65+
>>> s.questions
66+
[Question(title='Some title', parts=[], images=[], main_text='hello there')]
6367
>>> s.add_question(main_text="Normal string text")
6468
>>> s.questions[1].main_text
6569
'Normal string text'

in2lambda/api/visibility_status.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
from enum import Enum
2+
3+
class VisibilityStatus(Enum):
4+
"""Enum representing the visibility status of a question or set."""
5+
OPEN = "OPEN"
6+
HIDE = "HIDE"
7+
OPEN_WITH_WARNINGS = "OPEN_WITH_WARNINGS"
8+
9+
def __str__(self):
10+
return self.value
11+
12+
class VisibilityController:
13+
"""Controller for managing visibility status with easy-to-use methods."""
14+
15+
def __init__(self, initial_status: VisibilityStatus = VisibilityStatus.OPEN):
16+
self._status = initial_status
17+
18+
@property
19+
def status(self) -> VisibilityStatus:
20+
return self._status
21+
22+
def to_open(self):
23+
"""Change status to OPEN."""
24+
self._status = VisibilityStatus.OPEN
25+
return self
26+
27+
def to_hide(self):
28+
"""Change status to HIDE."""
29+
self._status = VisibilityStatus.HIDE
30+
return self
31+
32+
def to_open_with_warnings(self):
33+
"""Change status to OPEN_WITH_WARNINGS."""
34+
self._status = VisibilityStatus.OPEN_WITH_WARNINGS
35+
return self
36+
37+
def __str__(self):
38+
return str(self._status)

0 commit comments

Comments
 (0)