From c29cf11796efc3e6744a4ebd8fc0b571a2cdebd9 Mon Sep 17 00:00:00 2001 From: lightlace Date: Nov 05 2019 13:39:38 +0000 Subject: [PATCH 1/3] Merge releases-json functionality into main.py --- diff --git a/sites/getfedora.org/main.py b/sites/getfedora.org/main.py index 1884ceb..ddff982 100644 --- a/sites/getfedora.org/main.py +++ b/sites/getfedora.org/main.py @@ -5,9 +5,13 @@ from flask_babel import Babel from flask_assets import Environment, Bundle from flask_frozen import Freezer from flask_htmlmin import HTMLMIN +import fedfind.release +import fedfind.helpers import jinja2 import os import yaml +import json + # TODO: Is there a nicer way to represent the data globalvar has? import globalvar @@ -83,6 +87,57 @@ FEDORA_LANGUAGE_DEFAULT = 'en' # Only include translations which actually have a translations file FEDORA_LANGUAGES = {k: v for k, v in FEDORA_LANGUAGES_FULL.items() if k in os.listdir('translations') or k == FEDORA_LANGUAGE_DEFAULT} +# some function definitions +def get_release_json(): + r = {} + output = [] + + with open(os.path.join(os.path.dirname(__file__), '..', 'release.yaml')) as data: + r = yaml.safe_load(data) + + releases_to_report = [] + for release in r.get('fmw', {}).get('releases_json', []): + version = release.get('version') + if version is None: + raise Exception('Malformed yaml section: fmw.releases_json, each entry must at ' + 'least have a "version" field.') + milestone = release.get('milestone', 'final') + releases_to_report.append( + fedfind.release.get_release( + int(version), + milestone = milestone)) + for rel in releases_to_report: + for img in rel.all_images: + location = img['url'] + h = hashify( + rel.version, + rel.milestone, + img['arch'], + location, + img['variant'], + img['subvariant']) + + if 'checksums' in img and 'sha256' in img['checksums']: + h['sha256'] = str(img['checksums']['sha256']) + + if 'size' in img: + h['size'] = str(img['size']) + + output.append(h) + + return json.dumps(output) + +def hashify(version, milestone, arch, link, variant, subvariant): + return { 'version': version, + 'arch': arch, + 'link': link, + 'variant': variant, + 'subvariant': subvariant} + + + + + + # Set this early so we can base routing logic on it. if __name__ == '__main__': freezing = True @@ -221,7 +276,7 @@ export_route('sponsors', '/sponsors/') # python scripts/releases-json.py > static/releases.json @app.route('/releases.json') def releases_json(): - return send_from_directory('static', 'releases.json') + return send_from_directory('static', get_release_json()) @app.route('/magazine.json') diff --git a/sites/getfedora.org/scripts/releases-json.py b/sites/getfedora.org/scripts/releases-json.py deleted file mode 100644 index 9ade5e6..0000000 --- a/sites/getfedora.org/scripts/releases-json.py +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env python -import fedfind.release -import fedfind.helpers -import json -import os -import yaml - -r = {} -output = [] - -with open(os.path.join(os.path.dirname(__file__), '..', 'release.yaml')) as data: - r = yaml.safe_load(data) - -def hashify(version, milestone, arch, link, variant, subvariant): - return { 'version': version - , 'arch': arch - , 'link': link - , 'variant': variant - , 'subvariant': subvariant - } - -releases_to_report = [] -for release in r.get('fmw', {}).get('releases_json', []): - version = release.get('version') - if version is None: - raise Exception( - 'Malformed yaml section: fmw.releases_json, each entry must at ' + - 'least have a "version" field.') - milestone = release.get('milestone', 'final') - releases_to_report.append( - fedfind.release.get_release( - int(version), - milestone=milestone)) - -for rel in releases_to_report: - for img in rel.all_images: - location = img['url'] - h = hashify( - rel.version, - rel.milestone, - img['arch'], - location, - img['variant'], - img['subvariant']) - - if 'checksums' in img and 'sha256' in img['checksums']: - h['sha256'] = str(img['checksums']['sha256']) - - if 'size' in img: - h['size'] = str(img['size']) - - output.append(h) - -print (json.dumps(output)) From 28bcc6d690d8d4b3d9a81a6ffc21ca5675a68973 Mon Sep 17 00:00:00 2001 From: fbaumanis Date: Nov 09 2019 15:03:20 +0000 Subject: [PATCH 2/3] Fix directory for releases.yaml in mian.py --- diff --git a/sites/getfedora.org/main.py b/sites/getfedora.org/main.py index ddff982..19c218a 100644 --- a/sites/getfedora.org/main.py +++ b/sites/getfedora.org/main.py @@ -92,7 +92,7 @@ def get_release_json(): r = {} output = [] - with open(os.path.join(os.path.dirname(__file__), '..', 'release.yaml')) as data: + with open(os.path.join(os.path.dirname(__file__), 'release.yaml')) as data: r = yaml.safe_load(data) releases_to_report = [] From 839ddb125c43ca2addf2ee49d46b5e29cba76dca Mon Sep 17 00:00:00 2001 From: fbaumanis Date: Nov 10 2019 15:15:53 +0000 Subject: [PATCH 3/3] Fix automatic creation of releases.json --- diff --git a/sites/getfedora.org/main.py b/sites/getfedora.org/main.py index 19c218a..1455393 100644 --- a/sites/getfedora.org/main.py +++ b/sites/getfedora.org/main.py @@ -94,7 +94,6 @@ def get_release_json(): with open(os.path.join(os.path.dirname(__file__), 'release.yaml')) as data: r = yaml.safe_load(data) - releases_to_report = [] for release in r.get('fmw', {}).get('releases_json', []): version = release.get('version') @@ -115,15 +114,18 @@ def get_release_json(): location, img['variant'], img['subvariant']) - if 'checksums' in img and 'sha256' in img['checksums']: h['sha256'] = str(img['checksums']['sha256']) - if 'size' in img: h['size'] = str(img['size']) - output.append(h) - + + json_out_file = open(os.path.join(os.path.dirname(__file__), 'static', 'releases.json'), 'w+') + json.dump(output, json_out_file) + + + + return json.dumps(output) def hashify(version, milestone, arch, link, variant, subvariant): @@ -276,8 +278,8 @@ export_route('sponsors', '/sponsors/') # python scripts/releases-json.py > static/releases.json @app.route('/releases.json') def releases_json(): - return send_from_directory('static', get_release_json()) - + get_release_json() + return send_from_directory('static', 'releases.json') @app.route('/magazine.json') def magazine_json():