def __init__(self, site): self.site = site self.log = self.site.log self.contents = ContentDbDict(site) self.hashfield = PeerHashfield() self.has_optional_files = False self.site.onFileDone.append(lambda inner_path: self.addOptionalFile(inner_path))
class ContentManager(object): def __init__(self, site): self.site = site self.log = self.site.log self.contents = ContentDbDict(site) self.hashfield = PeerHashfield() self.has_optional_files = False # Load all content.json files def loadContents(self): if len(self.contents) == 0: self.log.debug("ContentDb not initialized, load files from filesystem") self.loadContent(add_bad_files=False, delete_removed_files=False) self.site.settings["size"], self.site.settings["size_optional"] = 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"] elif self.contents.get("content.json") and self.site.settings["size_optional"] > 0: self.site.storage.updateBadFiles() # No hashfield cache created yet self.has_optional_files = bool(self.hashfield) self.contents.db.initSite(self.site) # 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): content_inner_path = content_inner_path.strip("/") # Remove / from beginning old_content = self.contents.get(content_inner_path) content_path = self.site.storage.getPath(content_inner_path) content_dir = helper.getDirname(self.site.storage.getPath(content_inner_path)) content_inner_dir = helper.getDirname(content_inner_path) if os.path.isfile(content_path): try: # Check if file is newer than what we have if not force and old_content and not self.site.settings.get("own"): for line in open(content_path): if '"modified"' not in line: continue match = re.search("([0-9\.]+),$", line.strip(" \r\n")) if match and float(match.group(1)) <= old_content.get("modified", 0): self.log.debug("%s loadContent same json file, skipping" % content_inner_path) return [], [] new_content = json.load(open(content_path)) except Exception, err: self.log.warning("%s load error: %s" % (content_path, Debug.formatException(err))) return [], [] else:
class ContentManager(object): def __init__(self, site): self.site = site self.log = self.site.log self.contents = ContentDbDict(site) self.hashfield = PeerHashfield() self.has_optional_files = False # Load all content.json files def loadContents(self): if len(self.contents) == 0: self.log.debug("ContentDb not initialized, load files from filesystem") 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"] elif self.contents.get("content.json") and self.getOptionalSize() > 0: self.site.storage.updateBadFiles() # No hashfield cache created yet self.has_optional_files = bool(self.hashfield) self.contents.db.initSite(self.site) # 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): content_inner_path = content_inner_path.strip("/") # Remove / from beginning old_content = self.contents.get(content_inner_path) content_path = self.site.storage.getPath(content_inner_path) content_dir = helper.getDirname(self.site.storage.getPath(content_inner_path)) content_inner_dir = helper.getDirname(content_inner_path) if os.path.isfile(content_path): try: # Check if file is newer than what we have if not force and old_content and not self.site.settings.get("own"): for line in open(content_path): if '"modified"' not in line: continue match = re.search("([0-9\.]+),$", line.strip(" \r\n")) if match and float(match.group(1)) <= old_content.get("modified", 0): self.log.debug("%s loadContent same json file, skipping" % content_inner_path) return [], [] new_content = json.load(open(content_path)) except Exception, err: self.log.warning("%s load error: %s" % (content_path, Debug.formatException(err))) return [], [] else:
def __init__(self, site): self.site = site self.log = self.site.log self.contents = {} # Known content.json (without files and includes) self.hashfield = PeerHashfield() self.site.onFileDone.append(lambda inner_path: self.addOptionalFile(inner_path)) self.loadContent(add_bad_files=False, delete_removed_files=False) self.site.settings["size"] = self.getTotalSize()
def __init__(self, site): self.site = site self.log = self.site.log self.contents = ContentDbDict(site) self.hashfield = PeerHashfield() self.has_optional_files = False