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'
#{self.id}{self.title}{time_label}
{correct_percentage}% відповідей правильні
{response_options}
Згенерувати відповідіРедагуватиВидалити
' class QuestionPool: def __init__(self, db): self.object_pool = ObjectPool("question", Question) if db: self.object_pool.load_from_db(db) def iter(self): return iter(self.object_pool.pool) def select_by_test_id(self, test_id): return [i for i in self.object_pool.pool if i.get_test_id() == int(test_id)]