Пример #1
0
    def _check_custom_insights_entries(self, insights: List[Mapping[str, Any]]):

        default_fields = list(
            ResourceSchemaLoader(package_name_from_class(self.__class__)).get_schema("ads_insights").get("properties", {}).keys()
        )
        default_breakdowns = list(
            ResourceSchemaLoader(package_name_from_class(self.__class__)).get_schema("ads_insights_breakdowns").get("properties", {}).keys()
        )
        default_actions_breakdowns = [e for e in default_breakdowns if "action_" in e]

        for insight in insights:
            if insight.get("fields"):
                value_checked, value = self._check_values(default_fields, insight.get("fields"))
                if not value_checked:
                    message = f"{value} is not a valid field name"
                    raise Exception("Config validation error: " + message) from None
            if insight.get("breakdowns"):
                value_checked, value = self._check_values(default_breakdowns, insight.get("breakdowns"))
                if not value_checked:
                    message = f"{value} is not a valid breakdown name"
                    raise Exception("Config validation error: " + message) from None
            if insight.get("action_breakdowns"):
                value_checked, value = self._check_values(default_actions_breakdowns, insight.get("action_breakdowns"))
                if not value_checked:
                    message = f"{value} is not a valid action_breakdown name"
                    raise Exception("Config validation error: " + message) from None

        return True
Пример #2
0
 def get_json_schema(self) -> Mapping[str, Any]:
     """Add fields from breakdowns to the stream schema
     :return: A dict of the JSON schema representing this stream.
     """
     schema = ResourceSchemaLoader(package_name_from_class(self.__class__)).get_schema("ads_insights")
     schema["properties"].update(self._schema_for_breakdowns())
     return schema
Пример #3
0
 def fields(self) -> List[str]:
     """List of fields that we want to query, for now just all properties from stream's schema"""
     if self._fields:
         return self._fields
     schema = ResourceSchemaLoader(package_name_from_class(
         self.__class__)).get_schema("ads_insights")
     return list(schema.get("properties", {}).keys())
Пример #4
0
 def get_json_schema(self) -> Mapping[str, Any]:
     """Add fields from breakdowns to the stream schema
     :return: A dict of the JSON schema representing this stream.
     """
     loader = ResourceSchemaLoader(package_name_from_class(self.__class__))
     schema = loader.get_schema("ads_insights")
     if self._fields:
         schema["properties"] = {k: v for k, v in schema["properties"].items() if k in self._fields}
     if self.breakdowns:
         breakdowns_properties = loader.get_schema("ads_insights_breakdowns")["properties"]
         schema["properties"].update({prop: breakdowns_properties[prop] for prop in self.breakdowns})
     return schema
Пример #5
0
 def get_json_schema(self) -> Mapping[str, Any]:
     return ResourceSchemaLoader(package_name_from_class(
         self.__class__)).get_schema(self.report_schema_name)
Пример #6
0
 def get_json_schema(self) -> Mapping[str, Any]:
     """All reports have same schema"""
     return ResourceSchemaLoader(
         package_name_from_class(AdvertiserIds)).get_schema(
             self.schema_name)