summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWayne-Cole <77279425+Wacky404@users.noreply.github.com>2025-01-12 21:38:01 -0600
committerWayne-Cole <77279425+Wacky404@users.noreply.github.com>2025-01-12 21:38:01 -0600
commit905af1a7b845206408119c4545b0a44e3ca43bb2 (patch)
tree33bc369e5df826f8ed25890cded3224bc230793f
parentf515c567586822ee1927fba3549d75ca8c76b3fe (diff)
downloadworklogger-905af1a7b845206408119c4545b0a44e3ca43bb2.tar.xz
worklogger-905af1a7b845206408119c4545b0a44e3ca43bb2.zip
feat: merge function implemented
-rw-r--r--src/args_worklogger.py11
-rw-r--r--src/funcs_worklogger.py46
-rwxr-xr-xsrc/worklog4
3 files changed, 35 insertions, 26 deletions
diff --git a/src/args_worklogger.py b/src/args_worklogger.py
index 77ac0a2..c2bf923 100644
--- a/src/args_worklogger.py
+++ b/src/args_worklogger.py
@@ -47,11 +47,17 @@ parser.add_argument(
help='Turn on a verbose program when run',
)
+parser.add_argument(
+ '--version',
+ action='version',
+ version='%(prog)s 1.0'
+)
+
parser.add_argument(
'job',
action='store',
- help='(required) Add a job for the work done, to be logged with your insertion',
+ help='(required)Add a job for the work done, to be logged with your insertion, merged, or emailed',
)
parser.add_argument(
@@ -109,8 +115,7 @@ parser_merge.add_argument(
'extension',
action='store',
choices=['csv', 'text', 'json'],
- default='csv',
- help='(required) Output file type, as a result of merge'
+ help='(Required)Output file type, as a result of merge. Default is csv'
)
parser_merge.add_argument(
diff --git a/src/funcs_worklogger.py b/src/funcs_worklogger.py
index 4388ad4..8ffabfa 100644
--- a/src/funcs_worklogger.py
+++ b/src/funcs_worklogger.py
@@ -15,7 +15,7 @@ import csv
import os
-TIME_FORMAT = "%Y-%m-%dT%H:%M:%S%z"
+TIME_FORMAT = "%Y-%m-%dT%H:%M:%S%Z"
def _prep_write(format, s_log, p_settings, _dt, k_args):
@@ -23,31 +23,31 @@ def _prep_write(format, s_log, p_settings, _dt, k_args):
if format == '.txt' or format == None:
for key, val in k_args.items():
if key == 'job' and val is not None:
- s_log += f"{key}:'{val}'"
+ s_log += f"{key}:{val},"
elif key == 'time' and val is not None:
- s_log += f"{key}:{val}hrs "
+ s_log += f"{key}:{val}hrs,"
elif key == 'message' and val is not None:
- s_log += f"{'desc'}:'{val}' "
+ s_log += f"{'desc'}:'{val}',"
elif key == 'proj' and val is not None and p_settings is not None:
job_projects = p_settings[str(k_args['job']).upper()]
if str(val).upper() in job_projects.keys():
- s_log += f"{key}:{job_projects[str(val).upper()]} "
+ s_log += f"{key}:{job_projects[str(val).upper()]},"
logger.debug(
f"Job: {k_args['job']}; Projects: {job_projects}")
else:
- s_log += f"{key}:{val} "
+ s_log += f"{key}:{val},"
logger.debug(
f"Couldn't get specified projects for {k_args['job']} in config.")
elif key == 'start' and val == 'now':
- s_log += f"{key}:{dt.strftime("'%H:%M'")} "
+ s_log += f"{key}:{dt.strftime("'%H:%M'")},"
elif key == 'start' and val is not None:
- s_log += f"{key}:'{val}' "
+ s_log += f"{key}:'{val}',"
elif key == 'end' and val == 'now':
- s_log += f"{key}:{dt.strftime("'%H:%M'")} "
+ s_log += f"{key}:{dt.strftime("'%H:%M'")},"
elif key == 'end' and val is not None:
- s_log += f"{key}:'{val}' "
+ s_log += f"{key}:'{val}',"
elif val is not None:
- s_log += f"{key}:{val} "
+ s_log += f"{key}:{val},"
return s_log, None, None
@@ -151,11 +151,11 @@ def parse(filepath):
csv_log = ''
for key, val in row.items():
if key == 'timestamp':
- csv_log += f"{val} "
+ csv_log += f"{val},"
elif key == 'job':
- csv_log += f"{key}:'{val}' "
+ csv_log += f"{key}:{val},"
elif val:
- csv_log += f"{key}:{val} "
+ csv_log += f"{key}:{val},"
lines.append(csv_log)
@@ -166,8 +166,8 @@ def parse(filepath):
def add_log(file_format=None, proj_settings=None, savepath=None, backuppath=None, **kwargs):
- dt = datetime.datetime.now(timezone.utc)
- log_str = f"{dt.strftime(TIME_FORMAT)} "
+ dt = datetime.now(timezone.utc)
+ log_str = f"{dt.strftime(TIME_FORMAT)},"
job_upper = str(kwargs['job']).upper()
if file_format != None:
@@ -179,7 +179,7 @@ def add_log(file_format=None, proj_settings=None, savepath=None, backuppath=None
flag_start = False
flag_end = False
if len(parsed_file) > 1:
- last_entry = str(parsed_file[-1]).split(' ')
+ last_entry = str(parsed_file[-1]).split(',')
for param in last_entry:
param_split = param.split(':')
var, val = param_split[0], param_split[1] if len(
@@ -201,10 +201,10 @@ def add_log(file_format=None, proj_settings=None, savepath=None, backuppath=None
if file_format == '.txt':
if insert_time.lower() == 'now':
fd.write(
- f"{log_str}job:{kwargs['job']} end:{dt.strftime("'%H:%M'")}\n")
+ f"{log_str}job:{kwargs['job']},end:{dt.strftime("'%H:%M'")}\n")
else:
fd.write(
- f"{log_str}job:{kwargs['job']} end:{insert_time}\n")
+ f"{log_str}job:{kwargs['job']},end:{insert_time}\n")
elif file_format == '.csv':
csv_writer = csv.DictWriter(
fd, fieldnames=['timestamp'] + [x if x != 'message' else 'desc' for x in kwargs.keys()])
@@ -247,7 +247,8 @@ def combine_log(target_job, specified_ext, target_extension=None, savepath=None,
buffer[index] = [index, line]
for content in buffer:
- _entry = content[1].split(' ')
+ # putting dt stamp in list
+ _entry = content[1].split(',')
buffer[content[0]].append(_entry[0])
try:
@@ -258,11 +259,12 @@ def combine_log(target_job, specified_ext, target_extension=None, savepath=None,
f"Details: {str(e)}")
return None
- csv_logs = []
if specified_ext == '.csv':
+ csv_logs = []
for log in buffer:
+ # buffer contains index, log line, dt stamp
_log = {}
- split_log = log[1].split(' ')
+ split_log = log[1].split(',')
for index, param in enumerate(split_log):
if index == 0:
_log['timestamp'] = param
diff --git a/src/worklog b/src/worklog
index c43cca1..848f418 100755
--- a/src/worklog
+++ b/src/worklog
@@ -31,6 +31,8 @@ formats: dict = {
# creates a NameSpace of arguments that were made
args = parser.parse_args()
+print(type(args))
+pprint(args)
numeric_loglevel = getattr(logging, str(args.log).upper())
if isinstance(numeric_loglevel, int):
@@ -81,7 +83,7 @@ else:
BACKUPPATH = Path(osp.join(osp.expanduser("~"), "Documents", "worklogger"))
-if args.extension is not None:
+if 'extension' in vars(args).keys():
combine_log(target_job=args.job, specified_ext=formats[str(args.extension).upper(
)], delete=args.delete, savepath=SAVEPATH, backuppath=BACKUPPATH)
sys.exit()