Exemple #1
0
 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
Exemple #2
0
 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)
Exemple #4
0
 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
Exemple #5
0
 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
Exemple #6
0
 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()