Example #1
0
			def on_install_plugins(plugins):
				if not plugins:
					return

				force_user = settings.global_get_boolean(["plugins", "pluginmanager", "pip_force_user"])
				pip_args = settings.global_get(["plugins", "pluginmanager", "pip_args"])

				def log(line):
					click.echo(u"\t{}".format(line))

				for plugin in plugins:
					octoprint_compatible = is_octoprint_compatible(*plugin["compatibility"]["octoprint"])
					os_compatible = is_os_compatible(plugin["compatibility"]["os"])
					compatible = octoprint_compatible and os_compatible
					if not compatible:
						if not octoprint_compatible and not os_compatible:
							click.echo(u"Cannot install plugin {}, it is incompatible to this version of "
							           u"OctoPrint and the underlying operating system".format(plugin["id"]))
						elif not octoprint_compatible:
							click.echo(u"Cannot install plugin {}, it is incompatible to this version of "
							           u"OctoPrint".format(plugin["id"]))
						elif not os_compatible:
							click.echo(u"Cannot install plugin {}, it is incompatible to the underlying "
							           u"operating system".format(plugin["id"]))
						continue

					click.echo(u"Installing plugin {}".format(plugin["id"]))
					self.__class__._install_plugin(plugin,
					                               force_user=force_user,
					                               pip_args=pip_args,
					                               on_log=log)
Example #2
0
    def get_assets(self):
        # OctoPrint 1.5.0+ bundles FontAwesome 5, earlier versions do not
        css_assets = ["css/eeprom_marlin.css"]
        if is_octoprint_compatible("<1.5.0"):
            css_assets += ["css/fontawesome5_stripped.css"]

        return {"js": ["js/eeprom_marlin.js"], "css": css_assets}
Example #3
0
		def on_install_plugins(plugins):
			force_user = self._settings.global_get_boolean(["plugins", "pluginmanager", "pip_force_user"])
			pip_args = self._settings.global_get(["plugins", "pluginmanager", "pip_args"])

			def on_log(line):
				self._logger.info(line)
				self._send_client_message("logline", dict(line=line, type="stdout"))

			for plugin in plugins:
				octoprint_compatible = is_octoprint_compatible(*plugin["compatibility"]["octoprint"])
				os_compatible = is_os_compatible(plugin["compatibility"]["os"])
				compatible = octoprint_compatible and os_compatible
				if not compatible:
					if not octoprint_compatible and not os_compatible:
						self._logger.warn(u"Cannot install plugin {}, it is incompatible to this version "
						                  u"of OctoPrint and the underlying operating system".format(plugin["id"]))
					elif not octoprint_compatible:
						self._logger.warn(u"Cannot install plugin {}, it is incompatible to this version "
						                  u"of OctoPrint".format(plugin["id"]))
					elif not os_compatible:
						self._logger.warn(u"Cannot install plugin {}, it is incompatible to the underlying "
						                  u"operating system".format(plugin["id"]))
					self._send_client_message("plugin_incompatible", dict(plugin=plugin["id"],
					                                                      octoprint_compatible=octoprint_compatible,
					                                                      os_compatible=os_compatible))
					continue

				self._logger.info(u"Installing plugin {}".format(plugin["id"]))
				self._send_client_message("installing_plugin", dict(plugin=plugin["id"]))
				self.__class__._install_plugin(plugin,
				                               force_user=force_user,
				                               pip_args=pip_args,
				                               on_log=on_log)
Example #4
0
	def process_blacklist(entries):
		result = []

		if not isinstance(entries, list):
			return result

		for entry in entries:
			if not "plugin" in entry:
				continue

			if "octoversions" in entry and not is_octoprint_compatible(*entry["octoversions"]):
				continue

			if "version" in entry:
				logger.debug("Blacklisted plugin: {}, version: {}".format(entry["plugin"], entry["version"]))
				result.append((entry["plugin"], entry["version"]))
			elif "versions" in entry:
				logger.debug("Blacklisted plugin: {}, versions: {}".format(entry["plugin"], ", ".join(entry["versions"])))
				for version in entry["versions"]:
					result.append((entry["plugin"], version))
			else:
				logger.debug("Blacklisted plugin: {}".format(entry["plugin"]))
				result.append(entry["plugin"])

		return result
Example #5
0
	def get_update_information(self):
		data = dict(
				displayName="Backup Scheduler",
				displayVersion=self._plugin_version,

				# version check: github repository
				type="github_release",
				user="******",
				repo="OctoPrint-BackupScheduler",
				current=self._plugin_version,
				stable_branch=dict(
					name="Stable", branch="master", comittish=["master"]
				),
				prerelease_branches=[
					dict(
						name="Release Candidate",
						branch="rc",
						comittish=["rc", "master"],
					)
				],
				# update method: pip
				pip="https://github.com/jneilliii/OctoPrint-BackupScheduler/archive/{target_version}.zip"
			)

		# if octoprint version is less than 1.6.0, lock update check to specific branch
		if not version.is_octoprint_compatible(">=1.6.0"):
			data['type'] = 'github_commit'
			data['branch'] = '0.0.6'

		return dict(backupscheduler=data)
Example #6
0
			def on_install_plugins(plugins):
				if not plugins:
					return

				force_user = settings.global_get_boolean(["plugins", "pluginmanager", "pip_force_user"])
				pip_args = settings.global_get(["plugins", "pluginmanager", "pip_args"])

				def log(line):
					click.echo("\t{}".format(line))

				for plugin in plugins:
					octoprint_compatible = is_octoprint_compatible(*plugin["compatibility"]["octoprint"])
					os_compatible = is_os_compatible(plugin["compatibility"]["os"])
					compatible = octoprint_compatible and os_compatible
					if not compatible:
						if not octoprint_compatible and not os_compatible:
							click.echo("Cannot install plugin {}, it is incompatible to this version of "
							           "OctoPrint and the underlying operating system".format(plugin["id"]))
						elif not octoprint_compatible:
							click.echo("Cannot install plugin {}, it is incompatible to this version of "
							           "OctoPrint".format(plugin["id"]))
						elif not os_compatible:
							click.echo("Cannot install plugin {}, it is incompatible to the underlying "
							           "operating system".format(plugin["id"]))
						continue

					click.echo("Installing plugin {}".format(plugin["id"]))
					self.__class__._install_plugin(plugin,
					                               force_user=force_user,
					                               pip_args=pip_args,
					                               on_log=log)
Example #7
0
		def on_install_plugins(plugins):
			force_user = self._settings.global_get_boolean(["plugins", "pluginmanager", "pip_force_user"])
			pip_args = self._settings.global_get(["plugins", "pluginmanager", "pip_args"])

			def on_log(line):
				self._logger.info(line)
				self._send_client_message("logline", dict(line=line, type="stdout"))

			for plugin in plugins:
				octoprint_compatible = is_octoprint_compatible(*plugin["compatibility"]["octoprint"])
				os_compatible = is_os_compatible(plugin["compatibility"]["os"])
				compatible = octoprint_compatible and os_compatible
				if not compatible:
					if not octoprint_compatible and not os_compatible:
						self._logger.warn("Cannot install plugin {}, it is incompatible to this version "
						                  "of OctoPrint and the underlying operating system".format(plugin["id"]))
					elif not octoprint_compatible:
						self._logger.warn("Cannot install plugin {}, it is incompatible to this version "
						                  "of OctoPrint".format(plugin["id"]))
					elif not os_compatible:
						self._logger.warn("Cannot install plugin {}, it is incompatible to the underlying "
						                  "operating system".format(plugin["id"]))
					self._send_client_message("plugin_incompatible", dict(plugin=plugin["id"],
					                                                      octoprint_compatible=octoprint_compatible,
					                                                      os_compatible=os_compatible))
					continue

				self._logger.info("Installing plugin {}".format(plugin["id"]))
				self._send_client_message("installing_plugin", dict(plugin=plugin["id"]))
				self.__class__._install_plugin(plugin,
				                               force_user=force_user,
				                               pip_args=pip_args,
				                               on_log=on_log)
Example #8
0
        def map_repository_entry(entry):
            result = copy.deepcopy(entry)

            if not "follow_dependency_links" in result:
                result["follow_dependency_links"] = False

            result["is_compatible"] = dict(octoprint=True, os=True)

            if "compatibility" in entry:
                if "octoprint" in entry["compatibility"] and entry[
                        "compatibility"][
                            "octoprint"] is not None and isinstance(
                                entry["compatibility"]["octoprint"],
                                (list, tuple)) and len(
                                    entry["compatibility"]["octoprint"]):
                    result["is_compatible"][
                        "octoprint"] = is_octoprint_compatible(
                            *entry["compatibility"]["octoprint"],
                            octoprint_version=octoprint_version)

                if "os" in entry["compatibility"] and entry["compatibility"][
                        "os"] is not None and isinstance(
                            entry["compatibility"]["os"],
                            (list, tuple)) and len(
                                entry["compatibility"]["os"]):
                    result["is_compatible"]["os"] = self._is_os_compatible(
                        current_os, entry["compatibility"]["os"])

            return result
Example #9
0
	def process_blacklist(entries):
		result = []

		if not isinstance(entries, list):
			return result

		for entry in entries:
			if not "plugin" in entry:
				continue

			if "octoversions" in entry and not is_octoprint_compatible(*entry["octoversions"]):
				continue

			if "version" in entry:
				logger.debug("Blacklisted plugin: {}, version: {}".format(entry["plugin"], entry["version"]))
				result.append((entry["plugin"], entry["version"]))
			elif "versions" in entry:
				logger.debug("Blacklisted plugin: {}, versions: {}".format(entry["plugin"], ", ".join(entry["versions"])))
				for version in entry["versions"]:
					result.append((entry["plugin"], version))
			else:
				logger.debug("Blacklisted plugin: {}".format(entry["plugin"]))
				result.append(entry["plugin"])

		return result
Example #10
0
def __plugin_check__():
    from octoprint.util.version import is_octoprint_compatible
    compatible = is_octoprint_compatible(">={},<{}".format(
        BROKEN_VERSION, FIXED_VERSION))
    if not compatible:
        logging.getLogger(__name__).info(
            "Plugin is not needed in OctoPrint versions < 1.4.0 or >= 1.4.1")
    return compatible
def __plugin_load__():
    if not is_octoprint_compatible(__required_octoprint_version__):
        import logging
        logger = logging.getLogger(__name__)
        logger.error("OctoPrint version is not compatible ({version} required)"
                     .format(version=__required_octoprint_version__))
        return

    global __plugin_implementation__
    __plugin_implementation__ = FilamentManagerPlugin()

    global __plugin_hooks__
    __plugin_hooks__ = {
        "octoprint.plugin.softwareupdate.check_config": __plugin_implementation__.get_update_information,
        "octoprint.comm.protocol.gcode.sent": __plugin_implementation__.filament_odometer
    }
Example #12
0
		def map_repository_entry(entry):
			result = copy.deepcopy(entry)

			if not "follow_dependency_links" in result:
				result["follow_dependency_links"] = False

			result["is_compatible"] = dict(
				octoprint=True,
				os=True
			)

			if "compatibility" in entry:
				if "octoprint" in entry["compatibility"] and entry["compatibility"]["octoprint"] is not None and isinstance(entry["compatibility"]["octoprint"], (list, tuple)) and len(entry["compatibility"]["octoprint"]):
					result["is_compatible"]["octoprint"] = is_octoprint_compatible(*entry["compatibility"]["octoprint"],
					                                                               octoprint_version=octoprint_version)

				if "os" in entry["compatibility"] and entry["compatibility"]["os"] is not None and isinstance(entry["compatibility"]["os"], (list, tuple)) and len(entry["compatibility"]["os"]):
					result["is_compatible"]["os"] = self._is_os_compatible(current_os, entry["compatibility"]["os"])

			return result
Example #13
0
		def filter_relevant(notification):
			return "text" in notification and "date" in notification and \
			       ("versions" not in notification or plugin.version in notification["versions"]) and \
			       ("octoversions" not in notification or is_octoprint_compatible(*notification["octoversions"],
			                                                                      octoprint_version=octoprint_version))
 def initialize(self):
     if is_octoprint_compatible("<=1.3.6"):
         raise Exception("OctoPrint 1.3.7 or greater required.")
Example #15
0
		def filter_relevant(notification):
			return "text" in notification and "date" in notification and \
			       ("versions" not in notification or plugin.version in notification["versions"]) and \
			       ("octoversions" not in notification or is_octoprint_compatible(*notification["octoversions"],
			                                                                      octoprint_version=octoprint_version))
    ),
    "octoprint.comm.protocol.firmware.info": (
        __plugin_implementation__.on_firmware_info_received,
        100,
    ),
    "octoprint.comm.protocol.firmware.capabilities": (
        __plugin_implementation__.on_firmware_cap_received,
        100,
    ),
    "octoprint.events.register_custom_events":
    register_custom_events,
    "octoprint.access.permissions":
    __plugin_implementation__.get_additional_permissions,
}

if is_octoprint_compatible("<1.6"):
    __plugin_settings_overlay__ = {
        "appearance": {
            "components": {
                "order": {
                    "sidebar": [
                        "plugin_firmware_check_warning",
                        "plugin_firmware_check_info",
                        "connection",
                        "state",
                        "files",
                    ]
                }
            }
        }
    }
Example #17
0
###########################################
# SIMPLYPRINT OCTOPRINT VERSION CHECK     #
# SimplyPrint is only working with 1.3.12 #
# Older versions need to update           #
###########################################
try:
    from octoprint.util.version import is_octoprint_compatible
except ImportError:
    print(
        "Could not find OctoPrint, are you sure you are installing under the same python installation"
        "that OctoPrint is installed under?")
    import sys
    sys.exit(-1)

if not is_octoprint_compatible(">=1.3.12"):
    print("\n\n----------------------------------------\n\n")
    print("!! Unsupported OctoPrint version !!\n")
    print(
        "SimplyPrint requires at least OctoPrint 1.3.12 to work properly, please update your OctoPrint install\n"
    )
    print(
        "You can find out more about that here: http://simplyprint.io/redir?r=unsupported-octoprint"
    )
    print("\n")
    import sys
    sys.exit(-1)

setup_parameters = octoprint_setuptools.create_plugin_setup_parameters(
    identifier=plugin_identifier,
    package=plugin_package,
Example #18
0
def __plugin_check__():
	from octoprint.util.version import is_octoprint_compatible
	compatible = is_octoprint_compatible(">=1.6.0")
	if not compatible:
		logging.getLogger(__name__).info("Backup Scheduler requires OctoPrint 1.6.0+")
	return compatible