Example #1
0
def team_24_recommend_allocation_handler() -> Response:
    """ TEAM_24_RECOMMEND_ALLOCATION handler

    :return:
    """
    allocation_table = list()
    jira_account = get_jira_account()
    users = get_project_users_without_pm()

    q = "project = {project} AND assignee = '{user}' AND status IN ('To Do', 'In Progress') ORDER BY issuekey"
    total = 0
    for user in users:
        q_user = q.format(project=config.get('jira', 'project'), user=user)
        tasks, tasks_count_msg = get_jira_tasks(q_user, jira_account)
        allocation_table.append((user, len(tasks)))
        total += len(tasks)

    tasks, tasks_count_msg = get_backlog(jira_account)
    if tasks_count_msg == _("NONE"):
        return _("NO_BACKLOG")

    summary = allocate_backlog(tasks, allocation_table, total, users)
    msg = _("RECOMMENDER_INTRO")
    for usr, ts in summary.items():
        msg += _("RECOMMENDER_SG",
                 tasks=format_enumeration(ts)) if len(ts) == 1 else _(
                     "RECOMMENDER_PL",
                     tasks=format_enumeration(ts)) + _("TO") + " " + usr + ". "

    response = Response(msg)
    return response
Example #2
0
def team_24_project_status_handler() -> Response:
    """ TEAM_24_PROJECT_STATUS handler

    :return:
    """

    urgent_q = 'project = {project} AND status IN ("To Do") and priority in (Highest)'.\
        format(project=config.get('jira', 'project'))

    overdue_q = 'project = {project} AND duedate < Now() and status in ("In Progress", "To Do")'.\
        format(project=config.get('jira', 'project'))

    jira_account = get_jira_account()
    todo_tasks, todo_tasks_count_msg = get_jira_tasks(get_board_query("To Do"),
                                                      jira_account)
    inprogress_tasks, inprogress_tasks_count_msg = get_jira_tasks(
        get_board_query("In Progress"), jira_account)
    done_tasks, done_tasks_count_msg = get_jira_tasks(get_board_query("Done"),
                                                      jira_account)
    urgent_tasks, urgent_tasks_count_msg = get_jira_tasks(
        urgent_q, jira_account)
    overdue_tasks, overdue_tasks_count_msg = get_jira_tasks(
        overdue_q, jira_account)
    idle_users = get_idle_users(jira_account)

    msg = _("SPRINT_STATUS",
            project=config.get('jira', 'project'),
            todos=todo_tasks_count_msg,
            inprogress=inprogress_tasks_count_msg,
            done=done_tasks_count_msg)

    msg += " " + _("PROJECT_STATUS_INTRO",
                   project=config.get('jira', 'project'),
                   urgent_tasks=urgent_tasks_count_msg,
                   overdue_tasks=overdue_tasks_count_msg)

    if len(idle_users) > 0:
        verb = _("ARE")
        if len(idle_users) == 1:
            verb = _("IS")
        user_str = format_enumeration(idle_users)
        msg_idle = " " + _("IDLE_USERS", users=user_str, verb=verb)
        msg += msg_idle

    response = Response(msg)
    return response
Example #3
0
def get_done_tasks():
    msg_done_tasks = _("NO_DONE_TASKS")
    today = date.today().strftime("%Y-%m-%d")
    tomorrow = (date.today() + timedelta(days=1)).strftime("%Y-%m-%d")
    done_q = 'project = {project} AND status changed during ({today}, {tomorrow}) to Done'. \
        format(project=config.get('jira', 'project'), today=today, tomorrow=tomorrow)
    done_tasks, done_tasks_count_msg = get_jira_tasks(done_q)
    return done_tasks, done_tasks_count_msg, msg_done_tasks
Example #4
0
def get_idle_users(jira_account):
    users = get_project_users()
    idle_q = "project = {project} AND assignee = '{user}' AND status IN ('In Progress') ORDER BY issuekey"
    idle_users = []
    for user in users:
        idle_q_user = idle_q.format(project=config.get('jira', 'project'),
                                    user=user)
        in_progress_tasks, in_progress_tasks_count_msg = get_jira_tasks(
            idle_q_user, jira_account)
        if in_progress_tasks_count_msg == _("NONE"):
            idle_users.append(user)
    return idle_users
def team_24_call_handler(username: str) -> Response:
    """ TEAM_24_COWORKER_STATUS handler

    :param username: str
    :return:
    """

    user = clarify_user(username)

    jira_account = get_jira_account()
    todo_tasks, todo_tasks_count_msg = get_jira_tasks(
        get_user_board_query("To Do", user), jira_account)
    inprogress_tasks, inprogress_tasks_count_msg = get_jira_tasks(
        get_user_board_query("In Progress", user), jira_account)
    done_tasks, done_tasks_count_msg = get_jira_tasks(
        get_user_board_query("Done", user), jira_account)

    msg = _("COWORKER_STATUS",
            username=username,
            todos=todo_tasks_count_msg,
            inprogress=inprogress_tasks_count_msg,
            done=done_tasks_count_msg)

    if inprogress_tasks_count_msg != _("NONE"):
        msg += " " + _("COWORKER_INPROGRESS",
                       username=user,
                       tasks=format_enumeration(inprogress_tasks))

    urgent_q = 'project = {project} AND assignee = "{username}" AND status IN ("To Do") and priority in (Highest)'. \
        format(project=config.get('jira', 'project'), username=user)

    overdue_q = 'project = {project} AND assignee = "{username}" AND duedate < Now() and status in ("In Progress", ' \
                '"To Do")'. \
        format(project=config.get('jira', 'project'), username=user)

    urgent_tasks, urgent_tasks_count_msg = get_jira_tasks(
        urgent_q, jira_account)
    if urgent_tasks_count_msg != _("NONE"):
        msg += _("COWORKER_URGENT",
                 username=user,
                 tasks=format_enumeration(urgent_tasks)) + "."

    overdue_tasks = get_jira_tasks_with_due_dates(overdue_q, jira_account)
    overdue_tasks_count = len(overdue_tasks)
    if overdue_tasks_count > 0:
        msg += _("COWORKER_OVERDUE", username=user)
        for idx, tpl in enumerate(overdue_tasks):
            msg += _("OVERDUE_TASK",
                     task=tpl[0],
                     days=(datetime.now() - parse(tpl[1])).days)
            msg += ", " if idx != overdue_tasks_count - 1 else "."

    no_tasks_q = "project = {project} AND assignee = '{user}' AND status IN ('In Progress', 'To Do') ORDER BY issuekey".format(
        project=config.get('jira', 'project'), user=user)
    tasks, tasks_count_msg = get_jira_tasks(no_tasks_q, jira_account)
    if len(tasks) == 0:
        msg += " " + _("COWORKER_EMPTY")
    else:
        idle_tasks_q = "project = {project} AND assignee = '{user}' AND status IN ('In Progress') ORDER BY " \
                       "issuekey".format(project=config.get('jira', 'project'), user=user)
        idle_tasks, idle_tasks_count_msg = get_jira_tasks(
            idle_tasks_q, jira_account)
        if len(idle_tasks) == 0:
            msg += " " + _("COWORKER_IDLE")

    response = Response(msg)
    return response
Example #6
0
def get_in_progress_tasks():
    q = 'project = {project} AND assignee = currentUser() AND status IN ("In Progress") ORDER BY issuekey'. \
        format(project=config.get('jira', 'project'))
    return get_jira_tasks(q)