Python package

clocking born as a Python package to help to track time through works.

Core module

Core module contains some functions to work with database (sqlite).

clocking.core

Module that contains business logic of clocking command line tool

add_configuration(database, active, user, location, empty_value, daily_hours, working_days, extraordinary, permit_hours, disease, holiday, currency, hour_reward, extraordinary_reward, food_ticket, other_hours, other_reward)

Add new configuration into database

Parameters:

Name Type Description Default
database

database file path

required
active

configuration active boolean

required
user

configuration user owner

required
location

location name

required
empty_value

replacement for empty value

required
daily_hours

daily hours value

required
working_days

working name's days

required
extraordinary

minimum extraordinary value

required
permit_hours

minimum permit value

required
disease

disease string name

required
holiday

holiday string name

required
currency

currency char value

required
hour_reward

total hour reward

required
extraordinary_reward

total extraordinary hour reward

required
food_ticket

food ticket reward

required
other_hours

other hours value

required
other_reward

other hours reward

required

Returns:

Type Description

int

create_configuration_table(database)

Create configuration table

Parameters:

Name Type Description Default
database

database file path

required

Returns:

Type Description

bool

create_working_hours_table(database, user)

Create working hours table

Parameters:

Name Type Description Default
database

database file path

required
user

user

required

Returns:

Type Description

bool

database_exists(database)

Check if database exists

Parameters:

Name Type Description Default
database

database file path

required

Returns:

Type Description

bool

delete_configuration(database, row_id)

Delete specific configuration

Parameters:

Name Type Description Default
database

database file path

required
row_id

row id

required

Returns:

Type Description

bool

delete_database(database)

Delete all data into database

Parameters:

Name Type Description Default
database

database file path

required

Returns:

Type Description

None

delete_user(database, user)

Delete all user data

Parameters:

Name Type Description Default
database
required
user
required

Returns:

Type Description

delete_whole_month(database, user, year, month)

Delete whole month values into database

Parameters:

Name Type Description Default
database

database file path

required
user

user in configuration table

required
year

year of the date

required
month

month of the date

required

Returns:

Type Description

bool

delete_whole_year(database, user, year)

Delete whole year values into database

Parameters:

Name Type Description Default
database

database file path

required
user

user in configuration table

required
year

year of the date

required

Returns:

Type Description

bool

delete_working_hours(database, user, date=None, day=None, month=None, year=None)

Delete working day into database

Parameters:

Name Type Description Default
database

database file path

required
user

user in configuration table

required
date

date for insert values

None
day

day of the date

None
month

month of the date

None
year

year of the date

None

Returns:

Type Description

bool

enable_configuration(database, row_id)

Enable configuration to specific id.

Parameters:

Name Type Description Default
database

database file path

required
row_id

row id

required

Returns:

Type Description

bool

get_all_days(database, user, holiday=False, disease=False, extraordinary=False, permit_hours=False, other_hours=False)

Get all days from database

Parameters:

Name Type Description Default
database

database file path

required
user

user in configuration table

required
holiday

select only holiday values

False
disease

select only disease values

False
extraordinary

select only extraordinary values

False
permit_hours

select only permit hour values

False
other_hours

select only other hour values

False

Returns:

Type Description

Cursor

get_configurations(database, user=None, enabled=False)

Get all configurations for user

Parameters:

Name Type Description Default
database

database file path

required
user

user in configuration table

None
enabled

only enabled user

False

Returns:

Type Description

Cursor

get_current_configuration(database, user)

Get current enabled configuration for user

Parameters:

Name Type Description Default
database

database file path

required
user

user in configuration table

required

Returns:

Type Description

tuple

get_current_version(database)

Get clocking version from database

Parameters:

Name Type Description Default
database

database file path

required

Returns:

Type Description

string

get_whole_month(database, user, year, month, holiday=False, disease=False, extraordinary=False, permit_hours=False, other_hours=False)

Get whole month's working days from database

Parameters:

Name Type Description Default
database

database file path

required
user

user in configuration table

required
year

year of the date

required
month

month of the date

required
holiday

select only holiday values

False
disease

select only disease values

False
extraordinary

select only extraordinary values

False
permit_hours

select only permit hour values

False
other_hours

select only other hour values

False

Returns:

Type Description

Cursor

get_whole_year(database, user, year, holiday=False, disease=False, extraordinary=False, permit_hours=False, other_hours=False)

Get whole year's working days from database

Parameters:

Name Type Description Default
database

database file path

required
user

user in configuration table

required
year

year of the date

required
holiday

select only holiday values

False
disease

select only disease values

False
extraordinary

select only extraordinary values

False
permit_hours

select only permit hour values

False
other_hours

select only other hour values

False

Returns:

Type Description

Cursor

get_working_hours(database, user, date=None, day=None, month=None, year=None, holiday=False, disease=False, extraordinary=False, permit_hours=False, other_hours=False)

Get working day from database

Parameters:

Name Type Description Default
database

database file path

required
user

user in configuration table

required
date

date for insert values

None
day

day of the date

None
month

month of the date

None
year

year of the date

None
holiday

select only holiday values

False
disease

select only disease values

False
extraordinary

select only extraordinary values

False
permit_hours

select only permit hour values

False
other_hours

select only other hour values

False

Returns:

Type Description

Cursor

insert_working_hours(database, user, hours=0, description=None, location=None, extraordinary=0, permit_hours=0, other_hours=0, holiday=None, disease=None, date=None, day=None, month=None, year=None, empty_value=None)

Insert working day into database

Parameters:

Name Type Description Default
database

database file path

required
hours

number of working hours

0
user

user in configuration table

required
description

description of working day

None
location

name of location

None
extraordinary

extraordinary hours

0
permit_hours

permit hours

0
other_hours

other working hours

0
holiday

holiday value

None
disease

disease value

None
date

date for insert values

None
day

day of the date

None
month

month of the date

None
year

year of the date

None
empty_value

empty value if worked hours is 0

None

Returns:

Type Description

bool

make_database(database)

Create a blank database

Parameters:

Name Type Description Default
database

database file path

required

Returns:

Type Description

None

print_configurations(cursor)

Print in stdout the configuration table

Parameters:

Name Type Description Default
cursor

sqlite3 Cursor object

required

Returns:

Type Description

None

print_working_table(cursor, sort=False, csv=False, json=False, html=False, rewards=None)

Print in stdout the working hours table

Parameters:

Name Type Description Default
cursor

sqlite3 Cursor object

required
sort

sort by date_id

False
csv

CSV format

False
json

JSON format

False
html

HTML format

False
rewards

UserConfiguration tuple

None

Returns:

Type Description

None

remove_working_hours(database, user, date=None, day=None, month=None, year=None, empty_value=None)

Remove working day into database

Parameters:

Name Type Description Default
database

database file path

required
user

user in configuration table

required
date

date for insert values

None
day

day of the date

None
month

month of the date

None
year

year of the date

None
empty_value

fill empty value

None

Returns:

Type Description

bool

reset_configuration(database)

Reset configuration table with default values

Parameters:

Name Type Description Default
database

database file path

required

Returns:

Type Description

bool

save_working_table(cursor, file, sort=False, csv=False, json=False, html=False, rewards=None)

Save into file the working hours table

Parameters:

Name Type Description Default
cursor

sqlite3 Cursor object

required
file

file path where to save stdout

required
sort

sort by date_id

False
csv

CSV format

False
json

JSON format

False
html

HTML format

False
rewards

UserConfiguration tuple

None

Returns:

Type Description

None

update_version(database)

Update clocking version into database

Parameters:

Name Type Description Default
database

database file path

required

Returns:

Type Description

bool

Util module

Util module contains some functions to help to work with time and data.

clocking.util

clocking module that contains some utility

build_dateid(date=None, year=None, month=None, day=None, fmt='%Y%m%d')

Build date_id for database

Parameters:

Name Type Description Default
date

datetime object

None
year

number represents the year

None
month

number represents the year

None
day

number represents the year

None
fmt

datetime string format

'%Y%m%d'

Returns:

Type Description

str

datestring_to_datetime(date)

Convert any date-string format to datetime object

Parameters:

Name Type Description Default
date

date in string format

required

Returns:

Type Description

datetime

make_printable_table(cursor)

Create a PrettyTable object from sqlite3 Cursor object

Parameters:

Name Type Description Default
cursor Cursor

sqlite3 Cursor object

required

Returns:

Type Description

DataTable

split_dateid(date_id, fmt='%Y%m%d')

Split date_id to year, month and day

Parameters:

Name Type Description Default
date_id

string date_id object

required
fmt

date_id string format

'%Y%m%d'

Returns:

Type Description

tuple

sum_rewards(data, configuration)

Sum working hours rewards

Parameters:

Name Type Description Default
data

tuple of working hours

required
configuration UserConfiguration

UserConfiguration object

required

Returns:

Type Description

float

clocking.util.UserConfiguration = namedtuple('UserConfiguration', ['rowid', 'active', 'user', 'location', 'empty_value', 'daily_hours', 'working_days', 'extraordinary', 'permit_hours', 'disease', 'holiday', 'currency', 'hour_reward', 'extraordinary_reward', 'food_ticket', 'other_hours', 'other_reward']) module-attribute

clocking.util.DataTable = namedtuple('DataTable', ['data', 'table']) module-attribute

Exception module

Exception module contains Exception classes.

clocking.exception.WorkingDayError

Bases: ValueError

clocking.exception.UserConfigurationError

Bases: ValueError