refactoring - linuxgaming - Linux gaming aggregate tool, built to test out NodeJS.
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
---
(DIR) commit c12dc577e91ea897c3e0f7a1567fa0f98f853f40
(DIR) parent b11ff41ea03339b4f740e2bc49fe3a718623321d
(HTM) Author: Jay Scott <me@jay.scot>
Date: Wed, 18 Jul 2018 21:43:03 +0100
refactoring
Diffstat:
M linuxgaming/__init__.py | 18 +++++++++++-------
M linuxgaming/database.py | 33 ++++++++++++++++++++++++-------
M linuxgaming/util.py | 22 +++++++++++++---------
3 files changed, 50 insertions(+), 23 deletions(-)
---
(DIR) diff --git a/linuxgaming/__init__.py b/linuxgaming/__init__.py
@@ -1,8 +1,12 @@
+"""
+Main application
+
+"""
+from datetime import datetime, timedelta
from flask import render_template, Flask
from flask_compress import Compress
from flask_pymongo import PyMongo
from flask_htmlmin import HTMLMIN
-from datetime import datetime, timedelta
import dateutil.parser
from . import update
@@ -10,18 +14,18 @@ from . import details
from . import search
from . import database
-compress = Compress()
+COMPRESS = Compress()
def create_app():
- # create and configure the app
+ """ Create the Flask application """
app = Flask(__name__, static_url_path='/static')
app.config.from_object('config')
# page performance tweeks
app.config['MINIFY_PAGE'] = True
- compress.init_app(app)
+ COMPRESS.init_app(app)
HTMLMIN(app)
# db init
@@ -50,7 +54,7 @@ def create_app():
@app.errorhandler(404)
def page_not_found(page):
- app.logger.info('page not found')
+ app.logger.info('page not found %s', page)
return render_template(
"message.html", msg="I think you are lost!"), 404
@@ -58,7 +62,7 @@ def create_app():
def _jinja2_filter_datetime(date):
date = dateutil.parser.parse(str(date))
native = date.replace(tzinfo=None)
- format = '%a %d %b %X %Y'
- return native.strftime(format)
+ new_format = '%a %d %b %X %Y'
+ return native.strftime(new_format)
return app
(DIR) diff --git a/linuxgaming/database.py b/linuxgaming/database.py
@@ -1,23 +1,42 @@
+"""
+Database helpers
+
+"""
+
from flask import current_app, abort
-def find_all(query={}):
+def find_all(query=None):
+ """
+ return mongodb cursor results from a find query
+
+ :param query: the mongodb query
+ :return: mongoDB cursor
+ """
try:
- d = current_app.mongo.db.items.find(query).sort('date', -1)
- except Exception as e:
- current_app.logger.error('DB replace error %s', e)
+ data = current_app.mongo.db.items.find(query).sort('date', -1)
+ except RuntimeError as error:
+ current_app.logger.error('DB replace error %s', error)
abort(500)
- return d
+ return data
def replace_one(query, data, upsert=True):
+ """
+ Replace one document helper
+
+ :param query: the mongodb query
+ :param data: data to replace/insert
+ :param upsert: insert if dociment doesn't exist
+ :return: boolean
+ """
try:
current_app.mongo.db.items.replace_one(query, data, upsert)
- except Exception as e:
- current_app.logger.error('DB replace error %s', e)
+ except RuntimeError as error:
+ current_app.logger.error('DB replace error %s', error)
abort(500)
return True
(DIR) diff --git a/linuxgaming/util.py b/linuxgaming/util.py
@@ -1,18 +1,22 @@
+import json
import yaml
import feedparser
-import json
import requests
from flask import (current_app, abort)
def load_yaml():
- """Return the YAML parsed config file."""
+ """
+ parse the configuration file
+
+ :return: dict of contents
+ """
try:
with open('config/feed_config.yaml', 'r') as ymlfile:
cfg = yaml.load(ymlfile)
- except (yaml.YAMLError, FileNotFoundError) as e:
- current_app.logger.error('YAML read error %s', e)
+ except (yaml.YAMLError, FileNotFoundError) as error:
+ current_app.logger.error('YAML read error %s', error)
abort(500)
return cfg
@@ -25,8 +29,8 @@ def feed_parse(url):
if res.entries:
return res.entries
- else:
- current_app.logger.error('FEED parse error %s', url)
+
+ current_app.logger.error('FEED parse error %s', url)
return None
@@ -37,7 +41,7 @@ def get_gog_info(query):
response = requests.get(gog_api_url + query)
- if response.status_code == 200:
- return json.loads(response.content.decode('utf-8'))
- else:
+ if response.status_code != 200:
abort(500)
+
+ return json.loads(response.content.decode('utf-8'))