def get_ticketoshow(ticket_id): from ditic_kanban.rt_api import get_ticketdetail from ditic_kanban.rt_api import get_ticket_links from ditic_kanban.rt_api import get_tickethistory result = create_default_result() if request.query.o == "" or not user_auth.check_id(request.query.o): result.update({"message": ""}) return template("auth", result) ticket = get_ticketdetail( user_auth.get_rt_object_from_email(user_auth.get_email_from_id(request.query.o)), ticket_id ) links = get_ticket_links( user_auth.get_rt_object_from_email(user_auth.get_email_from_id(request.query.o)), ticket_id ) history = get_tickethistory( user_auth.get_rt_object_from_email(user_auth.get_email_from_id(request.query.o)), ticket_id ) result = create_default_result() result.update({"ticket": ticket}) result.update({"links": links}) result.update({"history": history}) return template("show_ticket", result)
def __get_root_parent(rt_object, element): # Get links for this element result = get_ticket_links(rt_object, element) parent = 0 for line in result: if 'memberof' in line: if parent: raise ValueError('More than one parent... sorry, but it is not allowed by now :(') parent = int(line[1]) if parent == 0: return element else: return __get_root_parent(rt_object, parent)
def __insert_into_project_management(rt_object, project_management_object, element, parent=0): # TODO this operation takes too long! One possible resolution is: # TODO - get all tickets using only get_ticket_links function # TODO - with all tickets ID, perform only one query for all info of all objects # TODO even so, this will take too long... :( element_dict = get_list_of_tickets(rt_object, 'id='+str(element))[0] project_management_object.add_element(element, parent, element_dict) # Get links for this element result = get_ticket_links(rt_object, element) for line in result: if line[0] == 'members': __insert_into_project_management(rt_object, project_management_object, int(line[1]), int(element)) return
def __get_root_parent(rt_object, element): # Get links for this element result = get_ticket_links(rt_object, element) parent = 0 for line in result: if 'memberof' in line: if parent: raise ValueError( 'More than one parent... sorry, but it is not allowed by now :(' ) parent = int(line[1]) if parent == 0: return element else: return __get_root_parent(rt_object, parent)
def test_get_ticket_links(): rt_object = RTApiMock() rt_object.set_return( [ u'rt/4.0.6 200 ok', u'', u'id: ticket/885775/links', u'', u'members: fsck.com-rt://uc.pt/ticket/887677,', u'fsck.com-rt://uc.pt/ticket/897183,', u'fsck.com-rt://uc.pt/ticket/899145', u'', u'' ] ) result = get_ticket_links(rt_object, 885775) assert result == [[u'members', u'887677'], [u'members', u'897183'], [u'members', u'899145']]
def __insert_into_project_management(rt_object, project_management_object, element, parent=0): # TODO this operation takes too long! One possible resolution is: # TODO - get all tickets using only get_ticket_links function # TODO - with all tickets ID, perform only one query for all info of all objects # TODO even so, this will take too long... :( element_dict = get_list_of_tickets(rt_object, 'id=' + str(element))[0] project_management_object.add_element(element, parent, element_dict) # Get links for this element result = get_ticket_links(rt_object, element) for line in result: if line[0] == 'members': __insert_into_project_management(rt_object, project_management_object, int(line[1]), int(element)) return