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, )
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)