From d1563a651f4a1d37dfff6cd3b14595f864890786 Mon Sep 17 00:00:00 2001
From: anima
Date: Thu, 3 Jun 2021 22:49:28 +0200
Subject: [PATCH] create time_start function and clear_screan function.
---
timeTrack.py | 92 ++++++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 78 insertions(+), 14 deletions(-)
diff --git a/timeTrack.py b/timeTrack.py
index 0198bd8..f37369e 100644
--- a/timeTrack.py
+++ b/timeTrack.py
@@ -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()
\ No newline at end of file
+#test.save_event()
+#test.get_event()
+test.time_start()
\ No newline at end of file