@@ -83,26 +83,25 @@ def pop(key, destkey):
8383 return
8484 adddict [destkey ] = val
8585
86- def set_sub_components ():
87- val = kwargs .pop ("sub_components" )
86+ def get_sub_component ():
87+ val = kwargs .pop ("sub_component" , None )
8888 if val is None :
8989 return
9090
9191 if type (val ) is not dict :
92- component = kwargs .get ("component" )
93- if component is None :
92+ component = self . _listify ( kwargs .get ("component" ) )
93+ if component is [] :
9494 raise ValueError ("component must be specified if "
9595 "specifying sub_component" )
96- val = {component : val }
97-
96+ val = {component [0 ]: val }
9897 adddict ["sub_components" ] = val
9998
10099 pop ("fixed_in" , "cf_fixed_in" )
101100 pop ("qa_whiteboard" , "cf_qa_whiteboard" )
102101 pop ("devel_whiteboard" , "cf_devel_whiteboard" )
103102 pop ("internal_whiteboard" , "cf_internal_whiteboard" )
104103
105- set_sub_components ()
104+ get_sub_component ()
106105
107106 vals = _parent .build_update (self , ** kwargs )
108107 vals .update (adddict )
@@ -138,8 +137,14 @@ def pre_translation(self, query):
138137 query ['include_fields' ] = query ['column_list' ]
139138 del query ['column_list' ]
140139
140+ include_aliases = (
141+ ("component" , "components" ),
142+ ("version" , "versions" ),
143+ ("sub_components" , "sub_component" ),
144+ )
145+
141146 include_fields = query ['include_fields' ]
142- for newname , oldname in self .field_aliases :
147+ for newname , oldname in ( self .field_aliases + include_aliases ) :
143148 if oldname in include_fields :
144149 include_fields .remove (oldname )
145150 if newname not in include_fields :
@@ -168,6 +173,17 @@ def post_translation(self, query, bug):
168173 bug ['versions' ] = type (val ) is list and val or [val ]
169174 bug ['version' ] = bug ['versions' ][0 ]
170175
176+ # sub_components isn't too friendly of a format, add a simpler
177+ # sub_component value
178+ if 'sub_components' in bug and 'sub_component' not in bug :
179+ val = bug ['sub_components' ]
180+ bug ['sub_component' ] = ""
181+ if type (val ) is dict :
182+ values = []
183+ for vallist in val .values ():
184+ values += vallist
185+ bug ['sub_component' ] = " " .join (values )
186+
171187 if not self .rhbz_back_compat :
172188 return
173189
@@ -208,10 +224,12 @@ def post_translation(self, query, bug):
208224 def build_query (self , ** kwargs ):
209225 query = {}
210226
211- def _add_key (paramname , keyname ):
227+ def _add_key (paramname , keyname , listify = False ):
212228 val = kwargs .pop (paramname , None )
213229 if val is None :
214230 return
231+ if listify :
232+ val = self ._listify (val )
215233 query [keyname ] = val
216234
217235 def add_longdesc ():
@@ -338,6 +356,7 @@ def make_bool_str(prefix):
338356 _add_key ("quicksearch" , "quicksearch" )
339357 _add_key ("savedsearch" , "savedsearch" )
340358 _add_key ("savedsearch_sharer_id" , "sharer_id" )
359+ _add_key ("sub_component" , "sub_components" , listify = True )
341360
342361 newquery = _parent .build_query (self , ** kwargs )
343362 query .update (newquery )
0 commit comments