view test_data/getan_test_data.py @ 568:e7b36e596751 tip

Last week's year is not necessarily today's year
author Tom Gottfried <tom@intevation.de>
date Mon, 03 Jan 2022 11:37:31 +0100
parents 199b3e3657aa
children
line wrap: on
line source
#!/usr/bin/env python3
""" Create test data for getan (getan_test_data.db).

Please delete existing getan_test_data.db.
Execute getan_test_data.py to get the test database getan_test_data.db.
Open getan with getan_test_data.db: getan /path/getan_test_data.db

(c) 2018 Intevation GmbH
Author: Magnus Schieder <magnus.schieder@intevation.de>

This is Free Software licensed under the terms of GPLv3 or later.
For details see LICENSE coming with the source of 'getan'.
"""
import sqlite3


def main():

    conn = sqlite3.connect("getan_test_data.db")

    db = conn.cursor()

    # create getan schema.
    db.execute('''CREATE TABLE projects (
            id          INTEGER PRIMARY KEY AUTOINCREMENT,
            key         VARCHAR(16) NOT NULL CONSTRAINT unique_key UNIQUE,
            description VARCHAR(256),
            active      BOOLEAN DEFAULT 1)
            ''')

    db.execute('''CREATE TABLE entries (
            id          INTEGER PRIMARY KEY AUTOINCREMENT,
            project_id  INTEGER REFERENCES projects(id),
            start_time  TIMESTAMP NOT NULL,
            stop_time   TIMESTAMP NOT NULL,
            description VARCHAR(256),

            CHECK (strftime('%s', start_time) <= strftime('%s', stop_time)))
            ''')

    db.execute('''CREATE TABLE recover (
            id          INTEGER PRIMARY KEY,
            project_id  INTEGER REFERENCES projects(id),
            start_time  TIMESTAMP NOT NULL,
            stop_time   TIMESTAMP NOT NULL,
            description VARCHAR(256),

            CHECK (strftime('%s', start_time) <= strftime('%s', stop_time)))
            ''')

    # List of projects.
    # (key, 'description')
    pro = [
        (1, 'pro1'),
        (2, 'pro2'),
        (3, 'pro3'),
        ]

    # List of entries with test data.
    # (project_id, 'start_time', 'stop_time', 'description')
    ent = [
        (2, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent9'),
        (2, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent8'),
        (2, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent7'),
        (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent6'),
        (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent5'),
        (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent4'),
        (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent3'),
        (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent2'),
        (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent1'),
        ]

    db.executemany("INSERT INTO projects(key, description) VALUES (?,?)", pro)

    db.executemany('''INSERT INTO entries(project_id, start_time, stop_time,
                    description) VALUES (?,?,?,?)''', ent)

    conn.commit()
    conn.close()
    print("getan_test_data.db was created.")


if __name__ == '__main__':
    main()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)