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.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):
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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):
|
||||||
|
|
Loading…
Reference in a new issue