and another fixes
This commit is contained in:
		
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -12,6 +12,7 @@
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
 | 
			
		||||
import copy
 | 
			
		||||
import warnings
 | 
			
		||||
 | 
			
		||||
import otc_metadata.data
 | 
			
		||||
 | 
			
		||||
@ -32,13 +33,17 @@ class Services(object):
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        self._service_data = BUILTIN_DATA
 | 
			
		||||
 | 
			
		||||
    def _sorted_data(self):
 | 
			
		||||
    def _sort_data(self):
 | 
			
		||||
        self._service_data['documents'] = sorted(
 | 
			
		||||
            self._service_data['documents'], 
 | 
			
		||||
            self._service_data['documents'],
 | 
			
		||||
            key=lambda x: f"{x.get('service_type')}{x.get('title')}"
 | 
			
		||||
        )
 | 
			
		||||
        self._service_data['documents'] = sorted(
 | 
			
		||||
            self._service_data['documents'],
 | 
			
		||||
            key=lambda x: f"{x.get('service_type')}{x.get('title')}"
 | 
			
		||||
        )
 | 
			
		||||
        self._service_data['services'] = sorted(
 | 
			
		||||
            self._service_data['services'], 
 | 
			
		||||
            self._service_data['services'],
 | 
			
		||||
            key=lambda x: f"{x.get('service_type')}{x.get('service_title')}"
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
@ -66,6 +71,15 @@ class Services(object):
 | 
			
		||||
            res[srv["service_type"]] = copy.deepcopy(srv)
 | 
			
		||||
        return res
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def service_categories(self):
 | 
			
		||||
        """List services categories
 | 
			
		||||
        """
 | 
			
		||||
        res = []
 | 
			
		||||
        for cat in self._service_data["service_categories"]:
 | 
			
		||||
            res.append(copy.deepcopy(cat))
 | 
			
		||||
        return res
 | 
			
		||||
 | 
			
		||||
    def services_by_category(self, category):
 | 
			
		||||
        """List services matching category
 | 
			
		||||
        """
 | 
			
		||||
@ -75,6 +89,33 @@ class Services(object):
 | 
			
		||||
                res.append(copy.deepcopy(srv))
 | 
			
		||||
        return res
 | 
			
		||||
 | 
			
		||||
    def services_with_docs_by_category(self, category, environment=None):
 | 
			
		||||
        """Retrieve service category docs data
 | 
			
		||||
 | 
			
		||||
        :param str category: Optional Category filter
 | 
			
		||||
        :param str env: Optional service environment. Influeces "repository"
 | 
			
		||||
            field
 | 
			
		||||
        """
 | 
			
		||||
        res = dict()
 | 
			
		||||
        services = self.service_dict
 | 
			
		||||
        for doc in self.all_docs:
 | 
			
		||||
            cat = doc["service_type"]
 | 
			
		||||
            service = services.get(cat)
 | 
			
		||||
            if not service:
 | 
			
		||||
                warnings.warn("No Service defition of type %s" % (cat))
 | 
			
		||||
                continue
 | 
			
		||||
            if category and service["service_category"] != category:
 | 
			
		||||
                continue
 | 
			
		||||
            res.setdefault(cat, service)
 | 
			
		||||
            res_doc = copy.deepcopy(doc)
 | 
			
		||||
            res_doc.update(**service)
 | 
			
		||||
            if environment:
 | 
			
		||||
                if "environment" in doc and doc["environment"] != environment:
 | 
			
		||||
                    continue
 | 
			
		||||
            res[cat].setdefault("docs", [])
 | 
			
		||||
            res[cat]["docs"].append(res_doc)
 | 
			
		||||
        return res
 | 
			
		||||
 | 
			
		||||
    def docs_by_service_category(self, category, environment=None):
 | 
			
		||||
        """List services matching category
 | 
			
		||||
 | 
			
		||||
@ -85,11 +126,15 @@ class Services(object):
 | 
			
		||||
        res = []
 | 
			
		||||
        services = self.service_dict
 | 
			
		||||
        for doc in self.all_docs:
 | 
			
		||||
            service = services[doc["service_type"]]
 | 
			
		||||
            cat = doc["service_type"]
 | 
			
		||||
            service = services.get(cat)
 | 
			
		||||
            if not service:
 | 
			
		||||
                warnings.warn("No Service defition of type %s" % (cat))
 | 
			
		||||
                continue
 | 
			
		||||
            if service["service_category"] == category:
 | 
			
		||||
                res_doc = copy.deepcopy(doc)
 | 
			
		||||
                res_doc.update(**service)
 | 
			
		||||
                if env:
 | 
			
		||||
                if environment:
 | 
			
		||||
                    for srv_env in service["repositories"]:
 | 
			
		||||
                        if srv_env.get("environment") == environment:
 | 
			
		||||
                            res_doc["repository"] = srv_env["repo"]
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user