From 4fd1ecb1c467c0f46e9d716826ca7b32aacb504e Mon Sep 17 00:00:00 2001 From: Xevion Date: Sun, 21 Jun 2020 07:32:54 -0500 Subject: [PATCH] created automatic demo altering schedule --- trivia/__main__.py | 2 +- trivia/config.py | 5 +++-- trivia/create_app.py | 1 + trivia/utils.py | 22 +++++++++++++++++++++- 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/trivia/__main__.py b/trivia/__main__.py index 285487a..cecfaa3 100644 --- a/trivia/__main__.py +++ b/trivia/__main__.py @@ -2,4 +2,4 @@ from trivia.create_app import create_app if __name__ == '__main__': app = create_app() - app.run() + app.run(use_reloader=False) diff --git a/trivia/config.py b/trivia/config.py index a51b0c6..e343e58 100644 --- a/trivia/config.py +++ b/trivia/config.py @@ -20,7 +20,7 @@ class Config(object): DEMO = False DEMO_TEAM_COUNT = 0 DEMO_ALTERATION_INTERVAL = 0 - + DEMO_MAX_SCORES = 0 class DemoConfig(Config): # Main Configuration @@ -29,4 +29,5 @@ class DemoConfig(Config): # Demo Configuration DEMO = True DEMO_TEAM_COUNT = 30 - DEMO_ALTERATION_INTERVAL = 15 + DEMO_ALTERATION_INTERVAL = 3 + DEMO_MAX_SCORES = 20 diff --git a/trivia/create_app.py b/trivia/create_app.py index 853fc23..65de3f3 100644 --- a/trivia/create_app.py +++ b/trivia/create_app.py @@ -28,6 +28,7 @@ def create_app(env=None): if app.config['DEMO']: app.logger.info('Generating Demo Data...') utils.generateDemo() + scheduler.add_job(id='altering', func=utils.alterDemo, trigger="interval", seconds=app.config['DEMO_ALTERATION_INTERVAL']) utils.refreshScores() diff --git a/trivia/utils.py b/trivia/utils.py index 6537e36..c29510a 100644 --- a/trivia/utils.py +++ b/trivia/utils.py @@ -5,6 +5,7 @@ Stores important backend application functionality. """ import json import os +import random from collections import namedtuple from typing import List @@ -69,7 +70,7 @@ def refreshScores() -> None: # If invalid or inaccessible, simply do nothing. except json.JSONDecodeError: - current_app.logger.error('Scores file could not be opened or parsed.', print_exc=True) + current_app.logger.error('Scores file could not be opened or parsed.', exc_info=True) def generateDemo() -> None: @@ -85,3 +86,22 @@ def generateDemo() -> None: with open(SCORES_FILE, 'w') as file: json.dump(data, file) + +def alterDemo() -> None: + from trivia.create_app import scheduler + app = scheduler.app + + with app.app_context(): + current_app.logger.debug('Altering Demo Data...') + with open(SCORES_FILE, 'r') as file: + data = json.load(file) + + if len(data) > 0: + if len(data[0]['scores']) >= current_app.config['DEMO_MAX_SCORES']: + generateDemo() + else: + for team in data: + team['scores'].append(random.randint(2, 8) if random.random() > 0.25 else 0) + + with open(SCORES_FILE, 'w') as file: + json.dump(data, file)