Ejemplo n.º 1
0
def getAsanaUser(taskStructDict, chapter):

    asana_auth_token = ut.encodeAuthToken(chapter["integrations"]["asana"]["auth_token"])
    user_id = taskStructDict["assignee"]["id"]
    user_url = "https://app.asana.com/api/1.0/users/{0}".format(user_id)
    user = ut.curl(user_url, authToken=asana_auth_token)
    j_user = json.loads(user)

    return j_user["data"]["name"], j_user["data"]["email"]
Ejemplo n.º 2
0
def sendAsanaReminder(taskId, chapter):
    asana_auth_token = ut.encodeAuthToken(chapter["integrations"]["asana"]["auth_token"])
    story_url = "https://app.asana.com/api/1.0/tasks/%s/stories" % taskId
    data = urllib.urlencode(
        {"text": "Please provide an update regarding this task and update the due date accordingly!"}
    )

    try:
        task_story = ut.curl(story_url, data, asana_auth_token)
        j_task_story = json.loads(task_story)["data"]
        print "POST to Asana Successful."
    except:
        print "POST to Asana Failed."
Ejemplo n.º 3
0
def getAsanaTasks(channel, projectUrl, chapter):
    asana_auth_token = ut.encodeAuthToken(chapter["integrations"]["asana"]["auth_token"])
    all_tasks = ut.curl(projectUrl, authToken=asana_auth_token)
    j_all_tasks = json.loads(all_tasks)

    for cur_task in j_all_tasks["data"]:
        """
		Current Task >> dict
		keys:
			task id, name, due_on, assignee, completed, etc...
		"""
        # Filter out labels or sections
        cur_task_due = cur_task["due_on"]
        cur_task_assignee = cur_task["assignee"]
        cur_task_completed = cur_task["completed"]

        if not cur_task_completed and cur_task_assignee is not None and cur_task_due is not None:
            # Converting delta time to milliseconds from current time
            cur_task_delta = ut.getDeltaTimeMilli(cur_task_due)
            # print cur_task_delta #DEBUG

            if ut.taskPending(cur_task_delta):
                remindUser(channel, cur_task, chapter)
Ejemplo n.º 4
0
def writeAgenda(authToken, projectUrl, document, fileName):
    """Capture all tasks (discussion topics)"""
    auth_token = ut.encodeAuthToken(authToken)
    all_tasks = ut.curl(projectUrl, authToken=auth_token)
    j_all_tasks = json.loads(all_tasks)

    topic_cnt = 1
    isAttendance = False

    for cur_task in j_all_tasks["data"]:

        cur_task_name = cur_task["name"]
        cur_task_id = cur_task["id"]

        if cur_task_name.endswith(":"):
            if cur_task_name.find("Attendance") >= 0:
                isAttendance = True
            else:
                isAttendance = False
            document.add_heading(cur_task_name[:-1], level=1)
            topic_cnt = 1
        else:
            task_url = "https://app.asana.com/api/1.0/tasks/{0}".format(cur_task_id)
            story_url = "https://app.asana.com/api/1.0/tasks/{0}/stories".format(cur_task_id)

            """Task Struct"""
            cur_task_struct = ut.curl(task_url, authToken=auth_token)
            j_cur_task_struct = json.loads(cur_task_struct)
            j_cur_task = j_cur_task_struct["data"]

            """Stories Struct"""
            cur_task_stories = ut.curl(story_url, authToken=auth_token)
            j_cur_task_stories = json.loads(cur_task_stories)
            stories = j_cur_task_stories["data"]  # list of dictionaries

            if not j_cur_task["completed"] and isAttendance:
                document.add_paragraph(
                    attendance.format(j_cur_task["assignee"]["name"], cur_task_name), style="List Bullet"
                )
            elif not j_cur_task["completed"] and not isAttendance:
                if j_cur_task["assignee"] != None and cur_task_name != None:
                    document.add_heading(
                        topic_section.format(
                            cur_task_name.encode("utf-8"), j_cur_task["assignee"]["name"].encode("utf-8")
                        ).decode("utf-8"),
                        level=2,
                    )
                elif j_cur_task["assignee"] == None and cur_task_name != None:
                    document.add_heading(
                        topic_section.format(cur_task_name.encode("utf-8"), "EBOARD").decode("utf-8"), level=2
                    )

                for cur_story in stories:

                    tab_cnt = 0
                    comments = cur_story["text"].encode("utf-8").split("\n")
                    for cur_comment in comments:
                        for cur_char in cur_comment:
                            if cur_char != "_":
                                break
                            else:
                                tab_cnt += 1

                        comment = cur_comment[tab_cnt:].decode("utf-8")
                        # print comment
                        tab_cnt += 1
                        if tab_cnt <= 1 and comment != None:
                            document.add_paragraph(comment, style="List Bullet")
                        elif tab_cnt <= 3 and tab_cnt > 1 and comment != None:
                            document.add_paragraph(comment, style="List Bullet {0}".format(tab_cnt))
                        elif tab_cnt > 3 and comment != None:
                            document.add_paragraph(comment, style="List Bullet 3")
                        tab_cnt = 0

            topic_cnt += 1

    document.save(fileName)