def print_assigned_tickets_report(assigned_priority_classification=None): now = datetime.now() if assigned_priority_classification is None: assigned_priority_classification = {} for i in priorities: assigned_priority_classification[i] = [] for t in get_tickets(emi_third_level_assigned_tickets()): assigned_priority_classification[ticket_priority(t)].append(t) for p in priorities: if len(assigned_priority_classification[p]) == 0: continue else: print p, ":" num_violations = 0 for t in assigned_priority_classification[p]: ggus_ticket = get_ggus_ticket(ticket_id(t)) assigned_time = ggus_ticket.get_sla_compliance_values()[ticket_su(t)].assigned_time bc = BusinessCalendar(assigned_time) resolution_date = bc.add_business_time(sla_constraints[p]) if resolution_date >= now: sla_violation_string = "SLA check: OK (Assigned on: %s. To be taken in charge before %s)" % (assigned_time, resolution_date) else: if now.day != resolution_date.day: bd_delay = BusinessCalendar(resolution_date).count_business_days(now) delay = "%s work days" % bd_delay else: delay = "%s hours" % (now - resolution_date) sla_violation_string = "SLA VIOLATION: Delay: %s (Assigned on: %s. Had to be taken in charge before %s)" % (delay, assigned_time, resolution_date) num_violations = num_violations + 1 print "\t(%s) \"%s\" https://ggus.eu/tech/ticket_show.php?ticket=%s\n\t%s" % (ticket_su(t), ticket_short_description(t), ticket_id(t), sla_violation_string) print print "Of the %d %s tickets, %d violate the SLA " % (len(assigned_priority_classification[p]), p, num_violations) print
def __expected_takeover_time(self, assigned_time): priority_when_assigned = self.__priority_at_time(assigned_time) bc = BusinessCalendar(assigned_time) return bc.add_business_time(SLA_CONSTRAINTS[priority_when_assigned])