Exemple #1
0
    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
Exemple #2
0
    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
Exemple #3
0
 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])
Exemple #4
0
 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])