Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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']]
Ejemplo n.º 6
0
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