azubi-timesheet 0.9.1
Keep track of your work hours. Add, delete, update records. Export and print at the end of the month!
License: MIT
Keywords: azubi timesheet python track hours

# SUSE Apprentices Timesheets made easy

## Installation
+ If you just want to start right away:
  `pip install azubi-timesheet`
+ Development mode:
  1. `git clone https://github.com/eliroca/azubi-timesheet.git; cd azubi-timesheet`
  2. `pip install -e .`

## Contributions are welcome
   + [ ] Subcommand `export` should accept date without day, like this `-d 10.2019`
   + [ ] Possibility to add more days with one command for vacation, etc.
   + [ ] Raise exceptions in `timesheet.py` and catch them in main, instead of exiting the program
   + [ ] Reformat code with black: https://pypi.org/project/black
   + [ ] Implement working hours carryover(Stundenübertrag)
   + Update: early implementation does the job, but it can't extract the value from previous month unless:
      you exported the previous month already AND opened the previous xlsx file AND Ctrl+S to save it,
      so that the calculated values of all formulas are saved. Not quite ideal.
   + [x] Better separate the main script (azubi-timesheet.py) from a module (timesheet.py)
   + [x] Adding "special" days like: vacation, school; only date and comment needed for that
   + [x] Method to fill in records from json file to xlsx exported file
   + [x] Method to create file names like `timesheet_2019_10.json` `timesheet_2019_10.xlsx` and implement where needed
   + [x] Method to load specific json files of the given date's month and year

## How it looks like
### Main help message
```
azubi-timesheet --help
usage: azubi-timesheet [-V] [-n] <SUBCOMMAND> ...

Keep track of your work hours. Add, delete, update records. Export and print
at the end of the month!

global arguments:
  -V, --version         show program's version number and exit
  -n, --non-interactive
                        do not ask anything, use default answers automatically

available subcommands:
  <SUBCOMMAND>
    add                 add a new record
    update              update an existing record
    delete              delete an existing record
    export              export records as .xlsx file
    config              configure the app with key=value pairs

Type <SUBCOMMAND> --help for more info.
```

### Subcommand help message
```
azubi-timesheet add --help
usage: azubi-timesheet add [-d DD.MM.YYYY] [-w HH:MM-HH:MM] [-b HH:MM-HH:MM]
                           [-c COMMENT] [-s]

Add a new record.

optional arguments:
  -d DD.MM.YYYY, --date DD.MM.YYYY
                        date of the record
  -w HH:MM-HH:MM, --work-hours HH:MM-HH:MM
                        begin and end time of the work day
  -b HH:MM-HH:MM, --break-time HH:MM-HH:MM
                        begin and end time of the break
  -c COMMENT, --comment COMMENT
                        comment of the record, if needed
  -s, --special-record  special records only need a date and a comment
```

### Subcommands
+ `add` creates a new json string and appends it to the list
```
azubi-timesheet.py add --date 07.10.2019 --work-hours 09:00-17:30 --break-time 12:00-12:30
```
+ `add -s` adds special records like school, vacation, sick leave, where `--work-hours` or `--break_time` are **not** necessary
```
azubi-timesheet.py --non-interactive add --date 09.10.2019 --comment "Berufsschule" --special-record
```
+ `update` finds record, updates it with the given data
```
azubi-timesheet.py update --date 07.10.2019 --work-hours 10:00-18:30 --break-time 13:00-13:30
```
+ `delete` removes record with given date
```
azubi-timesheet.py delete --date 07.10.2019
```
+ `export` creates an `xlsx` document from the given date's **month** and **year**; day is not relevant but unfortunately still necessary
```
azubi-timesheet.py export --date 01.12.2019
```
+ `config` lets you enter your name, choose where to save your records and exported documents
```
azubi-timesheet.py config --set "name=Elisei Roca"
```
```
azubi-timesheet.py config --list
[DEFAULT]
name =
records_dir = /home/eroca/.local/lib/python3.6/site-packages/azubi_timesheet-0.9.0-py3.6.egg/azubi_timesheet/data/records
exports_dir = /home/eroca/.local/lib/python3.6/site-packages/azubi_timesheet-0.9.0-py3.6.egg/azubi_timesheet/data/exports
[user_defined]
name = Elisei Roca
exports_dir = /home/eroca/Documents/SUSE_Timesheets
records_dir =
```