def _task_description_from_pull_request(pull_request: PullRequest) -> str: link_to_pr = _link(pull_request.url()) github_author = pull_request.author() author = _asana_user_url_from_github_user_handle(github_author.login()) if author is None: author = _asana_display_name_for_github_user(github_author) status_reason = _task_completion_from_pull_request(pull_request) status = "complete" if status_reason.is_complete else "incomplete" return _wrap_in_tag( "body" )(_wrap_in_tag("em") ("This is a one-way sync from GitHub to Asana. Do not edit this task or comment on it!" ) + f"\n\n\uD83D\uDD17 {link_to_pr}" + "\n✍️ " + author + _generate_assignee_description(pull_request.assignee()) + f"\n❗️Task is {status} because {status_reason.reason}" + _wrap_in_tag("strong")("\n\nDescription:\n") + _format_github_text_for_asana(pull_request.body()))
def _task_assignee_from_pull_request( pull_request: PullRequest) -> Optional[str]: assignee = pull_request.assignee() return _asana_user_id_from_github_handle(assignee.login)