Source code for q2_sdk.hq.hq_api.q2_api.ExecuteCentralReport

# This is an autogenerated file from the command "q2 generate_hq_api" and will be overwritten if run again


from typing import List, Optional

from lxml import etree


from q2_sdk.core.q2_logging.logger import Q2LoggerType
from q2_sdk.hq.models.hq_response import HqResponse
from q2_sdk.hq.models.hq_credentials import HqCredentials
from q2_sdk.hq.models.hq_params.base import BaseParameter


from q2_sdk.hq.models.hq_params.q2_api import Q2ApiParamsObj
from q2_sdk.hq.models.hq_request.q2_api import Q2ApiRequest


class object(BaseParameter):
    def __init__(
        self,
    ):
        pass

    def serialize_as_xml(self):
        root = etree.Element("object")
        return root

    def serialize_as_json(self):
        return {}


class Default(BaseParameter):
    def __init__(
        self,
        decimal: float,
        bool: bool,
        int: int,
        datetime: str,
        object: Optional[object] = None,
        string: Optional[str] = None,
    ):
        self.decimal = decimal
        self.bool = bool
        self.object = object
        self.int = int
        self.string = string
        self.datetime = datetime

    def serialize_as_xml(self):
        root = etree.Element("Default")
        elem = etree.SubElement(root, "decimal")
        elem.text = str(self.decimal)
        elem = etree.SubElement(root, "bool")
        elem.text = str(self.bool.real)
        if self.object is not None:
            for elem in self.object:
                root.append(elem.serialize_as_xml())
        elem = etree.SubElement(root, "int")
        elem.text = str(self.int)
        elem = etree.SubElement(root, "string")
        elem.text = str(self.string)
        elem = etree.SubElement(root, "datetime")
        elem.text = str(self.datetime)
        return root

    def serialize_as_json(self):
        return {
            "decimal": self.decimal,
            "bool": self.bool,
            "object": self.object,
            "int": self.int,
            "string": self.string,
            "datetime": self.datetime,
        }


[docs] class Default(BaseParameter): def __init__(self, default: Optional[List[Default]] = None): self.default = default
[docs] def serialize_as_xml(self): root = etree.Element("Default") if self.default is not None: for elem in self.default: root.append(elem.serialize_as_xml()) return root
[docs] def serialize_as_json(self): return [x.serialize_as_json() for x in self.default]
[docs] class object(BaseParameter): def __init__( self, ): pass
[docs] def serialize_as_xml(self): root = etree.Element("object") return root
[docs] def serialize_as_json(self): return {}
class Value(BaseParameter): def __init__( self, datetime: str, int: int, decimal: float, bool: bool, object: Optional[object] = None, string: Optional[str] = None, ): self.object = object self.string = string self.datetime = datetime self.int = int self.decimal = decimal self.bool = bool def serialize_as_xml(self): root = etree.Element("Value") if self.object is not None: for elem in self.object: root.append(elem.serialize_as_xml()) elem = etree.SubElement(root, "string") elem.text = str(self.string) elem = etree.SubElement(root, "datetime") elem.text = str(self.datetime) elem = etree.SubElement(root, "int") elem.text = str(self.int) elem = etree.SubElement(root, "decimal") elem.text = str(self.decimal) elem = etree.SubElement(root, "bool") elem.text = str(self.bool.real) return root def serialize_as_json(self): return { "object": self.object, "string": self.string, "datetime": self.datetime, "int": self.int, "decimal": self.decimal, "bool": self.bool, }
[docs] class Value(BaseParameter): def __init__(self, value: Optional[List[Value]] = None): self.value = value
[docs] def serialize_as_xml(self): root = etree.Element("Value") if self.value is not None: for elem in self.value: root.append(elem.serialize_as_xml()) return root
[docs] def serialize_as_json(self): return [x.serialize_as_json() for x in self.value]
class Parameter(BaseParameter): def __init__( self, value: Optional[List[Value]] = None, default: Optional[List[Default]] = None, ): self.value = value self.default = default def serialize_as_xml(self): root = etree.Element("Parameter") if self.value is not None: for elem in self.value: root.append(elem.serialize_as_xml()) if self.default is not None: for elem in self.default: root.append(elem.serialize_as_xml()) return root def serialize_as_json(self): return { "Value": self.value, "Default": self.default, }
[docs] class Parameter(BaseParameter): def __init__(self, parameter: Optional[List[Parameter]] = None): self.parameter = parameter
[docs] def serialize_as_xml(self): root = etree.Element("Parameter") if self.parameter is not None: for elem in self.parameter: root.append(elem.serialize_as_xml()) return root
[docs] def serialize_as_json(self): return [x.serialize_as_json() for x in self.parameter]
class Table(BaseParameter): def __init__(self, parameter: Optional[List[Parameter]] = None): self.parameter = parameter def serialize_as_xml(self): root = etree.Element("Table") if self.parameter is not None: for elem in self.parameter: root.append(elem.serialize_as_xml()) return root def serialize_as_json(self): return [x.serialize_as_json() for x in self.parameter]
[docs] class Table(BaseParameter): def __init__(self, table: Optional[List[Table]] = None): self.table = table
[docs] def serialize_as_xml(self): root = etree.Element("Table") if self.table is not None: for elem in self.table: root.append(elem.serialize_as_xml()) return root
[docs] def serialize_as_json(self): return [x.serialize_as_json() for x in self.table]
[docs] class Object(BaseParameter): def __init__( self, ): pass
[docs] def serialize_as_xml(self): root = etree.Element("Object") return root
[docs] def serialize_as_json(self): return {}
[docs] class AvailableFormats(BaseParameter): def __init__(self, object: Optional[List[Object]] = None): self.object = object
[docs] def serialize_as_xml(self): root = etree.Element("AvailableFormats") if self.object is not None: for elem in self.object: root.append(elem.serialize_as_xml()) return root
[docs] def serialize_as_json(self): return [x.serialize_as_json() for x in self.object]
class Parameters(BaseParameter): def __init__( self, available_formats: Optional[AvailableFormats] = None, table: Optional[List[Table]] = None, ): self.available_formats = available_formats self.table = table def serialize_as_xml(self): root = etree.Element("Parameters") if self.available_formats is not None: for elem in self.available_formats: root.append(elem.serialize_as_xml()) if self.table is not None: for elem in self.table: root.append(elem.serialize_as_xml()) return root def serialize_as_json(self): return { "AvailableFormats": self.available_formats, "Table": self.table, }
[docs] class Parameters(BaseParameter): def __init__(self, parameters: Optional[Parameters] = None): self.parameters = parameters
[docs] def serialize_as_xml(self): root = etree.Element("Parameters") if self.parameters is not None: for elem in self.parameters: root.append(elem.serialize_as_xml()) return root
[docs] def serialize_as_json(self): return [x.serialize_as_json() for x in self.parameters]
[docs] class ParamsObj(Q2ApiParamsObj): """Parameters definition for ExecuteCentralReport""" def __init__( self, logger: Q2LoggerType, parameters: Optional[Parameters] = None, admin_logon_name: Optional[str] = None, report_title: Optional[str] = None, hq_credentials: Optional[HqCredentials] = None, ): """ :param logger: Reference to calling request's logger (self.logger in your extension) :param parameters: :param admin_logon_name: :param report_title: :param hq_credentials: Defaults to settings.HQ_CREDENTIALS """ super().__init__(logger, hq_credentials) self.request_params.update({ "Parameters": parameters, "AdminLogonName": admin_logon_name, "ReportTitle": report_title, })
[docs] async def execute(params_obj: ParamsObj, use_json=False, **kwargs) -> HqResponse: """ This is the default way to submit the request to HQ. In theory, both json and soap payloads are equally accepted by HQ, though several variables may affect that (HQ version, Q2SDK implementation bugs, etc). This should not affect anything about the way your code deals with the data. In fact, the only difference to consuming extensions is the logging. Basically, call this with default parameters unless you find a compelling reason not to. :param params_obj: Object containing everything necessary to call this HQ endpoint :param use_json: If True, will call HQ's .ashx (json) endpoint instead of .asmx (soap) """ request = Q2ApiRequest("ExecuteCentralReport", use_json=use_json, **kwargs) return await request.execute(params_obj, **kwargs)
[docs] async def get_soap(params_obj: ParamsObj, **kwargs) -> HqResponse: """Deprecated. Please use execute instead""" params_obj.logger.warning( "ExecuteCentralReport.get_soap is deprecated. Please use ExecuteCentralReport.execute instead." ) return await execute(params_obj, **kwargs)
[docs] async def get_json(params_obj: ParamsObj, **kwargs) -> HqResponse: """Deprecated. Please use execute instead""" params_obj.logger.warning( "ExecuteCentralReport.get_json is deprecated. Please use ExecuteCentralReport.execute instead." ) return await execute(params_obj, use_json=True, **kwargs)
[docs] def build_json(params_obj: ParamsObj): return Q2ApiRequest.build_json(params_obj)
[docs] def build_soap(params_obj: ParamsObj): return Q2ApiRequest("ExecuteCentralReport", use_json=False).build_soap(params_obj)