mschieder@442: #!/usr/bin/env python3 bernhard@453: bernhard@453: # Program to create test data for getan (getan_test_data.db). mschieder@450: mschieder@450: """ mschieder@450: Author: Magnus Schieder mschieder@450: (c) 2018 Intevation GmbH mschieder@450: mschieder@450: Please delete existing getan_test_data.db. mschieder@450: Execute getan_test_data.py to get the test database getan_test_data.db. mschieder@450: Open getan with getan_test_data.db: getan /path/getan_test_data.db mschieder@450: mschieder@450: This is Free Software licensed under the terms of GPLv3 or later. mschieder@450: For details see LICENSE coming with the source of 'getan'. mschieder@450: """ mschieder@442: mschieder@442: mschieder@442: import sqlite3 mschieder@442: mschieder@442: mschieder@442: def main(): mschieder@442: mschieder@442: conn = sqlite3.connect("getan_test_data.db") mschieder@442: mschieder@442: db = conn.cursor() mschieder@442: mschieder@442: # create getan schema. mschieder@442: db.execute('''CREATE TABLE projects ( mschieder@442: id INTEGER PRIMARY KEY AUTOINCREMENT, mschieder@442: key VARCHAR(16) NOT NULL CONSTRAINT unique_key UNIQUE, mschieder@442: description VARCHAR(256), mschieder@442: active BOOLEAN DEFAULT 1) mschieder@442: ''') mschieder@442: mschieder@442: db.execute('''CREATE TABLE entries ( mschieder@442: id INTEGER PRIMARY KEY AUTOINCREMENT, mschieder@442: project_id INTEGER REFERENCES projects(id), mschieder@442: start_time TIMESTAMP NOT NULL, mschieder@442: stop_time TIMESTAMP NOT NULL, mschieder@442: description VARCHAR(256), mschieder@442: mschieder@442: CHECK (strftime('%s', start_time) <= strftime('%s', stop_time))) mschieder@442: ''') mschieder@442: mschieder@442: # List of projects. mschieder@442: # (key, 'description') mschieder@442: pro = [ mschieder@442: (1, 'pro1'), mschieder@442: (2, 'pro2'), mschieder@442: (3, 'pro3'), mschieder@442: ] mschieder@442: mschieder@442: # List of entries with test data. mschieder@442: # (project_id, 'start_time', 'stop_time', 'description') mschieder@442: ent = [ mschieder@442: (2, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent9'), mschieder@442: (2, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent8'), mschieder@442: (2, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent7'), mschieder@442: (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent6'), mschieder@442: (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent5'), mschieder@442: (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent4'), mschieder@442: (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent3'), mschieder@442: (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent2'), mschieder@442: (1, '2018-01-01 01:01:01.0', '2018-01-01 02:01:01.0', 'ent1'), mschieder@442: ] mschieder@442: mschieder@442: db.executemany("INSERT INTO projects(key, description) VALUES (?,?)", pro) mschieder@442: mschieder@442: db.executemany('''INSERT INTO entries(project_id, start_time, stop_time, mschieder@442: description) VALUES (?,?,?,?)''', ent) mschieder@442: mschieder@442: conn.commit() mschieder@442: conn.close() mschieder@450: print("getan_test_data.db was created.") mschieder@442: mschieder@442: if __name__ == '__main__': mschieder@442: main()