def save(self, profile, allow_overwrite=False, make_default=False): if "id" in profile: identifier = profile["id"] elif "name" in profile: identifier = profile["name"] else: raise InvalidProfileError("profile must contain either id or name") identifier = self._sanitize(identifier) profile["id"] = identifier profile = dict_sanitize(profile, self.__class__.default) if identifier == "_default": default_profile = dict_merge(self._load_default(), profile) if not self._ensure_valid_profile(default_profile): raise InvalidProfileError() settings().set(["printerProfiles", "defaultProfile"], default_profile, defaults=dict(printerProfiles=dict(defaultProfile=self.__class__.default))) settings().save() else: self._save_to_path(self._get_profile_path(identifier), profile, allow_overwrite=allow_overwrite) if make_default: settings().set(["printerProfiles", "default"], identifier) if self._current is not None and self._current["id"] == identifier: self.select(identifier) return self.get(identifier)
def save(self, profile, allow_overwrite=False, make_default=False): if "id" in profile: identifier = profile["id"] elif "name" in profile: identifier = profile["name"] else: raise InvalidProfileError("profile must contain either id or name") identifier = self._sanitize(identifier) profile["id"] = identifier self._migrate_profile(profile) profile = dict_sanitize(profile, self.__class__.default) profile = dict_merge(self.__class__.default, profile) self._save_to_path(self._get_profile_path(identifier), profile, allow_overwrite=allow_overwrite) if make_default: settings().set(["printerProfiles", "default"], identifier) settings().save() if self._current is not None and self._current["id"] == identifier: self.select(identifier) return self.get(identifier)
def save(self, profile, allow_overwrite=False, make_default=False, trigger_event=False): if "id" in profile: identifier = profile["id"] elif "name" in profile: identifier = profile["name"] else: raise InvalidProfileError("profile must contain either id or name") identifier = self._sanitize(identifier) profile["id"] = identifier self._migrate_profile(profile) profile = dict_sanitize(profile, self.__class__.default) profile = dict_merge(self.__class__.default, profile) path = self._get_profile_path(identifier) is_overwrite = os.path.exists(path) self._save_to_path(path, profile, allow_overwrite=allow_overwrite) if make_default: settings().set(["printerProfiles", "default"], identifier) settings().save() if self._current is not None and self._current["id"] == identifier: self.select(identifier) from octoprint.events import eventManager, Events if trigger_event: payload = dict(identifier=identifier) event = Events.PRINTER_PROFILE_MODIFIED if is_overwrite else Events.PRINTER_PROFILE_ADDED eventManager().fire(event, payload=payload) return self.get(identifier)