Mercurial > getan
view test_data/getan_test_data.py @ 536:a59622c06936
Fix generating reports if no week given
unix_week() cannot handle week being None but does so for year. It just
assumes the current year in this case, although this only duplicates the
initialisation of year with c_year in this context. week being None gives
TypeError: unsupported operand type(s) for -: 'NoneType' and 'int'
load_entries() handles the case with no week given, thus call it anyhow.
This fix makes it possible to invoke scripts/getan-report with a year given
but no week and seeing the expected result (data for a whole year) instead
of a traceback.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 09 Jan 2020 11:32:34 +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()