|
31 | 31 | from octoprint.settings import settings |
32 | 32 | from octoprint.events import Events as OctoPrintEvents |
33 | 33 |
|
| 34 | +from octoprint_mrbeam.rest_handler.update_handler import UpdateRestHandlerMixin |
| 35 | +from octoprint_mrbeam.util.connectivity_checker import ConnectivityChecker |
| 36 | + |
34 | 37 | IS_X86 = platform.machine() == "x86_64" |
| 38 | +from ._version import get_versions |
| 39 | + |
| 40 | +__version__ = get_versions()["version"] |
| 41 | +del get_versions |
35 | 42 |
|
36 | | -from octoprint_mrbeam.__version import __version__ |
37 | 43 | from octoprint_mrbeam.iobeam.iobeam_handler import ioBeamHandler, IoBeamEvents |
38 | 44 | from octoprint_mrbeam.iobeam.onebutton_handler import oneButtonHandler |
39 | 45 | from octoprint_mrbeam.iobeam.interlock_handler import interLockHandler |
|
43 | 49 | from octoprint_mrbeam.iobeam.hw_malfunction_handler import hwMalfunctionHandler |
44 | 50 | from octoprint_mrbeam.iobeam.laserhead_handler import laserheadHandler |
45 | 51 | from octoprint_mrbeam.iobeam.compressor_handler import compressor_handler |
| 52 | +from octoprint_mrbeam.jinja.filter_loader import FilterLoader |
46 | 53 | from octoprint_mrbeam.user_notification_system import user_notification_system |
47 | 54 | from octoprint_mrbeam.analytics.analytics_handler import analyticsHandler |
48 | 55 | from octoprint_mrbeam.analytics.usage_handler import usageHandler |
|
53 | 60 | from octoprint_mrbeam.mrb_logger import init_mrb_logger, mrb_logger |
54 | 61 | from octoprint_mrbeam.migrate import migrate |
55 | 62 | from octoprint_mrbeam.os_health_care import os_health_care |
| 63 | +from octoprint_mrbeam.rest_handler.docs_handler import DocsRestHandlerMixin |
| 64 | +from octoprint_mrbeam.services.settings_service import SettingsService |
| 65 | +from octoprint_mrbeam.services.burger_menu_service import BurgerMenuService |
| 66 | +from octoprint_mrbeam.services.document_service import DocumentService |
56 | 67 | from octoprint_mrbeam.wizard_config import WizardConfig |
57 | 68 | from octoprint_mrbeam.printing.profile import ( |
58 | 69 | laserCutterProfileManager, |
|
64 | 75 | get_update_information, |
65 | 76 | switch_software_channel, |
66 | 77 | software_channels_available, |
67 | | - SW_UPDATE_TIER_PROD, |
68 | | - SW_UPDATE_TIER_BETA, |
69 | | - SW_UPDATE_TIER_DEV, |
70 | 78 | BEAMOS_LEGACY_DATE, |
| 79 | + SWUpdateTier, |
71 | 80 | ) |
72 | 81 | from octoprint_mrbeam.support import check_support_mode, check_calibration_tool_mode |
73 | 82 | from octoprint_mrbeam.cli import get_cli_commands |
@@ -110,6 +119,8 @@ class MrBeamPlugin( |
110 | 119 | octoprint.plugin.SlicerPlugin, |
111 | 120 | octoprint.plugin.ShutdownPlugin, |
112 | 121 | octoprint.plugin.EnvironmentDetectionPlugin, |
| 122 | + UpdateRestHandlerMixin, |
| 123 | + DocsRestHandlerMixin, |
113 | 124 | ): |
114 | 125 | # CONSTANTS |
115 | 126 | ENV_PROD = "PROD" |
@@ -186,6 +197,9 @@ def __init__(self): |
186 | 197 | # MrBeam Events needs to be registered in OctoPrint in order to be send to the frontend later on |
187 | 198 | MrBeamEvents.register_with_octoprint() |
188 | 199 |
|
| 200 | + # Jinja custom filters need to be loaded already on instance creation |
| 201 | + FilterLoader.load_custom_jinja_filters() |
| 202 | + |
189 | 203 | # inside initialize() OctoPrint is already loaded, not assured during __init__()! |
190 | 204 | def initialize(self): |
191 | 205 | self._plugin_version = __version__ |
@@ -256,6 +270,10 @@ def initialize(self): |
256 | 270 | self.mrbeam_plugin_initialized = True |
257 | 271 | self.fire_event(MrBeamEvents.MRB_PLUGIN_INITIALIZED) |
258 | 272 |
|
| 273 | + # move octoprints connectivity checker to a new var so we can use our abstraction |
| 274 | + self._octoprint_connectivity_checker = self._connectivity_checker |
| 275 | + self._connectivity_checker = ConnectivityChecker(self) |
| 276 | + |
259 | 277 | self._do_initial_log() |
260 | 278 |
|
261 | 279 | def _init_frontend_logger(self): |
@@ -368,7 +386,7 @@ def get_settings_defaults(self): |
368 | 386 | terminalMaxLines=2000, |
369 | 387 | env=self.ENV_PROD, |
370 | 388 | load_gremlins=False, |
371 | | - software_tier=SW_UPDATE_TIER_PROD, |
| 389 | + software_tier=SWUpdateTier.STABLE.value, |
372 | 390 | iobeam_disable_warnings=False, # for development on non-MrBeam devices |
373 | 391 | suppress_migrations=False, # for development on non-MrBeam devices |
374 | 392 | support_mode=False, |
@@ -454,7 +472,9 @@ def on_settings_load(self): |
454 | 472 | dev=dict( |
455 | 473 | env=self.get_env(), |
456 | 474 | software_tier=self._settings.get(["dev", "software_tier"]), |
457 | | - software_tiers_available=software_channels_available(self), |
| 475 | + software_tiers_available=[ |
| 476 | + channel for channel in software_channels_available(self) |
| 477 | + ], |
458 | 478 | terminalMaxLines=self._settings.get(["dev", "terminalMaxLines"]), |
459 | 479 | ), |
460 | 480 | gcode_nextgen=dict( |
@@ -694,7 +714,7 @@ def get_assets(self): |
694 | 714 | "css/hopscotch.min.css", |
695 | 715 | "css/wizard.css", |
696 | 716 | "css/tab_messages.css", |
697 | | - "css/software_update.css" |
| 717 | + "css/software_update.css", |
698 | 718 | ], |
699 | 719 | less=["less/mrbeam.less"], |
700 | 720 | ) |
@@ -818,6 +838,10 @@ def on_ui_render(self, now, request, render_kwargs): |
818 | 838 | terminalEnabled=self._settings.get(["terminal"]) or self.support_mode, |
819 | 839 | lasersafety_confirmation_dialog_version=self.LASERSAFETY_CONFIRMATION_DIALOG_VERSION, |
820 | 840 | lasersafety_confirmation_dialog_language=language, |
| 841 | + settings_model=SettingsService(self._logger, DocumentService(self._logger)).get_template_settings_model( |
| 842 | + self.get_model_id()), |
| 843 | + burger_menu_model=BurgerMenuService(self._logger, DocumentService(self._logger)).get_burger_menu_model( |
| 844 | + self.get_model_id()), |
821 | 845 | ) |
822 | 846 | ) |
823 | 847 | r = make_response(render_template("mrbeam_ui_index.jinja2", **render_kwargs)) |
@@ -2957,10 +2981,10 @@ def __calc_time_ntp_offset(self, log_out_of_sync=False): |
2957 | 2981 | timer.start() |
2958 | 2982 |
|
2959 | 2983 | def is_beta_channel(self): |
2960 | | - return self._settings.get(["dev", "software_tier"]) == SW_UPDATE_TIER_BETA |
| 2984 | + return self._settings.get(["dev", "software_tier"]) == SWUpdateTier.BETA |
2961 | 2985 |
|
2962 | 2986 | def is_develop_channel(self): |
2963 | | - return self._settings.get(["dev", "software_tier"]) == SW_UPDATE_TIER_DEV |
| 2987 | + return self._settings.get(["dev", "software_tier"]) == SWUpdateTier.DEV |
2964 | 2988 |
|
2965 | 2989 | def _get_mac_addresses(self): |
2966 | 2990 | if not self._mac_addrs: |
|
0 commit comments