From c7074c60911bb5baa5a60e65f4cc64ed5ea67146 Mon Sep 17 00:00:00 2001 From: devfle <52854338+devfle@users.noreply.github.com> Date: Thu, 22 Feb 2024 21:41:38 +0100 Subject: [PATCH] feat: get all contributes since registration (#20) * feat: get all contributes since registration * fix: lint errors --- graphql_query.py | 25 ++++++++++++++++++++----- readme_level.py | 17 +++++++++++++++-- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/graphql_query.py b/graphql_query.py index 2f77c09..625be39 100644 --- a/graphql_query.py +++ b/graphql_query.py @@ -1,14 +1,29 @@ """Query for github graphql api""" -from os import getenv +from os import getenv, linesep +from datetime import datetime -QUERY = f""" - {{ - user(login: "{getenv("INPUT_GITHUB_USERNAME")}") {{ - contributionsCollection {{ +# get the current year +current_year = datetime.now().year +contribution_list = [] + +# in a later version we can replace the 2015 date with user input +while current_year >= 2015: + + temp_query = f""" + {"_" + str(current_year)}: contributionsCollection(from: "{str(current_year)}-01-01T00:00:00") {{ contributionCalendar {{ totalContributions }} }} + """ + + contribution_list.append(temp_query) + current_year -= 1 + +QUERY = f""" + {{ + user(login: "{getenv("INPUT_GITHUB_USERNAME")}") {{ + {linesep.join(contribution_list)} followers {{ totalCount }} diff --git a/readme_level.py b/readme_level.py index 2cc9949..48a9a06 100644 --- a/readme_level.py +++ b/readme_level.py @@ -1,5 +1,6 @@ """Module that contains all the logic about the levelsystem.""" from os import getenv +from datetime import datetime from logging import exception, info from requests import post from graphql_query import QUERY @@ -34,8 +35,20 @@ def fetch_user_data(self) -> dict[str, int] | None: response_data = response.json() - user_data = (response_data["data"]["user"] - ["contributionsCollection"]["contributionCalendar"]) + current_year = datetime.now().year + total_contribution = [] + + while current_year >= 2015: + contribution_count = (response_data["data"]["user"] + ["_" + str(current_year)]["contributionCalendar"]["totalContributions"]) + + total_contribution.append(contribution_count) + current_year -= 1 + + + user_data = {} + + user_data["totalContributions"] = sum(total_contribution) user_data["totalFollowers"] = (response_data["data"]["user"] ["followers"]["totalCount"])