diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml index ac753007..2f565fc1 100644 --- a/.github/workflows/build-pr.yml +++ b/.github/workflows/build-pr.yml @@ -72,8 +72,6 @@ jobs: continue-on-error: false privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }} strict: true - secrets: - RO_DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }} build_i18n: if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:build i18n') }} @@ -108,8 +106,6 @@ jobs: with: ref: ${{github.event.pull_request.head.ref}} repo: ${{github.event.pull_request.head.repo.full_name}} - secrets: - RO_DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }} combine_build: needs: [build_english, build_i18n, build_blog] diff --git a/.github/workflows/build-zimfile.yml b/.github/workflows/build-zimfile.yml index d129540e..fd5725c9 100644 --- a/.github/workflows/build-zimfile.yml +++ b/.github/workflows/build-zimfile.yml @@ -9,9 +9,6 @@ on: repo: required: true type: string - secrets: - RO_DISCOURSE_API_KEY: - required: false permissions: contents: read @@ -82,8 +79,6 @@ jobs: - name: Generate Donating Members List continue-on-error: true - env: - DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }} run: | pip install requests python tools/generate-members.py > includes/members.md @@ -222,8 +217,6 @@ jobs: - name: Generate Donating Members List continue-on-error: true - env: - DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }} run: | pip install requests python tools/generate-members.py > includes/members.md @@ -471,8 +464,6 @@ jobs: - name: Generate Donating Members List continue-on-error: true - env: - DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }} run: | pip install requests python tools/generate-members.py > includes/members.md diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1edbe837..ef6f2a99 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -30,9 +30,6 @@ on: cache: type: boolean default: true - secrets: - RO_DISCOURSE_API_KEY: - required: false permissions: contents: read @@ -176,8 +173,6 @@ jobs: - name: Generate Donating Members List continue-on-error: true - env: - DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }} run: | pip install requests python tools/generate-members.py > includes/members.md diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index f320761d..82251a05 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -63,8 +63,6 @@ jobs: context: production continue-on-error: false cache: false - secrets: - RO_DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }} build_blog: needs: submodule @@ -85,8 +83,6 @@ jobs: with: repo: ${{ github.repository }} ref: ${{ github.ref }} - secrets: - RO_DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }} release: name: Create release notes diff --git a/tools/generate-members.py b/tools/generate-members.py index 6fbe6577..c8ba19fc 100644 --- a/tools/generate-members.py +++ b/tools/generate-members.py @@ -1,102 +1,20 @@ import requests import os -GITHUB_API_URL = "https://api.github.com/graphql" -GITHUB_TOKEN = os.getenv("GH_TOKEN") -ORG_NAME = "privacyguides" - # Fetch members from the API -members_api_url = "https://discuss.privacyguides.net/g/members/members.json?offset=0&order=added_at&asc=true" -headers = { - "Api-Key": os.getenv("DISCOURSE_API_KEY"), - "Api-Username": "system" -} -members_response = requests.get(members_api_url, headers=headers) -members_data = members_response.json() - -if 'members' not in members_data: - raise KeyError("Response JSON does not contain 'members' key") +members_api_url = os.getenv('MEMBERS_API_URL', 'https://ghost.privacyguides.org/cache/members.json') +members_response = requests.get(members_api_url) +members_data = members_response.json()[0] members = members_data['members'] -public_members_count = 0 -private_members_count = 0 html_output = "" for member in members: - flair_name = member.get('flair_name') - title = member.get('title') - if flair_name == "members" or title == "Member": - username = member['username'] - avatar_template = member['avatar_template'] - avatar_url = f"https://discuss.privacyguides.net{avatar_template.replace('{size}', '128')}" - profile_url = f"https://discuss.privacyguides.net/u/{username}" - html_output += f'' - public_members_count += 1 - -# print(html_output) - -query = """ -{ - organization(login: "%s") { - sponsorshipsAsMaintainer(first: 100) { - nodes { - sponsorEntity { - ... on User { - login - avatarUrl - url - } - ... on Organization { - login - avatarUrl - url - } - } - createdAt - } - } - } -} -""" % ORG_NAME - -headers = { - "Authorization": f"Bearer {GITHUB_TOKEN}", - "Content-Type": "application/json" -} - -response = requests.post(GITHUB_API_URL, json={'query': query}, headers=headers) -data = response.json() - -if 'errors' in data: - raise Exception(f"GraphQL query failed with errors: {data['errors']}") -if 'data' not in data: - raise KeyError(f"Response JSON does not contain 'data' key: {data}") - -sponsors = data['data']['organization']['sponsorshipsAsMaintainer']['nodes'] - -# Sort sponsors by the date they began their sponsorship -sponsors.sort(key=lambda x: x['createdAt']) - -for sponsor in sponsors: - sponsor_entity = sponsor['sponsorEntity'] - login = sponsor_entity['login'] - avatar_url = sponsor_entity['avatarUrl'] - url = sponsor_entity['url'] - html_output += f'' - -# Fetch the number of active members from the Magic Grants API -magic_grants_url = "https://donate.magicgrants.org/api/active-members?fund=privacyguides" -magic_grants_response = requests.get(magic_grants_url) -magic_grants_data = magic_grants_response.json() - -if 'members_count' not in magic_grants_data: - raise KeyError("Response JSON does not contain 'members_count' key") - -private_members_count += magic_grants_data['members_count'] -private_members_count -= public_members_count + username = member['username'] + html_output += f'' # Append the count of private members -if private_members_count > 0: - html_output += f'+{private_members_count}' +if members_data['unaccounted'] > 0: + html_output += f'+{members_data["unaccounted"]}' print(html_output)