Example #1
0
def calc_all(for_date):
    issues_secs, issues_log = calc_total(search_issues(for_date))
    additional_work_sec, additional_work_log = calc_log_in_secs(year=for_date.year, month=for_date.month, types=['work'])

    national_holidays, national_holidays_log = calc_national_holidays(for_date.month)
    national_holidays_sec = days_to_sec(national_holidays)

    payed_holidays_sec, payed_holidays_log = calc_log_in_secs(year=for_date.year, month=for_date.month, types=['vacation', 'ill'])
    payed_holidays_sec += national_holidays_sec

    work_days = calc_work_days(for_date)
    work_days_sec = days_to_sec(work_days)

    unpayed_holidays_sec, unpayed_holidays_log = calc_log_in_secs(year=for_date.year, month=for_date.month, except_types=['work', 'vacation', 'ill'])

    presence = calc_presence(for_date)

    efficiency = calc_efficiency(
        issues_secs,
        work_days_sec - payed_holidays_sec,
    )

    total = calc_total_sec(issues_secs, additional_work_sec, national_holidays_sec + payed_holidays_sec, efficiency)

    return Report(
        efficiency=efficiency,
        issues_secs=issues_secs,
        national_holidays_sec=national_holidays_sec,
        payed_holidays_sec=payed_holidays_sec,
        unpayed_holidays_sec=unpayed_holidays_sec,
        additional_work_sec=additional_work_sec,
        presence=presence,
        total_issues_time=total,
        # logs
        issues_log=issues_log,
        payed_holidays_log=payed_holidays_log,
        unpayed_holidays_log=unpayed_holidays_log,
        national_holidays_log=national_holidays_log,
        additional_work_log=additional_work_log,
    )
Example #2
0
def calc_presence(for_date):
    work_days = calc_work_days(for_date)
    work_days_sec = work_days * settings.HOURS_IN_DAY * 60 * 60

    unpayed_holidays_sec, log = calc_log_in_secs(year=for_date.year, month=for_date.month, except_types=['work', 'vacation', 'ill'])
    return (work_days_sec - unpayed_holidays_sec) / (1.0 * work_days_sec)