Skip to content

Commit b1d9080

Browse files
committed
New Version 1.5.0
- PR #204, #201 redesign of the Spool-Selection in the sidebar. Huge thanks to @TiziG @MarloSM - E #125 New field "Serialnumber" - E Spool selection from Edit-Dialog - E #141 New Filter: Material, Vendor and Color - E #44 Sidebar filament usage in grams instead of volume - B #199, #198, #163, #156 some QR-Code optimisations - B #197, #196, #188, #181, #178, #177, #172, #162, #142, Some UI optimisations - B #194 CSV import, behind reverse proxy - B #175 Confirm dialog not shown
1 parent 0715e5f commit b1d9080

20 files changed

+1447
-958
lines changed

octoprint_SpoolManager/DatabaseManager.py

+80-6
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from peewee import *
1313

1414
from octoprint_SpoolManager.api import Transformer
15+
from octoprint_SpoolManager.common import StringUtils
1516
from octoprint_SpoolManager.models.BaseModel import BaseModel
1617
from octoprint_SpoolManager.models.PluginMetaDataModel import PluginMetaDataModel
1718
from octoprint_SpoolManager.models.SpoolModel import SpoolModel
@@ -280,7 +281,6 @@ def _executeSQLQuietly(self, cursor, sqlStatement):
280281
self._logger.error(sqlStatement)
281282
self._logger.exception(e)
282283

283-
284284
def _upgradeFrom4To5_HACK(self, sqlStatement):
285285

286286
connection = sqlite3.connect(self._databaseSettings.fileLocation)
@@ -814,13 +814,72 @@ def databaseCallMethode():
814814
if (tableQuery == None):
815815
return SpoolModel.select().order_by(SpoolModel.created.desc())
816816

817-
offset = int(tableQuery["from"])
818-
limit = int(tableQuery["to"])
819817
sortColumn = tableQuery["sortColumn"]
820818
sortOrder = tableQuery["sortOrder"]
821819
filterName = tableQuery["filterName"]
822820

823-
myQuery = SpoolModel.select().offset(offset).limit(limit)
821+
if ("selectedPageSize" in tableQuery and StringUtils.to_native_str(tableQuery["selectedPageSize"]) == "all"):
822+
myQuery = SpoolModel.select()
823+
else:
824+
offset = int(tableQuery["from"])
825+
limit = int(tableQuery["to"])
826+
myQuery = SpoolModel.select().offset(offset).limit(limit)
827+
828+
if ("materialFilter" in tableQuery):
829+
materialFilter = tableQuery["materialFilter"]
830+
vendorFilter = tableQuery["vendorFilter"]
831+
colorFilter = tableQuery["colorFilter"]
832+
833+
# materialFilter
834+
# u'ABS,PLA'
835+
# u''
836+
# u'all'
837+
materialFilter = StringUtils.to_native_str(materialFilter)
838+
if (materialFilter != "all"):
839+
if (StringUtils.isEmpty(colorFilter)):
840+
myQuery = myQuery.where( (SpoolModel.material == '') )
841+
else:
842+
allMaterials = materialFilter.split(",")
843+
myQuery = myQuery.where(SpoolModel.material.in_(allMaterials))
844+
# for material in allMaterials:
845+
# myQuery = myQuery.orwhere((SpoolModel.material == material))
846+
# vendorFilter
847+
# u'MatterMost,TheFactory'
848+
# u''
849+
# u'all'
850+
vendorFilter = StringUtils.to_native_str(vendorFilter)
851+
if (vendorFilter != "all"):
852+
if (StringUtils.isEmpty(vendorFilter)):
853+
myQuery = myQuery.where( (SpoolModel.vendor == '') )
854+
else:
855+
allVendors = vendorFilter.split(",")
856+
myQuery = myQuery.where(SpoolModel.vendor.in_(allVendors))
857+
# for vendor in allVendors:
858+
# myQuery = myQuery.orwhere((SpoolModel.vendor == vendor))
859+
# colorFilter
860+
# u'#ff0000;red,#ff0000;keinRot,#ff0000;deinRot,#ff0000;meinRot,#ffff00;yellow'
861+
# u''
862+
# u'all'
863+
colorFilter = StringUtils.to_native_str(colorFilter)
864+
if (colorFilter != "all" and StringUtils.isNotEmpty(colorFilter)):
865+
allColorObjects = colorFilter.split(",")
866+
allColors = []
867+
allColorNames = []
868+
for colorObject in allColorObjects:
869+
colorCodeColorName = colorObject.split(";")
870+
color = colorCodeColorName[0]
871+
colorName = colorCodeColorName[1]
872+
allColors.append(color)
873+
allColorNames.append(colorName)
874+
myQuery = myQuery.where(SpoolModel.color.in_(allColors))
875+
myQuery = myQuery.where(SpoolModel.colorName.in_(allColorNames))
876+
877+
#
878+
# myQuery = myQuery.orwhere( (SpoolModel.color == color) & (SpoolModel.colorName == colorName) )
879+
pass
880+
881+
mySqlText = myQuery.sql()
882+
824883
if (filterName == "hideEmptySpools"):
825884
myQuery = myQuery.where( (SpoolModel.remainingWeight > 0) | (SpoolModel.remainingWeight == None))
826885
if (filterName == "hideInactiveSpools"):
@@ -943,7 +1002,6 @@ def databaseCallMethode():
9431002
def loadCatalogMaterials(self, withReusedConnection=False):
9441003
def databaseCallMethode():
9451004
result = set()
946-
result.add("")
9471005
myQuery = SpoolModel.select(SpoolModel.material).distinct()
9481006
for spool in myQuery:
9491007
value = spool.material
@@ -956,7 +1014,6 @@ def databaseCallMethode():
9561014
def loadCatalogLabels(self, tableQuery, withReusedConnection=False):
9571015
def databaseCallMethode():
9581016
result = set()
959-
result.add("")
9601017
myQuery = SpoolModel.select(SpoolModel.labels).distinct()
9611018
for spool in myQuery:
9621019
value = spool.labels
@@ -968,6 +1025,23 @@ def databaseCallMethode():
9681025

9691026
return self._handleReusableConnection(databaseCallMethode, withReusedConnection, "loadCatalogLabels", set())
9701027

1028+
def loadCatalogColors(self, withReusedConnection=False):
1029+
def databaseCallMethode():
1030+
result = []
1031+
myQuery = SpoolModel.select(SpoolModel.color, SpoolModel.colorName).distinct()
1032+
for spool in myQuery:
1033+
value = spool.color
1034+
if (value != None):
1035+
colorInfo = {
1036+
"colorId": spool.color + ";" + spool.colorName,
1037+
"color": spool.color,
1038+
"colorName": spool.colorName
1039+
}
1040+
result.append(colorInfo)
1041+
return result;
1042+
1043+
return self._handleReusableConnection(databaseCallMethode, withReusedConnection, "loadCatalogColors", set())
1044+
9711045
def deleteSpool(self, databaseId, withReusedConnection=False):
9721046
def databaseCallMethode():
9731047
with self._database.atomic() as transaction: # Opens new transaction.

0 commit comments

Comments
 (0)