blob: 3f045ce55bdc0011b3058df742a488e08257ced1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
from json import dumps
class FormModel:
def __init__(self, identifier):
self.__identifier = identifier
self.__block = []
@property
def identifier(self):
return self.__identifier
@property
def block(self):
return self.__block
def to_json(self):
return dumps({question.identifier: question.answer.value.get_json_value() for question in self.block})
def find_question_of_widget(self, widget):
for question in self.block:
if question.widget == widget:
return question
def update_questions_on_change(self, changed_widget):
changed_question = self.find_question_of_widget(changed_widget)
if changed_question:
new_value = changed_question.widget.get_value(changed_question.answer_type)
changed_question.answer = changed_question.answer_type.get_literal_node(new_value)
for question in self.block:
result = question.evaluate_visibility_condition(self)
if result:
question.widget.show()
question.widget_label.show()
else:
question.widget.hide()
question.widget_label.hide()
if question.computed:
answer_result = str(question.evaluate_answer(self))
question.widget.setText(answer_result)
|