Exemplo n.º 1
0
def format_issue_with_labels(issue: Issue):
    global user

    labels = issue.get_labels()
    labels_str = ''

    for label in labels:
        labels_str += '[%s](https://github.com/%s/ghiblog/labels/%s), ' % (
            label.name, user.get_user().login, urllib.parse.quote(label.name))

    if '---' in issue.body:
        body_summary = issue.body[:issue.body.index('---')]
    else:
        body_summary = issue.body[:150]

    return '''
#### [{0}]({1}) {2} \t {3}

:label: : {4}

{5}

[更多>>>]({1})

---

'''.format(issue.title, issue.html_url, sup('%s :speech_balloon:' % issue.comments), issue.created_at, labels_str[:-2],
           body_summary)
Exemplo n.º 2
0
def get_issue_info(issue: Issue):
    issue_url = issue.html_url
    issue_title = issue.title
    last_issue_time = issue.updated_at or issue.created_at
    last_comments_time = get_comments_last_time(issue)
    if last_comments_time:
        last_issue_time = max(last_issue_time, last_comments_time)
    # issue_updated_at = max([issue_last].extend(get_comments_last_time(issue)))
    print(issue_title, issue_url, last_issue_time, issue.get_labels()[0])
def get_disposition(msc: Issue) -> str:
    """Returns the textual representation of the disposition of a MSC"""
    dispositions = ["merge", "close", "postpone"]
    for label in msc.get_labels():
        for disposition in dispositions:
            # label.name is something like 'disposition:merge'
            # disposition is something like 'merge'
            if disposition in label.name:
                return disposition
Exemplo n.º 4
0
def format_issue_with_labels(issue: Issue):
    global user

    labels = issue.get_labels()
    labels_str = ''
    if labels:
        labels_str = '\n :label: \t' + sub('|')

    for label in labels:
        labels_str += sub('[%s](https://github.com/%s/bb_everyday/labels/%s)\t|\t' % (
            label.name, user.get_user().login, urllib.parse.quote(label.name)))

    return '- [%s](%s) %s  \t\t\t :stuck_out_tongue_winking_eye:%s %s\n\n' % (
        issue.title, issue.html_url, sup('%s :speech_balloon:' % issue.comments), sub(issue.created_at), labels_str)
Exemplo n.º 5
0
def format_issue_with_labels(issue: Issue):
    global user

    labels = issue.get_labels()
    labels_str = ''
    if labels:
        labels_str = '\n :label: \t' + sub('|')

    for label in labels:
        labels_str += sub('[%s](https://github.com/%s/blog/labels/%s)\t|\t' %
                          (label.name, user.get_user().login,
                           urllib.parse.quote(label.name)))

    return '- [%s](%s) \t\t\t %s \n\n' % (issue.title, issue.html_url,
                                          sub(issue.created_at))
Exemplo n.º 6
0
def process_issue(*, issue: Issue, settings: Settings) -> None:
    logging.info(f"Processing issue: #{issue.number}")
    label_strs = set([label.name for label in issue.get_labels()])
    events = list(issue.get_events())
    labeled_events = get_labeled_events(events)
    last_comment = get_last_comment(issue)
    for keyword, keyword_meta in settings.input_config.items():
        # Check closable delay, if enough time passed and the issue could be closed
        closable_delay = (
            last_comment is None
            or (datetime.utcnow() - keyword_meta.delay) > last_comment.created_at
        )
        # Check label, optionally removing it if there's a comment after adding it
        if keyword in label_strs:
            logging.info(f'Keyword: "{keyword}" in issue labels')
            keyword_event = get_last_event_for_label(
                labeled_events=labeled_events, label=keyword
            )
            if (
                last_comment
                and keyword_event
                and last_comment.created_at > keyword_event.created_at
            ):
                logging.info(
                    f"Not closing as the last comment was written after adding the "
                    f'label: "{keyword}"'
                )
                if keyword_meta.remove_label_on_comment:
                    logging.info(f'Removing label: "{keyword}"')
                    issue.remove_from_labels(keyword)
            elif closable_delay:
                close_issue(
                    issue=issue,
                    keyword_meta=keyword_meta,
                    keyword=keyword,
                    label_strs=label_strs,
                )
                break
            else:
                logging.info(
                    f"Not clossing issue: #{issue.number} as the delay hasn't been reached: {keyword_meta.delay}"
                )
Exemplo n.º 7
0
def process_issue(*, issue: Issue, settings: Settings,
                  owner: NamedUser) -> None:
    logging.info(f"Processing issue: #{issue.number}")
    label_strs = set([l.name for l in issue.get_labels()])
    events = list(issue.get_events())
    labeled_events = get_labeled_events(events)
    last_comment = get_last_comment(issue)
    for keyword, keyword_meta in settings.input_config.items():
        # Check closable delay, if enough time passed and the issue could be closed
        closable_delay = False
        if (last_comment is None or (datetime.utcnow() - keyword_meta.delay) >
                last_comment.created_at):
            closable_delay = True
        # Check label, optionally removing it if there's a comment after adding it
        if keyword in label_strs:
            logging.info(f'Keyword: "{keyword}" in issue labels')
            keyword_event = get_last_event_for_label(
                labeled_events=labeled_events, label=keyword)
            if last_comment and last_comment.created_at > keyword_event.created_at:
                logging.info(
                    f"Not closing as the last comment was written after adding the "
                    f'label: "{keyword}"')
                if keyword_meta.remove_label:
                    logging.info(f'Removing label: "{keyword}"')
                    issue.remove_from_labels(keyword)
            elif closable_delay:
                close_issue(issue=issue, keyword_meta=keyword_meta)
                break
        # Check HTML comments by allowed users
        if (last_comment
                and f"<!-- issue-manager: {keyword} -->" in last_comment.body
                and closable_delay and last_comment.user.login
                in keyword_meta.users + [owner.login]):
            logging.info(
                f'Last comment by user: "******" had HTML keyword '
                f'comment: "{keyword}" and there\'s a closable delay.')
            close_issue(issue=issue, keyword_meta=keyword_meta)
            break