from db.object_pool import ObjectPool
from db.response_option import ResponseOptionPool
class Question:
def init(self, sID, title, max_time, test_id):
self.id = sID
self.title = title
self.max_time = max_time
self.test_id = test_id
return self
def init_from_data(self, data):
return self.init(*data)
def get_id(self):
return self.id
def get_title(self):
return self.title
def get_max_time(self):
return self.max_time
def get_test_id(self):
return self.test_id
def get_time_label(self):
if int(self.max_time) == 0:
return "Час на відповідь не обмежений"
total_time = self.max_time
hours = total_time // 3600
total_time -= hours * 3600
minutes = total_time // 60
total_time -= minutes * 60
seconds = total_time
total_label = []
if hours:
total_label.append(f"{hours} год.")
if minutes:
total_label.append(f"{minutes} хв.")
if seconds:
total_label.append(f"{seconds} c.")
return "На відповідь є " + " ".join(total_label)
def get_response_option_short_list(self, cur):
rop = ResponseOptionPool(cur)
return "
".join([i.render_short() for i in rop.select_by_question_id(self.id)])
def get_correct_response_percentage(self, cur):
rop = ResponseOptionPool(cur)
response_options = rop.select_by_question_id(self.id)
return sum([int(i.get_correctness()) for i in response_options]) / len(response_options) * 100
def render_short(self, cur):
time_label = self.get_time_label()
response_options = self.get_response_option_short_list(cur)
correct_percentage = round(self.get_correct_response_percentage(cur))
return f'