Cache bad_files and optional hashfield in sites.json

This commit is contained in:
shortcutme 2016-09-04 17:43:30 +02:00
parent ecb5885dba
commit 1bd6e2f493
3 changed files with 32 additions and 4 deletions

View file

@ -31,6 +31,15 @@ class ContentManager(object):
self.loadContent(add_bad_files=False, delete_removed_files=False) self.loadContent(add_bad_files=False, delete_removed_files=False)
self.site.settings["size"] = self.getTotalSize() self.site.settings["size"] = self.getTotalSize()
# Load hashfield cache
if "hashfield" in self.site.settings.get("cache", {}):
self.hashfield.fromstring(self.site.settings["cache"]["hashfield"].decode("base64"))
del self.site.settings["cache"]["hashfield"]
self.has_optional_files = True
elif self.getOptionalSize() > 0:
self.site.storage.updateBadFiles() # No hashfield cache created yet
self.has_optional_files = True
# Load content.json to self.content # Load content.json to self.content
# Return: Changed files ["index.html", "data/messages.json"], Deleted files ["old.jpg"] # Return: Changed files ["index.html", "data/messages.json"], Deleted files ["old.jpg"]
def loadContent(self, content_inner_path="content.json", add_bad_files=True, delete_removed_files=True, load_includes=True, force=False): def loadContent(self, content_inner_path="content.json", add_bad_files=True, delete_removed_files=True, load_includes=True, force=False):

View file

@ -76,10 +76,18 @@ class Site(object):
return "<%s>" % self.__str__() return "<%s>" % self.__str__()
# Load site settings from data/sites.json # Load site settings from data/sites.json
def loadSettings(self): def loadSettings(self, settings=None):
sites_settings = json.load(open("%s/sites.json" % config.data_dir)) if not settings:
if self.address in sites_settings: settings = json.load(open("%s/sites.json" % config.data_dir)).get(self.address)
self.settings = sites_settings[self.address] if settings:
self.settings = settings
if "cache" not in settings:
settings["cache"] = {}
self.bad_files = settings["cache"].get("bad_files", {})
settings["cache"]["bad_files"] = {}
# Reset tries
for inner_path in self.bad_files:
self.bad_files[inner_path] = 1
else: else:
self.settings = {"own": False, "serving": True, "permissions": [], "added": int(time.time())} # Default self.settings = {"own": False, "serving": True, "permissions": [], "added": int(time.time())} # Default

View file

@ -7,6 +7,7 @@ import time
import gevent import gevent
from Plugin import PluginManager from Plugin import PluginManager
from Content import ContentDb
from Config import config from Config import config
from util import helper from util import helper
@ -50,9 +51,19 @@ class SiteManager(object):
self.log.error("Save error: No sites found") self.log.error("Save error: No sites found")
s = time.time() s = time.time()
data = {} data = {}
# Generate data file
for address, site in self.list().iteritems(): for address, site in self.list().iteritems():
site.settings["size"] = site.content_manager.getTotalSize() # Update site size
data[address] = site.settings data[address] = site.settings
data[address]["cache"] = {}
data[address]["cache"]["bad_files"] = site.bad_files
data[address]["cache"]["hashfield"] = site.content_manager.hashfield.tostring().encode("base64")
helper.atomicWrite("%s/sites.json" % config.data_dir, json.dumps(data, indent=2, sort_keys=True)) helper.atomicWrite("%s/sites.json" % config.data_dir, json.dumps(data, indent=2, sort_keys=True))
# Remove cache from site settings
for address, site in self.list().iteritems():
site.settings["cache"] = {}
self.log.debug("Saved sites in %.2fs" % (time.time() - s)) self.log.debug("Saved sites in %.2fs" % (time.time() - s))
def saveTimer(self): def saveTimer(self):