예제 #1
0
	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)
예제 #2
0
    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)
예제 #3
0
	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)
예제 #4
0
파일: profile.py 프로젝트: devdej/OctoPrint
	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)