12
12
from peewee import *
13
13
14
14
from octoprint_SpoolManager .api import Transformer
15
+ from octoprint_SpoolManager .common import StringUtils
15
16
from octoprint_SpoolManager .models .BaseModel import BaseModel
16
17
from octoprint_SpoolManager .models .PluginMetaDataModel import PluginMetaDataModel
17
18
from octoprint_SpoolManager .models .SpoolModel import SpoolModel
@@ -280,7 +281,6 @@ def _executeSQLQuietly(self, cursor, sqlStatement):
280
281
self ._logger .error (sqlStatement )
281
282
self ._logger .exception (e )
282
283
283
-
284
284
def _upgradeFrom4To5_HACK (self , sqlStatement ):
285
285
286
286
connection = sqlite3 .connect (self ._databaseSettings .fileLocation )
@@ -814,13 +814,72 @@ def databaseCallMethode():
814
814
if (tableQuery == None ):
815
815
return SpoolModel .select ().order_by (SpoolModel .created .desc ())
816
816
817
- offset = int (tableQuery ["from" ])
818
- limit = int (tableQuery ["to" ])
819
817
sortColumn = tableQuery ["sortColumn" ]
820
818
sortOrder = tableQuery ["sortOrder" ]
821
819
filterName = tableQuery ["filterName" ]
822
820
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
+
824
883
if (filterName == "hideEmptySpools" ):
825
884
myQuery = myQuery .where ( (SpoolModel .remainingWeight > 0 ) | (SpoolModel .remainingWeight == None ))
826
885
if (filterName == "hideInactiveSpools" ):
@@ -943,7 +1002,6 @@ def databaseCallMethode():
943
1002
def loadCatalogMaterials (self , withReusedConnection = False ):
944
1003
def databaseCallMethode ():
945
1004
result = set ()
946
- result .add ("" )
947
1005
myQuery = SpoolModel .select (SpoolModel .material ).distinct ()
948
1006
for spool in myQuery :
949
1007
value = spool .material
@@ -956,7 +1014,6 @@ def databaseCallMethode():
956
1014
def loadCatalogLabels (self , tableQuery , withReusedConnection = False ):
957
1015
def databaseCallMethode ():
958
1016
result = set ()
959
- result .add ("" )
960
1017
myQuery = SpoolModel .select (SpoolModel .labels ).distinct ()
961
1018
for spool in myQuery :
962
1019
value = spool .labels
@@ -968,6 +1025,23 @@ def databaseCallMethode():
968
1025
969
1026
return self ._handleReusableConnection (databaseCallMethode , withReusedConnection , "loadCatalogLabels" , set ())
970
1027
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
+
971
1045
def deleteSpool (self , databaseId , withReusedConnection = False ):
972
1046
def databaseCallMethode ():
973
1047
with self ._database .atomic () as transaction : # Opens new transaction.
0 commit comments