From 5b7e29dd93ca039351ecba84d0a70f56437034da Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sat, 11 May 2024 19:43:09 +0200 Subject: [PATCH] store: port badge mechanism from the old tartiflette --- store/app.py | 44 ++++++++++++++++++++++++++++++++ store/assets/badges/fetch_badges | 20 +++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 store/assets/badges/fetch_badges diff --git a/store/app.py b/store/app.py index e161e510..eedfe126 100644 --- a/store/app.py +++ b/store/app.py @@ -511,6 +511,50 @@ def news_rss(): return response +# Badges +@app.route('/integration/') +@app.route('/integration/.svg') +@app.route('/badge//') +@app.route('/badge//.svg') +def badge(app, type="integration"): + + data = get_dashboard_data() + catalog = get_catalog()["apps"] + + catalog_level = catalog.get(app, {}).get("level") + main_ci_level = data.get(app, {}).get("ci_results", {}).get("main", {}).get("level", '?') + + if type == "integration": + if app in catalog and main_ci_level: + badge = f"level{main_ci_level}" + else: + badge = "unknown" + elif type == "state": + if app not in catalog: + badge = "state-unknown" + else: + if catalog_level in [None, '?']: + badge = "state-just-got-added-to-catalog" + elif catalog_level in [0, -1]: + badge = "state-broken" + else: + badge = "state-working" + elif type == "maintained": + if app in catalog and catalog.get(app, {}).get("maintained") is False: + badge = "unmaintained" + else: + badge = "empty" + else: + badge = "empty" + + svg = open(f"assets/badges/{badge}.svg").read() + response = make_response(svg) + response.content_type = 'image/svg+xml' + response.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate' + response.headers['Pragma'] = 'no-cache' + + return response + ############################################################################### # Session / SSO using Discourse # diff --git a/store/assets/badges/fetch_badges b/store/assets/badges/fetch_badges new file mode 100644 index 00000000..5f1c94da --- /dev/null +++ b/store/assets/badges/fetch_badges @@ -0,0 +1,20 @@ +wget -O - https://img.shields.io/badge/Integration-Level_9-blue.svg > level9.svg +wget -O - https://img.shields.io/badge/Integration-Level_8-brightgreen.svg > level8.svg +wget -O - https://img.shields.io/badge/Integration-Level_7-green.svg > level7.svg +wget -O - https://img.shields.io/badge/Integration-Level_6-yellowgreen.svg > level6.svg +wget -O - https://img.shields.io/badge/Integration-Level_5-yellowgreen.svg > level5.svg +wget -O - https://img.shields.io/badge/Integration-Level_4-yellow.svg > level4.svg +wget -O - https://img.shields.io/badge/Integration-Level_3-yellow.svg > level3.svg +wget -O - https://img.shields.io/badge/Integration-Level_2-orange.svg > level2.svg +wget -O - https://img.shields.io/badge/Integration-Level_1-orange.svg > level1.svg +wget -O - https://img.shields.io/badge/Integration-Level_0-red.svg > level0.svg +wget -O - https://img.shields.io/badge/Integration-Unknown-lightgrey.svg > unknown.svg + +wget -O - https://upload.wikimedia.org/wikipedia/commons/1/1d/No_image.svg > empty.svg +wget -O - https://img.shields.io/badge/Status-Package%20not%20maintained-red.svg > unmaintained.svg + +wget -O - https://img.shields.io/badge/Status-working-brightgreen.svg > state-working.svg +wget -O - https://img.shields.io/badge/Status-Just%20got%20added%20to%20catalog-yellowgreen.svg > state-just-got-added-to-catalog.svg +wget -O - https://img.shields.io/badge/Status-In%20progress-orange.svg > state-inprogress.svg +wget -O - https://img.shields.io/badge/Status-Not%20working-red.svg > state-notworking.svg +wget -O - https://img.shields.io/badge/Status-Broken-red.svg > state-broken.svg