diff --git a/plugins/MergerSite/MergerSitePlugin.py b/plugins/MergerSite/MergerSitePlugin.py
index af1a8ff5..0fe83448 100644
--- a/plugins/MergerSite/MergerSitePlugin.py
+++ b/plugins/MergerSite/MergerSitePlugin.py
@@ -230,7 +230,7 @@ class SiteStoragePlugin(object):
# content.json file itself
if merged_site.storage.isFile(content_inner_path): # Missing content.json file
merged_inner_path = "merged-%s/%s/%s" % (merged_type, merged_site.address, content_inner_path)
- yield merged_inner_path, merged_site.storage.open(content_inner_path)
+ yield merged_inner_path, merged_site.storage.getPath(content_inner_path)
else:
merged_site.log.error("[MISSING] %s" % content_inner_path)
# Data files in content.json
@@ -242,7 +242,7 @@ class SiteStoragePlugin(object):
file_inner_path = file_inner_path.strip("/") # Strip leading /
if merged_site.storage.isFile(file_inner_path):
merged_inner_path = "merged-%s/%s/%s" % (merged_type, merged_site.address, file_inner_path)
- yield merged_inner_path, merged_site.storage.open(file_inner_path)
+ yield merged_inner_path, merged_site.storage.getPath(file_inner_path)
else:
merged_site.log.error("[MISSING] %s" % file_inner_path)
diff --git a/src/Site/Site.py b/src/Site/Site.py
index 54f13794..147d7e72 100644
--- a/src/Site/Site.py
+++ b/src/Site/Site.py
@@ -1064,6 +1064,13 @@ class Site(object):
for ws in self.websockets:
ws.event("siteChanged", self, param)
+ def messageWebsocket(self, message, type="info", progress=None):
+ for ws in self.websockets:
+ if progress is None:
+ ws.cmd("notification", [type, message])
+ else:
+ ws.cmd("progress", [type, message, progress])
+
# File download started
@util.Noparallel(blocking=False)
def fileStarted(self):
diff --git a/src/Site/SiteStorage.py b/src/Site/SiteStorage.py
index fd9d27e5..bb0578df 100644
--- a/src/Site/SiteStorage.py
+++ b/src/Site/SiteStorage.py
@@ -13,6 +13,7 @@ from Debug import Debug
from Config import config
from util import helper
from Plugin import PluginManager
+from Translate import translate as _
@PluginManager.acceptPlugins
@@ -78,7 +79,7 @@ class SiteStorage(object):
for content_inner_path, content in self.site.content_manager.contents.iteritems():
# content.json file itself
if self.isFile(content_inner_path):
- yield content_inner_path, self.open(content_inner_path)
+ yield content_inner_path, self.getPath(content_inner_path)
else:
self.log.error("[MISSING] %s" % content_inner_path)
# Data files in content.json
@@ -89,7 +90,7 @@ class SiteStorage(object):
file_inner_path = content_inner_path_dir + file_relative_path # File Relative to site dir
file_inner_path = file_inner_path.strip("/") # Strip leading /
if self.isFile(file_inner_path):
- yield file_inner_path, self.open(file_inner_path)
+ yield file_inner_path, self.getPath(file_inner_path)
else:
self.log.error("[MISSING] %s" % file_inner_path)
@@ -120,16 +121,27 @@ class SiteStorage(object):
cur.logging = False
found = 0
s = time.time()
+ db_files = list(self.getDbFiles())
try:
- for file_inner_path, file in self.getDbFiles():
+ if len(db_files) > 100:
+ self.site.messageWebsocket(_["Database rebuilding...
Imported {0} of {1} files..."].format("0000", len(db_files)), "rebuild", 0)
+ for file_inner_path, file_path in db_files:
try:
- if self.updateDbFile(file_inner_path, file=file, cur=cur):
+ if self.updateDbFile(file_inner_path, file=open(file_path, "rb"), cur=cur):
found += 1
except Exception, err:
self.log.error("Error importing %s: %s" % (file_inner_path, Debug.formatException(err)))
+ if found and found % 100 == 0:
+ self.site.messageWebsocket(
+ _["Database rebuilding...
Imported {0} of {1} files..."].format(found, len(db_files)),
+ "rebuild",
+ int(float(found) / len(db_files) * 100)
+ )
finally:
cur.execute("END")
+ if len(db_files) > 100:
+ self.site.messageWebsocket(_["Database rebuilding...
Imported {0} of {1} files..."].format(found, len(db_files)), "rebuild", 100)
self.log.info("Imported %s data file in %ss" % (found, time.time() - s))
self.event_db_busy.set(True) # Event done, notify waiters
self.event_db_busy = None # Clear event