Esempio n. 1
0
def issue_maintenance(repo_username, repo_id, issue):
    from tasks import old_issues, github_issue_submit, needs_reply, issue_scores
    data = {}
    number = 0

    try:
        if not issue:
            data['error'] = 'invalid issue'
            return data

        number = issue.get('number')
        if not number:
            data['error'] = 'invalid issue number'
            return data

        data['number'] = number

        if issue.get('closed_at') is not None:
            data['invalid'] = 'closed_at %s' % issue.get('closed_at')
            return data

        if issue.get('pull_request') is None:

            old_issue_data = old_issues.manage_old_issue(repo_username, repo_id, issue)
            if old_issue_data:
                data['closed_old_issue'] = True
                return data

            if github_issue_submit.remove_flag_if_submitted_through_github(repo_username, repo_id, issue):
                data['removed_submitted_through_github_flag'] = True

            elif github_issue_submit.remove_flag_if_not_updated(repo_username, repo_id, issue):
                data['removed_flag_if_not_resubmitted'] = True

            needs_reply_data = needs_reply.manage_needs_reply_issue(repo_username, repo_id, issue)
            if needs_reply_data:
                data['needs_reply_data'] = needs_reply_data
                if needs_reply_data.get('close_needs_reply_issue'):
                    return data

        data['issue_score'] = issue_scores.update_issue_score(repo_username, repo_id, number, data={
            'issue': issue
        })

    except Exception as ex:
        print 'issue_maintenance error, issue %s: %s' % (number, ex)
        data['error'] = 'issue %s, %s' % (number, ex)

    return data
    def test_remove_flag_if_not_updated(self):
        needs_resubmit_content_id = 'ionitron-issue-resubmit'
        now = datetime(2000, 1, 1)

        issue = {
            'number': 1,
            'body': 'blah blah blah i dont get it'
        }
        issue_comments = []
        r = c.remove_flag_if_not_updated('drifty', 'ionic', issue, issue_comments=issue_comments, needs_resubmit_content_id=needs_resubmit_content_id, remove_form_resubmit_comment_after=10, now=now, is_debug=True)
        self.assertEquals(r, False)

        issue = { 'body': '<span ionitron-issue-resubmit></span>' }
        issue_comments = []
        r = c.remove_flag_if_not_updated('drifty', 'ionic', issue, issue_comments=issue_comments, needs_resubmit_content_id=needs_resubmit_content_id, remove_form_resubmit_comment_after=10, now=now, is_debug=True)
        self.assertEquals(r, False)

        issue = {
            'number': 1,
            'body': 'blah blah blah i dont get it'
        }
        issue_comments = [
            { 'body': 'asdf' },
            { 'body': 'asdf' }
        ]
        r = c.remove_flag_if_not_updated('drifty', 'ionic', issue, issue_comments=issue_comments, needs_resubmit_content_id=needs_resubmit_content_id, remove_form_resubmit_comment_after=10, now=now, is_debug=True)
        self.assertEquals(r, False)

        issue = {
            'number': 1,
            'body': 'blah blah blah i dont get it'
        }
        issue_comments = [
            { 'body': '<span ionitron-issue-resubmit></span>' },
            { 'body': 'asdf' }
        ]
        r = c.remove_flag_if_not_updated('drifty', 'ionic', issue, issue_comments=issue_comments, needs_resubmit_content_id=needs_resubmit_content_id, remove_form_resubmit_comment_after=10, now=now, is_debug=True)
        self.assertEquals(r, False)

        now = datetime(2000, 1, 1)
        issue = {
            'number': 1,
            'body': 'blah blah blah i dont get it'
        }
        issue_comments = [
            { 'body': '<span ionitron-issue-resubmit></span>', 'created_at': '2000-01-01T00:00:00Z' },
            { 'body': 'asdf' }
        ]
        r = c.remove_flag_if_not_updated('drifty', 'ionic', issue, issue_comments=issue_comments, needs_resubmit_content_id=needs_resubmit_content_id, remove_form_resubmit_comment_after=10, now=now, is_debug=True)
        self.assertEquals(r, False)

        now = datetime(2000, 1, 12)
        issue = {
            'number': 1,
            'body': 'blah blah blah i dont get it'
        }
        issue_comments = [
            { 'body': '<span ionitron-issue-resubmit></span>', 'created_at': '2000-01-01T00:00:00Z' },
            { 'body': 'asdf' }
        ]
        r = c.remove_flag_if_not_updated('drifty', 'ionic', issue, issue_comments=issue_comments, needs_resubmit_content_id=needs_resubmit_content_id, remove_form_resubmit_comment_after=10, now=now, is_debug=True)
        self.assertEquals(r, True)