Cache bad_files and optional hashfield in sites.json
This commit is contained in:
parent
ecb5885dba
commit
1bd6e2f493
3 changed files with 32 additions and 4 deletions
|
@ -31,6 +31,15 @@ class ContentManager(object):
|
|||
self.loadContent(add_bad_files=False, delete_removed_files=False)
|
||||
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
|
||||
# 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):
|
||||
|
|
|
@ -76,10 +76,18 @@ class Site(object):
|
|||
return "<%s>" % self.__str__()
|
||||
|
||||
# Load site settings from data/sites.json
|
||||
def loadSettings(self):
|
||||
sites_settings = json.load(open("%s/sites.json" % config.data_dir))
|
||||
if self.address in sites_settings:
|
||||
self.settings = sites_settings[self.address]
|
||||
def loadSettings(self, settings=None):
|
||||
if not settings:
|
||||
settings = json.load(open("%s/sites.json" % config.data_dir)).get(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:
|
||||
self.settings = {"own": False, "serving": True, "permissions": [], "added": int(time.time())} # Default
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ import time
|
|||
import gevent
|
||||
|
||||
from Plugin import PluginManager
|
||||
from Content import ContentDb
|
||||
from Config import config
|
||||
from util import helper
|
||||
|
||||
|
@ -50,9 +51,19 @@ class SiteManager(object):
|
|||
self.log.error("Save error: No sites found")
|
||||
s = time.time()
|
||||
data = {}
|
||||
# Generate data file
|
||||
for address, site in self.list().iteritems():
|
||||
site.settings["size"] = site.content_manager.getTotalSize() # Update site size
|
||||
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))
|
||||
# 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))
|
||||
|
||||
def saveTimer(self):
|
||||
|
|
Loading…
Reference in a new issue