create time_start function and clear_screan function.

This commit is contained in:
2021-06-03 22:49:28 +02:00
parent 972115ffeb
commit d1563a651f

View File

@@ -3,15 +3,13 @@
#
# timeTrack.py
# by 4nima
# v.0.3.0
# v.0.4.0
#
#########################
# simple time tracking with database
#########################
import datetime
from sqlite3.dbapi2 import Cursor
import time
import sqlite3
import json
import os
@@ -24,6 +22,7 @@ class TimeTrack:
self.CONFIG = CONFIG
self.USERID = 0
self.USERNAME = ''
self.OLDEVENT = 2
self.LOGFILE = 'timetrack.log'
logging.basicConfig(
filename=self.LOGFILE,
@@ -35,6 +34,15 @@ class TimeTrack:
self.load_config()
## Prepartation
### Check OS and clear screen
def clear_screen(self):
if os.name == 'posix':
logging.debug('Unix/Linux system detected')
_ = os.system('clear')
else:
logging.debug('Winwos System detected')
_ = os.system('cls')
### Creates a database if none is found
def db_setup(self):
if os.path.isfile(self.DATABASE):
@@ -118,14 +126,16 @@ class TimeTrack:
else:
logging.info('Config file was loaded successfully')
self.USERID = data['user']
self.OLDEVENT = data['oldevent']
logging.debug('UserID {} was used'.format(data['user']))
self.set_user()
else:
logging.warning('Config file not found')
config = {
'default' : 'interactive',
'user' : 1,
'default' : 'interactive'
'oldevent' : 2
}
with open(self.CONFIG, "w") as outfile:
json.dump(config, outfile, indent=4, sort_keys=True)
@@ -221,7 +231,7 @@ class TimeTrack:
## Time handling
### Creates an active event if none exists for the user
def set_event(self, TIME=datetime.datetime.now()):
def save_event(self, TIME=datetime.datetime.now()):
if not self.get_event(USERID=self.USERID):
logging.debug('No active events found for the user: {}'.format(self.USERID))
connect = sqlite3.connect(self.DATABASE)
@@ -234,13 +244,16 @@ class TimeTrack:
logging.error('Event could not be created')
logging.debug(sql)
print('Event konnte nicht gespeichert werden.')
return False
else:
logging.info('Event was created successfully')
connect.commit()
connect.close()
return True
else:
logging.warning('Active events found for the user, new event could not be created')
return False
### Deletes an active event based on a user or event ID
def delete_event(self, ENTRYID='', USERID=''):
@@ -309,14 +322,64 @@ class TimeTrack:
else:
logging.debug('{} events found'.format(len(data)))
return data[0]
####################################################################################################
####################################################################################################
####################################################################################################
####################################################################################################
def time_start(self):
pass
def time_end(self):
def time_start(self, AUTOFORWARD=True):
self.clear_screen()
starttime = datetime.datetime.now()
logging.info('New Event process started at {}'.format(starttime))
if self.save_event(starttime):
print('Neues Event gestartet um {}'.format(starttime.strftime("%H:%M")))
else:
data = self.get_event(USERID=self.USERID)
print('Es existiert bereits ein aktives Event.')
if (data[1] + datetime.timedelta(hours=self.OLDEVENT)) <= datetime.datetime.now():
logging.info('Event exceeds allowed duration')
print('Zeiteintrag ist zu alt laut den Einstellungen (älter {} Stunden)'.format(self.OLDEVENT))
if datetime.date.today() == data[1].date():
print('Start um: {}'.format(data[1].strftime("%H:%M")))
else:
print('Start am: {}'.format(data[1].strftime("%d.%m.%Y um %H:%M")))
elapsed = datetime.datetime.now() - data[1]
if elapsed.days:
logging.debug('Event older than 1 day ({} days)'.format(elapsed.days))
print('Vergangene Zeit: >{} Tage'.format(elapsed.days))
else:
logging.debug('Event younger than 1 day')
print('Vergangene Zeit: >{} Stunden'.format(int(elapsed.seconds/3600)))
userinput = ''
while True:
if userinput == "A" or userinput == "a" or userinput == "1" \
or userinput == "F" or userinput == "f" or userinput == "2" \
or userinput == "L" or userinput == "l" or userinput == "3":
break
print('Soll das Event fortgesetzt oder gelöscht werden?')
print('[1/F/f] für fortsetzen')
print('[2/L/l] für löschen')
print('[3/A/a] für abbrechen')
userinput = input('Antwort: ')
logging.debug('User input: {}'.format(userinput))
self.clear_screen()
if userinput == "F" or userinput == "f" or userinput == "1":
logging.debug('Event should be continued')
self.time_stop()
elif userinput == "L" or userinput == "l" or userinput == "2":
logging.info('Event should be deleted (eventid: {})'.format(data[0]))
self.delete_event(data[0])
self.time_start()
else:
logging.debug('Terminated by the user')
exit()
else:
logging.debug('Event continues (eventid{})'.format(data[0]))
print('Event von {} Uhr geladen'.format(data[1].strftime("%H:%M")))
self.time_stop()
def time_stop(self):
pass
def get_time(self):
@@ -325,5 +388,6 @@ class TimeTrack:
test = TimeTrack()
#test.delete_event(USERID=1)
#test.set_event()
test.get_event()
#test.save_event()
#test.get_event()
test.time_start()