From fdd5949a74946869adeccffd19b5f2916cdcf3b2 Mon Sep 17 00:00:00 2001 From: db0 Date: Mon, 16 Oct 2023 11:16:04 +0200 Subject: [PATCH] feat: endorsement badge icon only --- CHANGELOG.md | 4 ++++ fediseer/apis/v1/badges.py | 11 +++++++++-- fediseer/badges.py | 8 ++++++-- fediseer/consts.py | 2 +- fediseer/enums.py | 4 ++++ 5 files changed, 24 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae4f2e3..b3162d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +# 0.21.1 + +Allow to display endorsement badge without text + # 0.21.0 * Added rebuttals diff --git a/fediseer/apis/v1/badges.py b/fediseer/apis/v1/badges.py index 666bf44..222e22a 100644 --- a/fediseer/apis/v1/badges.py +++ b/fediseer/apis/v1/badges.py @@ -4,6 +4,7 @@ from sqlalchemy.orm import aliased from fediseer.classes.instance import Guarantee, Endorsement from flask import make_response from sqlalchemy import func +from fediseer import enums class GuaranteeBadge(Resource): @@ -31,10 +32,16 @@ class GuaranteeBadge(Resource): return response class EndorsementBadge(Resource): + get_parser = reqparse.RequestParser() + get_parser.add_argument("Client-Agent", default="unknown:0:unknown", type=str, required=False, help="The client name and version.", location="headers") + get_parser.add_argument("style", required=False, default=enums.BadgeStyle.FULL.name, type=str, help=f"The style the text should take. 'FULL' (default) means icon, text and counter. 'ICON' means just icon and counter.", location="args") + @api.expect(get_parser) def get(self, domain): '''Retrieve Endorsement Badge SVG ''' + self.args = self.get_parser.parse_args() + style = enums.BadgeStyle[self.args.style] query = db.session.query( Instance.domain, func.count(Endorsement.id) # Count the number of endorsements @@ -47,9 +54,9 @@ class EndorsementBadge(Resource): ) endorsements = query.first() if endorsements is None: - svg = generate_endorsements_badge(domain, 0) + svg = generate_endorsements_badge(domain, 0, style) else: - svg = generate_endorsements_badge(domain, endorsements[1]) + svg = generate_endorsements_badge(domain, endorsements[1], style) response = make_response(svg) response.headers['Content-Type'] = 'image/svg+xml' return response diff --git a/fediseer/badges.py b/fediseer/badges.py index 3a68e50..c9cbbf4 100644 --- a/fediseer/badges.py +++ b/fediseer/badges.py @@ -1,5 +1,6 @@ from pybadges import badge from loguru import logger +from fediseer import enums import base64 with open('fediseer/assets/crossed-chains.svg', 'rb') as file: @@ -32,14 +33,17 @@ def generate_guarantee_badge(domain: str, guarantor: str): ) return guarantee_badge -def generate_endorsements_badge(domain: str, count: int): +def generate_endorsements_badge(domain: str, count: int, style: enums.BadgeStyle = enums.BadgeStyle.FULL): left_color = "DarkSlateGray " right_color = "DarkOliveGreen" right_text=str(count) + left_text = "Endorsements" + if style == enums.BadgeStyle.ICON: + left_text = '' if count == 0: right_color = "DarkRed" endorsements_badge = badge( - left_text="Endorsements", + left_text=left_text, right_text=right_text, left_color=left_color, right_color=right_color, diff --git a/fediseer/consts.py b/fediseer/consts.py index 8b31a4b..f98449d 100644 --- a/fediseer/consts.py +++ b/fediseer/consts.py @@ -1,4 +1,4 @@ -FEDISEER_VERSION = "0.22.0" +FEDISEER_VERSION = "0.22.1" SUPPORTED_SOFTWARE = { "lemmy", "mastodon", diff --git a/fediseer/enums.py b/fediseer/enums.py index b301654..f0e939c 100644 --- a/fediseer/enums.py +++ b/fediseer/enums.py @@ -33,3 +33,7 @@ class InstanceState(enum.Enum): class InstanceFlags(enum.Enum): RESTRICTED = 0 MUTED = 1 + +class BadgeStyle(enum.Enum): + FULL = 0 + ICON = 1