def find_my_contributions(cls, account): """Find and save the user contributions. A contribution is a merged Pull Request opened by the user. """ connection = Github(login_or_token=account.github_token) # Set query to find contributions qualifiers = {'is': 'merged', 'type': 'pr', 'author': account.user.username} # Search GH API for projects. issues = connection.search_issues( query='', sort='updated', order='desc', **qualifiers) i = 0 issues_page = issues.get_page(i) while issues_page: for issue in issues_page: attributes = {'account': account, 'title': issue.title, 'url': issue.html_url, 'repo': issue.repository.name, 'repo_url': issue.repository.html_url, 'merged': issue.updated_at} if not Contribution.objects.filter(**attributes): contribution = Contribution(**attributes) contribution.save() i += 1 issues_page = issues.get_page(i)