def add_test(self, quiz_id): conn, cur = self._connect_db() users = [i[0] for i in self.um.get_list_of_users()] for user in users: cur.execute("INSERT INTO progress VALUES (?, ?, ?, ?, ?, ?)", (id_generator(10), user, quiz_id, 0, 0, '')) conn.commit() return cur.lastrowid is not None
def create_user(self, user_id): conn, cur = self._connect_db() tdb = TestDatabase() available_tests = tdb.get_available_tests() for test in available_tests: cur.execute("INSERT INTO progress VALUES (?, ?, ?, ?, ?, ?)", (id_generator(10), user_id, test[0], 0, 0, '')) conn.commit() return cur.lastrowid is not None
def test_get_list_of_users(self): users = [id_generator() for i in range(10)] for name in users: try: self.um.create_user(name) except DuplicateUsernameException: users.remove(name) rows_users: List[sqlite3.Row] = self.um.get_list_of_users() received_users = [row[1] for row in rows_users] self.assertTrue(set(users) - set(received_users) == set()) for name in users: self.um.delete_user(name)
def create_user(self, name): conn, cur = self._connect_db() if self.get_user_id(name): raise DuplicateUsernameException(name) else: user_id = id_generator(10) cur.execute("INSERT INTO users VALUES (?, ?, ?, ?)", (user_id, name, hash_password(''), '')) conn.commit() pd = ProgressDatabase(self) pd.create_user(user_id) return user_id
def _create_individual_progress_db(self, quiz_id): td = TestDatabase() question_tags = td.load_quesqion_tags(quiz_id) id = id_generator() dbname = f'databases/{id}.db' conn = sqlite3.connect(dbname) cur = conn.cursor() cur.execute("CREATE TABLE individual_progress (question_id TEXT, weight TEXT, seen_times INTEGER, last_seen TEXT, learned INTEGER)") conn.commit() for tag in question_tags: cur.execute("INSERT INTO individual_progress VALUES (?, ?, ?, ?, ?)", (tag, self.get_max_and_init_weights(quiz_id)[1], 0, '', 0)) conn.commit() return id, dbname
def load_to_db(self, questions: list, name = '', description = '', replace = False): _id = id_generator(10) if name: existing_id = self._quiz_exists(name) test_name = name if existing_id: _id = existing_id else: test_name = _id filename = f'databases/{_id}.db' if self.save_to_db_file(filename, questions, replace): test_description = description if description else '' conn = sqlite3.connect(self._db_file) cur = conn.cursor() max_weight = len(questions) init_weight = (max_weight + 1)/2 cur.execute("INSERT INTO quizzes VALUES (?, ?, ?, ?, ?, ?)", (_id, _id+'.db', test_name, test_description, max_weight, init_weight)) conn.commit() return _id
def setUpClass(cls): cls.um = UserManager() cls.username = id_generator() cls.password = id_generator()