def test_create_ticket_possible_actions_status_new_and_limit_ok(): ticket = { 'owner': 'nobody', 'status': 'new', } email = '*****@*****.**' config = DITICConfigMock() config.email_limits = { 'new': 7, 'open': 1, 'rejected': 7, } number_tickets_per_status = { 'new': 7, 'open': 0, } create_ticket_possible_actions(config, ticket, email, number_tickets_per_status) assert ticket['kanban_actions'] == { 'increase_priority': True, 'decrease_priority': True, 'back': True, 'interrupted': False, 'stalled': False, 'forward': True, }
def user_get_resolved_tickets(rt_object, email): config = DITICConfig() # Check if user is known... if not config.check_if_email_exist(email): raise ValueError("Unknown email/user:"******"%s" AND Queue = "general" AND Status = "resolved"' % (email) # Get the information from the server. try: response = get_list_of_tickets(rt_object, query) except NameError as e: raise ValueError("Error: " + str(e)) number_tickets_per_status = {email: len(response)} for line in response: try: auxiliary_date = strptime(line["lastupdated"]) auxiliary_date = "%02d/%02d" % (auxiliary_date.tm_mon, auxiliary_date.tm_mday) except ValueError: auxiliary_date = 0 line["auxiliary_date"] = auxiliary_date create_ticket_possible_actions(config, line, email, number_tickets_per_status) result = group_result_by(response, "auxiliary_date") email_limit = config.get_email_limits(email) return {"tickets": result}
def user_closed_tickets(rt_object, email): """ Get the closed tickets on the last X days. (X = 60) :param rt_object: RTApi object :param email: the user email (it must exist in the config) :return: """ config = DITICConfig() # Check if user is known... if not config.check_if_email_exist(email): raise ValueError('Unknown email/user:'******'Owner = "%s" AND Queue = "general" AND Status = "resolved" AND LastUpdated > "%s"' % ( email, previous_date) # Get the information from the server. try: response = get_list_of_tickets(rt_object, query) except NameError as e: raise ValueError('Error: ' + str(e)) number_tickets_per_status = {email: len(response)} for line in response: try: auxiliary_date = strptime(line['lastupdated']) auxiliary_date = '%02d/%02d' % (auxiliary_date.tm_mon, auxiliary_date.tm_mday) except ValueError: auxiliary_date = 0 line['auxiliary_date'] = auxiliary_date create_ticket_possible_actions(config, line, email, number_tickets_per_status) result = group_result_by(response, 'auxiliary_date') email_limit = config.get_email_limits(email) return { 'tickets': result, 'number_tickets_per_status': number_tickets_per_status, 'email_limit': email_limit, }
def user_closed_tickets(rt_object, email): """ Get the closed tickets on the last X days. (X = 60) :param rt_object: RTApi object :param email: the user email (it must exist in the config) :return: """ config = DITICConfig() # Check if user is known... if not config.check_if_email_exist(email): raise ValueError('Unknown email/user:'******'Owner = "%s" AND Queue = "general" AND Status = "resolved" AND LastUpdated > "%s"' % (email, previous_date) # Get the information from the server. try: response = get_list_of_tickets(rt_object, query) except NameError as e: raise ValueError('Error: '+str(e)) number_tickets_per_status = {email: len(response)} for line in response: try: auxiliary_date = strptime(line['lastupdated']) auxiliary_date = '%02d/%02d' % (auxiliary_date.tm_mon, auxiliary_date.tm_mday) except ValueError: auxiliary_date = 0 line['auxiliary_date'] = auxiliary_date create_ticket_possible_actions(config, line, email, number_tickets_per_status) result = group_result_by(response, 'auxiliary_date') email_limit = config.get_email_limits(email) return { 'tickets': result, 'number_tickets_per_status': number_tickets_per_status, 'email_limit': email_limit, }
def test_create_ticket_possible_actions_email_unknown(): ticket = { 'owner': '*****@*****.**', 'status': 'new', } email = 'unknown' config = DITICConfigMock() number_tickets_per_status = { 'new': 7, 'open': 1, } create_ticket_possible_actions(config, ticket, email, number_tickets_per_status) assert ticket['kanban_actions'] == { 'increase_priority': False, 'decrease_priority': False, 'back': False, 'interrupted': False, 'stalled': False, 'forward': False, }
def test_create_ticket_possible_actions_dir(): ticket = { 'owner': 'nobody', 'status': 'new', } email = 'dir' config = DITICConfigMock() number_tickets_per_status = { 'new': 7, 'open': 1, } create_ticket_possible_actions(config, ticket, email, number_tickets_per_status) assert ticket['kanban_actions'] == { 'increase_priority': True, 'decrease_priority': True, 'back': False, 'interrupted': False, 'stalled': False, 'forward': True, }
def user_tickets_details(rt_object, email): query = 'Owner = "' + email + '" AND Queue = "general" ' config = DITICConfig() # If the user is dir, then build the search if email == 'dir': query = 'Queue = "general" AND "CF.{IS - Informatica e Sistemas}" = "DIR" AND Owner = "Nobody" AND ' \ 'Status != "deleted" ' # If the user is dir-inbox, then search for it elif email == 'dir-inbox': query = 'Queue = "general" AND "CF.{IS - Informatica e Sistemas}" = "DIR-INBOX" AND Owner = "Nobody" AND ' \ 'Status != "deleted" ' # If the user is unknown, then search all users but those that we already know elif email == 'unknown': query = 'Queue = "general" AND "CF.{IS - Informatica e Sistemas}" LIKE "DIR%" AND ' \ 'Status != "deleted" ' for user in config.get_email_to_user().keys(): query += 'AND Owner != "' + user + '" ' query += 'AND Owner != "Nobody"' # Otherwise, check if user is not known... elif not config.check_if_email_exist(email): raise ValueError('Unknown email/user:'******' AND Status != "deleted" ' # Get the information from the server. try: response = get_list_of_tickets(rt_object, query) except ValueError as e: response = [] if email == 'dir' or email == 'dir-inbox' or email == 'unknown': number_tickets_per_status = {email: len(response)} result = group_result_by(response, 'priority') for priority in result: for line in result[priority]: create_ticket_possible_actions(config, line, email, number_tickets_per_status) else: # Get some statistics response_grouped_by_status = group_result_by(response, 'status') number_tickets_per_status = {} for status in response_grouped_by_status: number_tickets_per_status[status] = len( response_grouped_by_status[status]) result = {} for status in response_grouped_by_status: grouped_by_priority = group_result_by( response_grouped_by_status[status], 'priority') result[status] = grouped_by_priority for priority in grouped_by_priority: for line in grouped_by_priority[priority]: create_ticket_possible_actions(config, line, email, number_tickets_per_status) # The user limits... email_limit = config.get_email_limits(email) return { 'tickets': result, 'number_tickets_per_status': number_tickets_per_status, 'email_limit': email_limit, }
def user_tickets_details(rt_object, email): query = 'Owner = "'+email+'" AND Queue = "general" ' config = DITICConfig() # If the user is dir, then build the search if email == 'dir': query = 'Queue = "general" AND "CF.{IS - Informatica e Sistemas}" = "DIR" AND Owner = "Nobody" AND ' \ 'Status != "deleted" ' # If the user is dir-inbox, then search for it elif email == 'dir-inbox': query = 'Queue = "general" AND "CF.{IS - Informatica e Sistemas}" = "DIR-INBOX" AND Owner = "Nobody" AND ' \ 'Status != "deleted" ' # If the user is unknown, then search all users but those that we already know elif email == 'unknown': query = 'Queue = "general" AND "CF.{IS - Informatica e Sistemas}" LIKE "DIR%" AND ' \ 'Status != "deleted" ' for user in config.get_email_to_user().keys(): query += 'AND Owner != "'+user+'" ' query += 'AND Owner != "Nobody"' # Otherwise, check if user is not known... elif not config.check_if_email_exist(email): raise ValueError('Unknown email/user:'******' AND Status != "deleted" ' # Get the information from the server. try: response = get_list_of_tickets(rt_object, query) except ValueError as e: response = [] if email == 'dir' or email == 'dir-inbox' or email == 'unknown': number_tickets_per_status = {email: len(response)} result = group_result_by(response, 'priority') for priority in result: for line in result[priority]: create_ticket_possible_actions(config, line, email, number_tickets_per_status) else: # Get some statistics response_grouped_by_status = group_result_by(response, 'status') number_tickets_per_status = {} for status in response_grouped_by_status: number_tickets_per_status[status] = len(response_grouped_by_status[status]) result = {} for status in response_grouped_by_status: grouped_by_priority = group_result_by(response_grouped_by_status[status], 'priority') result[status] = grouped_by_priority for priority in grouped_by_priority: for line in grouped_by_priority[priority]: create_ticket_possible_actions(config, line, email, number_tickets_per_status) # The user limits... email_limit = config.get_email_limits(email) return { 'tickets': result, 'number_tickets_per_status': number_tickets_per_status, 'email_limit': email_limit, }