def __get_rdf_resource_title(self, rdf_url): # handle for /jts/users if "/jts/users" in rdf_url: return urlunquote(rdf_url.split("/")[-1]) # keep query result url if rdf_url.endswith("rtc_cm:results"): return rdf_url # keep attachment url if "/resource/content/" in rdf_url: return rdf_url resp = self.get(rdf_url, verify=False, proxies=self.rtc_obj.proxies, headers=self.rtc_obj.headers, cookies=self.rtc_obj.cookiejar) raw_data = xmltodict.parse(resp.content) root_key = list(raw_data.keys())[0] total_count = raw_data[root_key].get("@oslc_cm:totalCount") if total_count is None: # no total count # only single resource # compatible with IncludedInBuild return (raw_data[root_key].get("dc:title") or raw_data[root_key].get("foaf:nick")) else: # multiple resource result_list = list() entry_keys = [ entry_key for entry_key in raw_data[root_key].keys() if not entry_key.startswith("@") ] for entry_key in entry_keys: entries = raw_data[root_key][entry_key] if isinstance(entries, OrderedDict): entry_result = self.__handle_rdf_entry(entries) result_list.append(entry_result) else: for entry in entries: entry_result = self.__handle_rdf_entry(entry) result_list.append(entry_result) if not result_list: return None return result_list
def __get_rdf_resource_title(self, rdf_url): # handle for /jts/users if "/jts/users" in rdf_url: return urlunquote(rdf_url.split("/")[-1]) # keep query result url if rdf_url.endswith("rtc_cm:results"): return rdf_url # keep attachment url if "/resource/content/" in rdf_url: return rdf_url resp = self.get(rdf_url, verify=False, proxies=self.rtc_obj.proxies, headers=self.rtc_obj.headers) raw_data = xmltodict.parse(resp.content) root_key = list(raw_data.keys())[0] total_count = raw_data[root_key].get("@oslc_cm:totalCount") if total_count is None: # no total count # only single resource # compatible with IncludedInBuild return (raw_data[root_key].get("dc:title") or raw_data[root_key].get("foaf:nick")) else: # multiple resource result_list = list() entry_keys = [entry_key for entry_key in raw_data[root_key].keys() if not entry_key.startswith("@")] for entry_key in entry_keys: entries = raw_data[root_key][entry_key] if isinstance(entries, OrderedDict): entry_result = self.__handle_rdf_entry(entries) result_list.append(entry_result) else: for entry in entries: entry_result = self.__handle_rdf_entry(entry) result_list.append(entry_result) if not result_list: return None return result_list
def __init__(self, url, rtc_obj, raw_data=None): FieldBase.__init__(self, url, rtc_obj, raw_data=raw_data) # add a new attribute mainly for the un-recorded member use self.email = urlunquote(self.url.split("/")[-1])