Files
timetrack/timeTrack.py
2021-05-09 22:12:16 +02:00

183 lines
5.3 KiB
Python

#!/bin/python3
#########################
#
# timeTrack.py
# by 4nima
# v.0.1
#
#########################
# simple time tracking with database
#########################
import datetime
import sqlite3
import json
import os
import logging
class TimeTrack:
def __init__(self, DATABASE='timetrack.db', CONFIG='timetrack.conf'):
self.DATABASE = DATABASE
self.CONFIG = CONFIG
self.USER = 0
self.LOGFILE = 'timetrack.log'
logging.basicConfig(filename=self.LOGFILE,
level=logging.DEBUG,
format='%(asctime)s - %(process)d-%(levelname)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
self.load_config()
self.db_setup()
## Läd oder erstellt das config file
def load_config(self):
if os.path.isfile(self.CONFIG):
logging.info('Config file found')
try:
with open(self.CONFIG) as config_data:
data = json.load(config_data)
except ValueError:
logging.error('Config file has no valid JSON syntax')
print('TimeTrack wird beendet. Fehler in der JSON-Konfig')
quit()
else:
logging.info('Config file loaded successfully')
self.USER = data['user']
else:
logging.info('Config file not found')
##> ausgabe nicht in einer zeile
config = {
'user' : 1,
'default' : 'interactive'
}
##> logging erweitert falls nicht möglich
with open(self.CONFIG, "w") as outfile:
json.dump(config, outfile)
logging.info('config file successfully created')
def db_setup(self):
sql = []
sql.append("""
CREATE TABLE IF NOT EXISTS time_entries (
id INTEGER PRIMARY KEY AUTOINCREMENT,
starttime DATETIME NOT NULL,
endtime DATETIME NOT NULL,
user_id INTEGER NOT NULL,
activity TEXT,
catrgory_id INTEGER,
client_id INTEGER,
lock BOOLEAN
)
""")
sql.append("""
CREATE TABLE IF NOT EXISTS active_events (
id INTEGER PRIMARY KEY AUTOINCREMENT,
starttime DATETIME NOT NULL,
user_id INT NOT NULL
)
""")
sql.append("""
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
worktime INT,
worktime_span INT
)
""")
sql.append("""
CREATE TABLE IF NOT EXISTS clients (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
)
""")
sql.append("""
CREATE TABLE IF NOT EXISTS categories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
)
""")
self.db_connect(sql)
def db_connect(self, SQL, DATA=''):
if os.path.isfile(self.DATABASE):
logging.info('DB gefunden')
else:
logging.info('Keine DB gefunden, neue wird angelegt')
connect = sqlite3.connect(self.DATABASE)
cursor = connect.cursor()
##> vorgang optimieren...
##> prüfung if DATA list
##> prüfung if init SQL list
for sql in SQL:
try:
if isinstance(sql, list):
logging.debug('SQL is list')
if DATA == '':
logging.info('Many execute without data')
cursor.executemany(sql)
else:
logging.info('Many execute with data')
cursor.executemany(sql, DATA)
else:
logging.debug('SQL is not list ')
if DATA == '':
logging.info('single execute without data')
cursor.execute(sql)
else:
logging.info('single execute with data')
cursor.execute(sql, DATA)
except:
logging.error('Fehler beim schreiben in DB')
logging.debug(sql)
else:
logging.info('Erfolgreich in DB geschrieben')
logging.debug(sql)
connect.commit()
pass
connect.close()
def create_user(self):
data = []
sql = []
data.append(input('Enter your Name: '))
sql.append("""
INSERT INTO users (
name
) values (
?
)
""")
self.db_connect(sql, data)
pass
##> verbugt noch nicht funktional
def get_users(self, UID=0):
data = []
data.append(input('User ID: '))
if UID == 0:
sql = [
"""
SELET id, name FROM users
"""
]
else:
sql = [
"""
SELET id, name FROM users WHERE id=?
"""
]
self.db_connect(sql)
def set_user(self):
pass
test = TimeTrack()
test.get_users()