MCPcopy Index your code
hub / github.com/HelloZeroNet/ZeroNet / getDbFiles

Method getDbFiles

plugins/MergerSite/MergerSitePlugin.py:253–294  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

251class SiteStoragePlugin(object):
252 # Also rebuild from merged sites
253 def getDbFiles(self):
254 merger_types = merger_db.get(self.site.address)
255
256 # First return the site's own db files
257 for item in super(SiteStoragePlugin, self).getDbFiles():
258 yield item
259
260 # Not a merger site, that's all
261 if not merger_types:
262 return
263
264 merged_sites = [
265 site_manager.sites[address]
266 for address, merged_type in merged_db.items()
267 if merged_type in merger_types
268 ]
269 found = 0
270 for merged_site in merged_sites:
271 self.log.debug("Loading merged site: %s" % merged_site)
272 merged_type = merged_db[merged_site.address]
273 for content_inner_path, content in merged_site.content_manager.contents.items():
274 # content.json file itself
275 if merged_site.storage.isFile(content_inner_path): # Missing content.json file
276 merged_inner_path = "merged-%s/%s/%s" % (merged_type, merged_site.address, content_inner_path)
277 yield merged_inner_path, merged_site.storage.getPath(content_inner_path)
278 else:
279 merged_site.log.error("[MISSING] %s" % content_inner_path)
280 # Data files in content.json
281 content_inner_path_dir = helper.getDirname(content_inner_path) # Content.json dir relative to site
282 for file_relative_path in list(content.get("files", {}).keys()) + list(content.get("files_optional", {}).keys()):
283 if not file_relative_path.endswith(".json"):
284 continue # We only interesed in json files
285 file_inner_path = content_inner_path_dir + file_relative_path # File Relative to site dir
286 file_inner_path = file_inner_path.strip("/") # Strip leading /
287 if merged_site.storage.isFile(file_inner_path):
288 merged_inner_path = "merged-%s/%s/%s" % (merged_type, merged_site.address, file_inner_path)
289 yield merged_inner_path, merged_site.storage.getPath(file_inner_path)
290 else:
291 merged_site.log.error("[MISSING] %s" % file_inner_path)
292 found += 1
293 if found % 100 == 0:
294 time.sleep(0.001) # Context switch to avoid UI block
295
296 # Also notice merger sites on a merged site file change
297 def onUpdated(self, inner_path, file=None):

Callers

nothing calls this directly

Calls 5

itemsMethod · 0.80
getPathMethod · 0.80
errorMethod · 0.80
getMethod · 0.45
isFileMethod · 0.45

Tested by

no test coverage detected