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,
    }
Exemple #2
0
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}
Exemple #3
0
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,
    }
Exemple #4
0
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,
    }
Exemple #5
0
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,
    }
Exemple #7
0
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,
    }
Exemple #8
0
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,
    }
Exemple #9
0
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,
    }