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)