Support gzip compressed database files

This commit is contained in:
shortcutme 2017-08-09 14:19:39 +02:00
parent f451ce6c91
commit b503d59c49
No known key found for this signature in database
GPG key ID: 5B63BAE6CB9613AE
2 changed files with 8 additions and 4 deletions

View file

@ -9,6 +9,7 @@ import gevent
from DbCursor import DbCursor
from Config import config
from util import SafeRe
from util import helper
opened_dbs = []
@ -244,12 +245,15 @@ class Db(object):
# Load the json file
try:
if file is None: # Open file is not file object passed
file = open(file_path)
file = open(file_path, "rb")
if file is False: # File deleted
data = {}
else:
data = json.load(file)
if file_path.endswith("json.gz"):
data = json.load(helper.limitedGzipFile(fileobj=file))
else:
data = json.load(file)
except Exception, err:
self.log.debug("Json file %s load error: %s" % (file_path, err))
data = {}

View file

@ -85,7 +85,7 @@ class SiteStorage(object):
# Data files in content.json
content_inner_path_dir = helper.getDirname(content_inner_path) # Content.json dir relative to site
for file_relative_path in content.get("files", {}).keys() + content.get("files_optional", {}).keys():
if not file_relative_path.endswith(".json"):
if not file_relative_path.endswith(".json") and not file_relative_path.endswith("json.gz"):
continue # We only interesed in json files
file_inner_path = content_inner_path_dir + file_relative_path # File Relative to site dir
file_inner_path = file_inner_path.strip("/") # Strip leading /
@ -239,7 +239,7 @@ class SiteStorage(object):
if self.has_db:
self.closeDb()
self.openDb()
elif not config.disable_db and inner_path.endswith(".json") and self.has_db: # Load json file to db
elif not config.disable_db and (inner_path.endswith(".json") or inner_path.endswith(".json.gz")) and self.has_db: # Load json file to db
if config.verbose:
self.log.debug("Loading json file to db: %s (file: %s)" % (inner_path, file))
try: