timesheetpy

simple timesheet generator
git clone git://parazyd.org/timesheetpy.git
Log | Files | Refs | README | LICENSE

commit adf8a9ad6bee2dff49228c23698e54b4f1326f2d
parent d55a89902b6c7740f0e375558855d5e0189dee41
Author: parazyd <parazyd@dyne.org>
Date:   Tue, 25 Oct 2016 18:48:06 +0200

add name param, better month total handling

Diffstat:
Mtimesheet | 96++++++++++++++++++++++++++++++++++++++++----------------------------------------
1 file changed, 48 insertions(+), 48 deletions(-)

diff --git a/timesheet b/timesheet @@ -1,5 +1,4 @@ #!/usr/bin/env python2 -# # Copyright (c) 2016 Dyne.org Foundation # timesheetpy is written and maintained by parazyd <parazyd@dyne.org> # @@ -25,6 +24,7 @@ import datetime import sys import xlsxwriter +## TODO: name parameter now = datetime.date.today() @@ -41,6 +41,9 @@ parser.add_argument("-em", "--end-month", parser.add_argument("-ey", "--end-year", help="ending year, ex: 2016", type=int) +parser.add_argument("-n", "--name", + help="name of person, ex: 'John Doe'", + type=str) parser.add_argument("-o", "--output-file", help="output file, ex: timesheet.xlsx", default="timesheet.xlsx", @@ -64,21 +67,21 @@ format_days = workbook.add_format({ 'border': True, 'bg_color': 'eeeeee', 'align': 'right', - 'font_name': 'Ubuntu Mono' + 'font_name': 'Inconsolata' }) format_timegridWhite = workbook.add_format({ 'border': True, 'bg_color': 'ffffff', 'align': 'center', - 'font_name': 'Ubuntu Mono' + 'font_name': 'Inconsolata' }) format_timegridGrey = workbook.add_format({ 'border': True, 'bg_color': 'eeeeee', 'align': 'center', - 'font_name': 'Ubuntu Mono' + 'font_name': 'Inconsolata' }) format_bold = workbook.add_format({ @@ -119,16 +122,23 @@ def putDefaults(mm, yy): worksheet.set_row(2, 30) worksheet.write('A3', 'Name:', format_centerbigger) - worksheet.write('B3', '', format_centerbigger) + if args.name: + worksheet.merge_range('B3:C3', args.name, format_centerbigger) + #worksheet.write('B3', args.name, format_centerbigger) #worksheet.merge_range('E3:F3', 'Total hrs. worked:', format_bold) worksheet.set_row(5, 30) - worksheet.merge_range('B6:G6', 'PROJECT CODING', format_centerbigger) + worksheet.merge_range('B6:G6', 'TIMESHEET', format_centerbigger) for i in range(1,7): ## cells for project codes worksheet.write(6, i, '', format_centerbold) - fieldx = 7 + worksheet.write('A7', 'Project', format_bold) + worksheet.write('A8', 'W.P.', format_bold) + worksheet.write('A9', 'Tag', format_bold) + + ## space from above + fieldx = 10 fieldy = 0 for day in calendar(mm, yy): if fieldx % 2 == 0: @@ -146,56 +156,46 @@ def putDefaults(mm, yy): fieldx += 1 ## Bottom: Signature, Date, Free text space - worksheet.set_row(39, 30) - worksheet.write('A40', 'Signature:', format_vcenterbold) - - worksheet.set_row(40, 30) - worksheet.write('A41', 'Date:', format_vcenterbold) - worksheet.write('B41', now.isoformat(), format_vcenterbold) + worksheet.set_row(43, 30) + worksheet.write('A44', 'Signature:', format_vcenterbold) - worksheet.set_row(41, 30) - worksheet.write('A42', 'Free text space:', format_vcenterbold) + #worksheet.set_row(43, 30) + #worksheet.write('A44', 'Date:', format_vcenterbold) + #worksheet.write('B44', now.isoformat(), format_vcenterbold) + worksheet.set_row(45, 30) + worksheet.write('A46', 'Free text space:', format_vcenterbold) ## calculations - worksheet.write('H7', 'Total', format_centerbold) + worksheet.write('H10', 'Total', format_centerbold) - ## month of 30 days + writetotals() + +def writetotals(): + uno = str(0) + tre = str(0) + due = str(11) if total == 30: - worksheet.write('B38', '=SUM(B8:B37)', format_centerbold) - worksheet.write('C38', '=SUM(C8:C37)', format_centerbold) - worksheet.write('D38', '=SUM(D8:D37)', format_centerbold) - worksheet.write('E38', '=SUM(E8:E37)', format_centerbold) - worksheet.write('F38', '=SUM(F8:F37)', format_centerbold) - worksheet.write('G38', '=SUM(G8:G37)', format_centerbold) - worksheet.write('H38', '=SUM(H8:H37)', format_timegridGrey) - ## month of 31 days + uno = str(41) + tre = str(40) + elif total == 31: - worksheet.write('B39', '=SUM(B8:B38)', format_centerbold) - worksheet.write('C39', '=SUM(C8:C38)', format_centerbold) - worksheet.write('D39', '=SUM(D8:D38)', format_centerbold) - worksheet.write('E39', '=SUM(E8:E38)', format_centerbold) - worksheet.write('F39', '=SUM(F8:F38)', format_centerbold) - worksheet.write('G39', '=SUM(G8:G38)', format_centerbold) - worksheet.write('H39', '=SUM(H8:H38)', format_timegridGrey) - ## month of 28 days + uno = str(42) + tre = str(41) + elif total == 28: - worksheet.write('B36', '=SUM(B8:B35)', format_centerbold) - worksheet.write('C36', '=SUM(C8:C35)', format_centerbold) - worksheet.write('D36', '=SUM(D8:D35)', format_centerbold) - worksheet.write('E36', '=SUM(E8:E35)', format_centerbold) - worksheet.write('F36', '=SUM(F8:F35)', format_centerbold) - worksheet.write('G36', '=SUM(G8:G35)', format_centerbold) - worksheet.write('H36', '=SUM(H8:H35)', format_timegridGrey) - ## month of 29 days + uno = str(39) + tre = str(38) + elif total == 29: - worksheet.write('B37', '=SUM(B8:B36)', format_centerbold) - worksheet.write('C36', '=SUM(C8:C35)', format_centerbold) - worksheet.write('D36', '=SUM(D8:D35)', format_centerbold) - worksheet.write('E36', '=SUM(E8:E35)', format_centerbold) - worksheet.write('F36', '=SUM(F8:F35)', format_centerbold) - worksheet.write('G36', '=SUM(G8:G35)', format_centerbold) - worksheet.write('H36', '=SUM(H8:H35)', format_timegridGrey) + uno = str(40) + tre = str(39) + + fmt = format_centerbold + for col in range(66,73): + if col == 72: + fmt = format_timegridGrey + worksheet.write(chr(col)+uno, '=SUM('+chr(col)+due+':'+chr(col)+tre+')', fmt) def calendar(mm, yy): month = monthrange(yy, mm)