@@ -950,111 +950,117 @@ def blobsFromSkel(skel, valuesCache):
950950 res .update (blobsFromSkel (self ._usingSkelCache , valuesCache [name ]["rel" ]))
951951 return res
952952
953- def renderBoneStructure ( self , rendererObj = None , * args , ** kwargs ):
953+ def renderBoneStructure ( self , render = None , * args , ** kwargs ):
954954 from server .skeleton import RefSkel , skeletonByKind #prevent circular imports
955955 from server import bones
956- ret = super (relationalBone , self ).renderBoneStructure (rendererObj , * args , ** kwargs )
957956
958- if isinstance ( self , bones .hierarchyBone ):
957+ ret = super (relationalBone , self ).renderBoneStructure (render , * args , ** kwargs )
958+
959+ if isinstance (self , bones .hierarchyBone ):
959960 boneType = "hierarchy"
960- elif isinstance ( self , bones .treeItemBone ):
961+ elif isinstance (self , bones .treeItemBone ):
961962 boneType = "treeitem"
962- elif isinstance ( self , bones .treeDirBone ):
963+ elif isinstance (self , bones .treeDirBone ):
963964 boneType = "treedir"
964965 else :
965966 boneType = "relational"
966967
967- ret .update ( {
968- "type" :"%s.%s" % (boneType , self .kind ),
969- "module" :self .module ,
970- "multiple" :self .multiple ,
971- "format" :self .format ,
972- "using" :rendererObj .renderSkelStructure ( self .using () ) if self .using else None ,
973- "relskel" :rendererObj .renderSkelStructure ( RefSkel .fromSkel ( skeletonByKind ( self .kind ), * self .refKeys ) )
974- } )
968+ ret .update ({
969+ "type" : "%s.%s" % (boneType , self .kind ),
970+ "module" : self .module ,
971+ "multiple" : self .multiple ,
972+ "format" : self .format ,
973+ "using" : render .renderSkelStructure (self .using ()) if self .using else None ,
974+ "relskel" : render .renderSkelStructure (RefSkel .fromSkel (skeletonByKind (self .kind ), * self .refKeys ) )
975+ } )
975976
976977 return ret
977978
978- def renderBoneValue ( self ,skel ,boneName , rendererObj = None , * args , ** kwargs ):
979- from server .render .json import default as jsonrenderer
980- from server .render .xml import default as xmlrenderer
981- from server .render .vi import default as virenderer
982- from server .render .admin import default as adminrenderer
983- from server .render .html import default as htmlrenderer
984-
985- if isinstance ( rendererObj , jsonrenderer ) or \
986- isinstance ( rendererObj , virenderer ) or \
987- isinstance ( rendererObj , adminrenderer ) or \
988- isinstance ( rendererObj , xmlrenderer ):
989- if isinstance ( skel [ boneName ], list ):
979+ def renderBoneValue (self , skel , boneName , render = None , * args , ** kwargs ):
980+ if render .render in ["json" , "xml" ] or render .render .startswith ("json." ):
981+ if isinstance (skel [boneName ], list ):
990982 refSkel = self ._refSkelCache
991983 usingSkel = self ._usingSkelCache
992- tmpList = [ ]
984+ ret = []
985+
993986 for k in skel [ boneName ]:
994- refSkel .setValuesCache ( k [ "dest" ] )
987+ refSkel .setValuesCache (k ["dest" ])
988+
995989 if usingSkel :
996- usingSkel .setValuesCache ( k .get ( "rel" , { } ) )
997- usingData = rendererObj .renderSkelValues ( usingSkel )
990+ usingSkel .setValuesCache (k .get ( "rel" , {}) )
991+ usingData = render .renderSkelValues (usingSkel )
998992 else :
999993 usingData = None
1000- tmpList .append ( {
1001- "dest" :rendererObj .renderSkelValues ( refSkel ),
1002- "rel" :usingData
1003- } )
1004994
1005- return tmpList
995+ ret .append ({
996+ "dest" : render .renderSkelValues (refSkel ),
997+ "rel" : usingData
998+ })
1006999
1007- elif isinstance ( skel [ boneName ], dict ):
1000+ return ret
1001+
1002+ elif isinstance (skel [boneName ], dict ):
10081003 refSkel = self ._refSkelCache
10091004 usingSkel = self ._usingSkelCache
1010- refSkel .setValuesCache ( skel [ boneName ][ "dest" ] )
1005+
1006+ refSkel .setValuesCache (skel [boneName ]["dest" ])
1007+
10111008 if usingSkel :
1012- usingSkel .setValuesCache ( skel [ boneName ].get ( "rel" , { } ) )
1013- usingData = rendererObj .renderSkelValues ( usingSkel )
1009+ usingSkel .setValuesCache (skel [boneName ].get ("rel" , {}) )
1010+ usingData = render .renderSkelValues (usingSkel )
10141011 else :
10151012 usingData = None
1013+
10161014 return {
1017- "dest" :rendererObj .renderSkelValues ( refSkel ),
1018- "rel" :usingData
1019- }
1020- elif isinstance (rendererObj ,htmlrenderer ):
1021- if isinstance (skel [ boneName ], list ):
1022- tmpList = []
1015+ "dest" : render .renderSkelValues (refSkel ),
1016+ "rel" : usingData
1017+ }
1018+
1019+ elif render .render == "html" or render .render .startswith ("html." ):
1020+ if isinstance (skel [boneName ], list ):
1021+ ret = []
10231022 for k in skel [ boneName ]:
10241023 refSkel = self ._refSkelCache
10251024 refSkel .setValuesCache (k ["dest" ])
1025+
10261026 if self .using is None :
1027- tmpList .append (rendererObj .collectSkelData (refSkel ))
1027+ ret .append (render .collectSkelData (refSkel ))
10281028 else :
10291029 usingSkel = self ._usingSkelCache
1030+
10301031 if k ["rel" ]:
10311032 usingSkel .setValuesCache (k ["rel" ])
1032- usingData = rendererObj .collectSkelData (usingSkel )
1033+ usingData = render .collectSkelData (usingSkel )
10331034 else :
10341035 usingData = None
1035- tmpList .append ({
1036- "dest" : rendererObj .collectSkelData (refSkel ),
1037- "rel" : usingData
1036+
1037+ ret .append ({
1038+ "dest" : render .collectSkelData (refSkel ),
1039+ "rel" : usingData
10381040 })
1039- return tmpList
1040- elif isinstance (skel [ boneName ], dict ):
1041+
1042+ return ret
1043+
1044+ elif isinstance (skel [boneName ], dict ):
10411045 refSkel = self ._refSkelCache
1042- refSkel .setValuesCache (skel [ boneName ]["dest" ])
1046+ refSkel .setValuesCache (skel [boneName ]["dest" ])
1047+
10431048 if self .using is None :
1044- return rendererObj .collectSkelData (refSkel )
1049+ return render .collectSkelData (refSkel )
10451050 else :
10461051 usingSkel = self ._usingSkelCache
1052+
10471053 if skel [ boneName ]["rel" ]:
10481054 usingSkel .setValuesCache (skel [ boneName ]["rel" ])
1049- usingData = rendererObj .collectSkelData (usingSkel )
1055+ usingData = render .collectSkelData (usingSkel )
10501056 else :
10511057 usingData = None
10521058
10531059 return {
1054- "dest" : rendererObj .collectSkelData (refSkel ),
1060+ "dest" : render .collectSkelData (refSkel ),
10551061 "rel" : usingData
10561062 }
10571063 else :
10581064 return None
1059- else :
1060- return super (relationalBone , self ).renderBoneValue (skel ,boneName ,rendererObj , * args ,** kwargs )
1065+
1066+ return super (relationalBone , self ).renderBoneValue (skel , boneName , render , * args , ** kwargs )
0 commit comments