Beispiel #1
0
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)
Beispiel #2
0
    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)
Beispiel #3
0
    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)
Beispiel #4
0
    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))