create active event handling
This commit is contained in:
145
timeTrack.py
145
timeTrack.py
@@ -3,13 +3,14 @@
|
||||
#
|
||||
# timeTrack.py
|
||||
# by 4nima
|
||||
# v.0.2
|
||||
# v.0.3.0
|
||||
#
|
||||
#########################
|
||||
# simple time tracking with database
|
||||
#########################
|
||||
|
||||
import datetime
|
||||
from sqlite3.dbapi2 import Cursor
|
||||
import time
|
||||
import sqlite3
|
||||
import json
|
||||
@@ -197,10 +198,10 @@ class TimeTrack:
|
||||
logging.debug('User database read out successfully')
|
||||
connect.commit()
|
||||
|
||||
row = cursor.fetchall()
|
||||
data = cursor.fetchall()
|
||||
output = []
|
||||
for data in row:
|
||||
output.append(data)
|
||||
for row in data:
|
||||
output.append(row)
|
||||
connect.close()
|
||||
return output
|
||||
|
||||
@@ -213,56 +214,116 @@ class TimeTrack:
|
||||
self.create_user()
|
||||
|
||||
data = self.get_users(UID=self.USERID)
|
||||
try:
|
||||
self.USERNAME = data[0][1]
|
||||
except IndexError:
|
||||
if data == []:
|
||||
logging.error('User ID was not found')
|
||||
else:
|
||||
self.USERNAME = data[0][1]
|
||||
|
||||
def time_start(self):
|
||||
starttime = datetime.datetime.now()
|
||||
time.sleep(10)
|
||||
endtime = datetime.datetime.now()
|
||||
print('Start: {}'.format(starttime))
|
||||
print('Ende: {}'.format(endtime))
|
||||
print('Diff: {}'.format(endtime - starttime))
|
||||
sql = """
|
||||
INSERT INTO time_entries
|
||||
( starttime, endtime, user_id )
|
||||
VALUES ( ?, ?, ?)
|
||||
"""
|
||||
## Time handling
|
||||
### Creates an active event if none exists for the user
|
||||
def set_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)
|
||||
cursor = connect.cursor()
|
||||
cursor.execute(sql, (starttime, endtime, self.USERID))
|
||||
logging.debug(sql)
|
||||
sql = "INSERT INTO active_events ( starttime, user_id ) VALUES ( ?, ? )"
|
||||
|
||||
try:
|
||||
cursor.execute(sql, [TIME, self.USERID])
|
||||
except:
|
||||
logging.error('Event could not be created')
|
||||
logging.debug(sql)
|
||||
print('Event konnte nicht gespeichert werden.')
|
||||
else:
|
||||
logging.info('Event was created successfully')
|
||||
connect.commit()
|
||||
|
||||
connect.close()
|
||||
else:
|
||||
logging.warning('Active events found for the user, new event could not be created')
|
||||
|
||||
### Deletes an active event based on a user or event ID
|
||||
def delete_event(self, ENTRYID='', USERID=''):
|
||||
if not ENTRYID == '':
|
||||
logging.info('Deletes event based on eventid: {}'.format(USERID))
|
||||
sql = "DELETE FROM active_events WHERE id = ?"
|
||||
data = ENTRYID
|
||||
elif not USERID == '':
|
||||
logging.info('Deletes events based on userid: {}'.format(USERID))
|
||||
sql = "DELETE FROM active_events WHERE user_id = ?"
|
||||
data = USERID
|
||||
else:
|
||||
logging.warning('No indication of what should be deleted')
|
||||
print('Keine angabe was gelöscht werden soll')
|
||||
return 0
|
||||
|
||||
connect = sqlite3.connect(self.DATABASE, detect_types=sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES)
|
||||
cursor = connect.cursor()
|
||||
|
||||
try:
|
||||
cursor.execute(sql, [data])
|
||||
except:
|
||||
logging.error('Event could not be deleted')
|
||||
logging.debug(sql)
|
||||
print('Fehler beim löschen des Events.')
|
||||
else:
|
||||
logging.debug('Event was successfully deleted')
|
||||
connect.commit()
|
||||
|
||||
connect.close()
|
||||
|
||||
### Get an active event based on a user or event ID
|
||||
def get_event(self, ENTRYID='', USERID=''):
|
||||
if not ENTRYID == '':
|
||||
logging.debug('Search event based on eventid: {}'.format(ENTRYID))
|
||||
sql = "SELECT * FROM active_events WHERE id = ?"
|
||||
data = ENTRYID
|
||||
elif not USERID == '':
|
||||
logging.debug('Search events based on userid: {}'.format(USERID))
|
||||
sql = "SELECT * FROM active_events WHERE user_id = ?"
|
||||
data = USERID
|
||||
else:
|
||||
sql = "SELECT * FROM active_events"
|
||||
data = ''
|
||||
|
||||
connect = sqlite3.connect(self.DATABASE, detect_types=sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES)
|
||||
cursor = connect.cursor()
|
||||
try:
|
||||
if data:
|
||||
logging.debug('Search event')
|
||||
cursor.execute(sql, [data])
|
||||
else:
|
||||
logging.debug('Get all Events')
|
||||
cursor.execute(sql)
|
||||
except:
|
||||
logging.error('Events could not be read')
|
||||
logging.debug(sql)
|
||||
print('Fehler beim auslesen der aktiven Events')
|
||||
else:
|
||||
logging.debug('Events could be read out successfully')
|
||||
data = cursor.fetchall()
|
||||
connect.close()
|
||||
if data == []:
|
||||
logging.debug('No active events found')
|
||||
return 0
|
||||
else:
|
||||
logging.debug('{} events found'.format(len(data)))
|
||||
return data[0]
|
||||
####################################################################################################
|
||||
####################################################################################################
|
||||
####################################################################################################
|
||||
####################################################################################################
|
||||
def time_start(self):
|
||||
pass
|
||||
|
||||
def time_end(self):
|
||||
pass
|
||||
|
||||
|
||||
def get_time(self):
|
||||
connect = sqlite3.connect(self.DATABASE, detect_types=sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES)
|
||||
cursor = connect.cursor()
|
||||
|
||||
connect.commit()
|
||||
|
||||
sql = """SELECT * FROM time_entries"""
|
||||
cursor.execute(sql)
|
||||
|
||||
row = cursor.fetchall()
|
||||
for i in row:
|
||||
print(i)
|
||||
print('Start: {}'.format(i[1]))
|
||||
print('End: {}'.format(i[2]))
|
||||
print('Diff: {}'.format(i[2] - i[1]))
|
||||
endtime = i[2]
|
||||
|
||||
connect.close()
|
||||
|
||||
pass
|
||||
|
||||
|
||||
test = TimeTrack()
|
||||
test.time_start()
|
||||
test.get_time()
|
||||
#test.delete_event(USERID=1)
|
||||
#test.set_event()
|
||||
test.get_event()
|
||||
Reference in New Issue
Block a user