def process_pack(pack, workdir): global data with common.extract_and_connect(pack, workdir): contest_start = Database.get_meta("start_time", type=int) tasks = common.get_tasks() Database.c.execute(""" SELECT submissions.date AS date, inputs.date AS input_date FROM submissions JOIN inputs ON submissions.input = inputs.id ORDER BY date ASC """) submissions = Database.dictify(all=True) add_dates(data["submissions"], submissions, contest_start) for sub in submissions: delta = sub["date"] - sub["input_date"] if delta not in data["delta"]: data["delta"][delta] = 0 data["delta"][delta] += 1 Database.c.execute(""" SELECT inputs.date AS date FROM inputs ORDER BY date ASC """) inputs = Database.dictify(all=True) add_dates(data["inputs"], inputs, contest_start) for task in tasks: Database.c.execute( """ SELECT submissions.date AS date FROM submissions WHERE task = :task ORDER BY date ASC """, {"task": task}) submissions = Database.dictify(all=True) if task not in data["tasks"]: data["tasks"][task] = dict() add_dates(data["tasks"][task], submissions, contest_start)
def test_dictify(self): Database.connected = False Database.connect_to_database() Database.set_meta('random_key', 'random_value') Database.c.execute("SELECT * FROM metadata WHERE key = 'random_key'") dct = Database.dictify(all=False) self.assertDictEqual({'key': 'random_key', 'value': 'random_value'}, dct)
def test_dictify(self): Database.connected = False Database.connect_to_database() Database.set_meta("random_key", "random_value") Database.c.execute("SELECT * FROM metadata WHERE key = 'random_key'") dct = Database.dictify(all=False) self.assertDictEqual({ "key": "random_key", "value": "random_value" }, dct)
def test_dictify_all(self): Database.connected = False Database.connect_to_database() Database.c.execute("DELETE FROM metadata") Database.c.execute( "INSERT INTO metadata (key, value) VALUES ('foo1', 'bar')") Database.c.execute( "INSERT INTO metadata (key, value) VALUES ('foo2', 'bar')") Database.c.execute("SELECT * FROM metadata") lst = Database.dictify(all=True) self.assertIsInstance(lst, list) self.assertEqual(2, len(lst))