groundwork for plate processing contained in 3mf file, will store contents of plate_1.json in OctoPrint metadata for that file

This commit is contained in:
jneilliii 2024-11-04 22:24:39 -05:00
parent 884101c0ba
commit 5633d6f6ea

View File

@ -8,6 +8,8 @@ from contextlib import contextmanager
import flask import flask
import logging.handlers import logging.handlers
from urllib.parse import quote as urlquote from urllib.parse import quote as urlquote
import os
import zipfile
import octoprint.printer import octoprint.printer
import octoprint.server import octoprint.server
@ -135,6 +137,15 @@ class BambuPrintPlugin(
def on_event(self, event, payload): def on_event(self, event, payload):
if event == Events.TRANSFER_DONE: if event == Events.TRANSFER_DONE:
self._printer.commands("M20 L T", force=True) self._printer.commands("M20 L T", force=True)
elif event == Events.FILE_ADDED:
if payload["operation"] == "add" and "3mf" in payload["type"]:
file_container = os.path.join(self._settings.getBaseFolder("uploads"), payload["path"])
with zipfile.ZipFile(file_container) as z:
with z.open("Metadata/plate_1.json", "r") as json_data:
plate_data = json.load(json_data)
if plate_data:
self._file_manager.set_additional_metadata("sdcard", payload["path"], "plate_data", plate_data, overwrite=True)
def support_3mf_files(self): def support_3mf_files(self):
return {"machinecode": {"3mf": ["3mf"]}} return {"machinecode": {"3mf": ["3mf"]}}