diff --git a/octoprint_bambu_printer/__init__.py b/octoprint_bambu_printer/__init__.py index dcf782e..400f08e 100644 --- a/octoprint_bambu_printer/__init__.py +++ b/octoprint_bambu_printer/__init__.py @@ -13,13 +13,14 @@ class BambuPrintPlugin(octoprint.plugin.SettingsPlugin, octoprint.plugin.TemplatePlugin, octoprint.plugin.AssetPlugin, - octoprint.plugin.EventHandlerPlugin): + octoprint.plugin.EventHandlerPlugin, + octoprint.plugin.SimpleApiPlugin): def get_assets(self): return {'js': ["js/bambu_printer.js"]} def get_template_configs(self): - return [{"type": "settings", "custom_bindings": False}] #, {"type": "generic", "custom_bindings": True, "template": "bambu_printer.jinja2"}] + return [{"type": "settings", "custom_bindings": True}] #, {"type": "generic", "custom_bindings": True, "template": "bambu_printer.jinja2"}] def get_settings_defaults(self): return {"device_type": "X1C", @@ -40,6 +41,20 @@ def get_settings_defaults(self): "always_use_default_options": False } + def is_api_adminonly(self): + return True + + def get_api_commands(self): + return {"register": ["email", "password", "region", "auth_token"]} + def on_api_command(self, command, data): + import flask + if command == "register": + if "email" in data and "password" in data and "region" in data and "auth_token" in data: + self._logger.info(f"Registering user {data['email']}") + from pybambu import BambuCloud + bambu_cloud = BambuCloud(data["region"], data["email"], data["password"], data["auth_token"]) + bambu_cloud.login(data["region"], data["email"], data["password"]) + return flask.jsonify({"auth_token": bambu_cloud.auth_token, "username": bambu_cloud.username}) def on_event(self, event, payload): if event == Events.TRANSFER_DONE: self._printer.commands("M20 L T", force=True) @@ -74,6 +89,9 @@ def process(): return filename + def get_template_vars(self): + return {"plugin_version": self._plugin_version} + def virtual_printer_factory(self, comm_instance, port, baudrate, read_timeout): if not port == "BAMBU": return None diff --git a/octoprint_bambu_printer/static/js/bambu_printer.js b/octoprint_bambu_printer/static/js/bambu_printer.js index ebe1b51..ecebec2 100644 --- a/octoprint_bambu_printer/static/js/bambu_printer.js +++ b/octoprint_bambu_printer/static/js/bambu_printer.js @@ -5,13 +5,28 @@ * License: AGPLv3 */ -$(function() { +$(function () { function Bambu_printerViewModel(parameters) { var self = this; self.settingsViewModel = parameters[0]; self.filesViewModel = parameters[1]; + self.getAuthToken = function (data) { + self.settingsViewModel.settings.plugins.bambu_printer.auth_token(""); + OctoPrint.simpleApiCommand("bambu_printer", "register", { + "email": self.settingsViewModel.settings.plugins.bambu_printer.email(), + "password": $("#bambu_cloud_password").val(), + "region": self.settingsViewModel.settings.plugins.bambu_printer.region(), + "auth_token": self.settingsViewModel.settings.plugins.bambu_printer.auth_token() + }) + .done(function (response) { + console.log(response); + self.settingsViewModel.settings.plugins.bambu_printer.auth_token(response.auth_token); + self.settingsViewModel.settings.plugins.bambu_printer.username(response.username); + }); + }; + /*$('#files div.upload-buttons > span.fileinput-button:first, #files div.folder-button').remove(); $('#files div.upload-buttons > span.fileinput-button:first').removeClass('span6').addClass('input-block-level'); @@ -70,8 +85,8 @@ $(function() { OCTOPRINT_VIEWMODELS.push({ construct: Bambu_printerViewModel, // ViewModels your plugin depends on, e.g. loginStateViewModel, settingsViewModel, ... - dependencies: [ "settingsViewModel", "filesViewModel" ], + dependencies: ["settingsViewModel", "filesViewModel"], // Elements to bind to, e.g. #settings_plugin_bambu_printer, #tab_plugin_bambu_printer, ... - elements: [ "#bambu_printer_print_options" ] + elements: ["#bambu_printer_print_options", "#settings_plugin_bambu_printer"] }); }); diff --git a/octoprint_bambu_printer/templates/bambu_printer_settings.jinja2 b/octoprint_bambu_printer/templates/bambu_printer_settings.jinja2 index 727c081..489e7ed 100644 --- a/octoprint_bambu_printer/templates/bambu_printer_settings.jinja2 +++ b/octoprint_bambu_printer/templates/bambu_printer_settings.jinja2 @@ -1,40 +1,72 @@ -

Virtual Printer

+

Bambu Printer Settings {{ _('Version') }} {{ plugin_bambu_printer_plugin_version }}

-
- +
- +
- + +
+
+
+
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + {{ _('Login') }} +
+
+
+
+ +
+
- - - - - - + + + + + +
{#
diff --git a/octoprint_bambu_printer/virtual.py b/octoprint_bambu_printer/virtual.py index 15157cf..3408f9c 100644 --- a/octoprint_bambu_printer/virtual.py +++ b/octoprint_bambu_printer/virtual.py @@ -215,7 +215,7 @@ async def _create_connection_async(self): self.bambu = BambuClient(device_type=self._settings.get(["device_type"]), serial=self._settings.get(["serial"]), host=self._settings.get(["host"]), - username=self._settings.get(["username"]), + username="bblp" if self._settings.get_boolean(["local_mqtt"]) else self._settings.get(["username"]), access_code=self._settings.get(["access_code"]), local_mqtt=self._settings.get_boolean(["local_mqtt"]), region=self._settings.get(["region"]), diff --git a/setup.py b/setup.py index 69135d6..28550fe 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,7 @@ plugin_name = "OctoPrint-BambuPrinter" # The plugin's version. Can be overwritten within OctoPrint's internal data via __plugin_version__ in the plugin module -plugin_version = "0.0.16" +plugin_version = "0.0.17" # The plugin's description. Can be overwritten within OctoPrint's internal data via __plugin_description__ in the plugin # module