Source code for derivitec.reports.types

from enum import IntEnum, Enum
from abc import ABC
from typing import List, Optional
from derivitec.core.dict_builder_abstract import DictBuilderAbstract


[docs] class ReportsType(DictBuilderAbstract): _dotnet_namespace = ""
[docs] class ReportStatus(IntEnum): Failed = 2 Running = 3 Null = 0 Succeeded = 1 Warning = 4
[docs] class ReportData(ReportsType):
[docs] def __init__(self, market_data_error_summary=None, portfolio_name=None, position_import_errors=None, real_time_market_data=None, report_id=None, report_name=None, reporting_currency=None, status=None, status_message=None, time_stamp=None): """ :param market_data_error_summary: The market data error summary :param portfolio_name: The portfolio name :param real_time_market_data: The real time market data :param report_id: The report id :param report_name: The report name :param reporting_currency: The reporting currency :param status: The status :param status_message: The status message :param time_stamp: The time stamp :param position_import_errors: The position_import_errors """ self.market_data_error_summary = market_data_error_summary self.portfolio_name = portfolio_name self.real_time_market_data = real_time_market_data self.report_id = report_id self.report_name = report_name self.reporting_currency = reporting_currency self.status = status self.status_message = status_message self.time_stamp = time_stamp self.position_import_errors = position_import_errors
def json_params(self): params = [ 'market_data_error_summary', 'portfolio_name', 'position_import_errors', 'real_time_market_data', 'report_id', 'report_name', 'reporting_currency', 'status', 'status_message', 'time_stamp', ] return params
[docs] class RiskReportData(ReportData):
[docs] def __init__(self, data_tables=None, market_data_date=None, market_data_error_summary=None, portfolio_date_time=None, portfolio_name=None, position_import_errors=None, pricing_date=None, real_time_market_data=None, report_id=None, report_name=None, reporting_currency=None, status=None, status_message=None, time_stamp=None): """ :param data_tables: The data tables :param market_data_date: The market data date :param market_data_error_summary: The market data error summary :param portfolio_date_time: The portfolio date time :param portfolio_name: The portfolio name :param position_import_errors: The position_import_errors :param pricing_date: The pricing date :param real_time_market_data: The real time market data :param report_id: The report id :param report_name: The report name :param reporting_currency: The reporting currency :param status: The status :param status_message: The status message :param time_stamp: The time stamp """ self.market_data_date = market_data_date self.pricing_date = pricing_date self.portfolio_date_time = portfolio_date_time self.data_tables = data_tables super(RiskReportData, self).__init__( market_data_error_summary=market_data_error_summary, portfolio_name=portfolio_name, position_import_errors=position_import_errors, real_time_market_data=real_time_market_data, report_id=report_id, report_name=report_name, reporting_currency=reporting_currency, status=status, status_message=status_message, time_stamp=time_stamp)
def json_params(self): params = [ 'market_data_date', 'pricing_date', 'portfolio_date_time', 'data_tables', ] params += super(RiskReportData, self).json_params() return params
[docs] class VarReportData(ReportData):
[docs] def __init__(self, market_data_date=None, market_data_error_summary=None, portfolio_date_time=None, portfolio_id=None, portfolio_name=None, position_import_errors=None, pricing_date=None, real_time_market_data=None, portfolio_var_statistics=None, report_id=None, reporting_currency=None, report_name=None, scenario_portfolio_var_statistics=None, scenarios=None, status=None, status_message=None, time_stamp=None, tradable_var_statistics=None, position_infos=None, user_time_zone_id=None, historical_observation_dates=None, excluded_price_histories_by_tradable_id=None, excluded_scenario_price_histories_by_tradable_id=None, price_histories_by_tradable_id=None, scenario_price_histories_by_tradable_id=None): """ :param portfolio_var_statistics: The portfolio var statistics :param market_data_error_summary: market data error summary :param portfolio_date_time: portfolio date time :param portfolio_id: portfolio id :param portfolio_name: portfolio name :param portfolio_var_statistics: portfolio var statistics :param position_import_errors: position_import_errors :param report_id: report id :param reporting_currency: reporting currency :param report_name: report name :param scenario_portfolio_var_statistics: scenario portfolio var statistics :param scenarios: scenarios :param status: status :param status_message: status message :param time_stamp: time tamp :param tradable_var_statistics: tradable var statistics :param position_infos: position infos :param user_time_zone_id: user time zone id :param historical_observation_dates: historical_observation_dates :param excluded_price_histories_by_tradable_id: excluded_price_histories_by_tradable_id :param excluded_scenario_price_histories_by_tradable_id: excluded_scenario_price_histories_by_tradable_id :param price_histories_by_tradable_id: price_histories_by_tradable_id :param scenario_price_histories_by_tradable_id: scenario_price_histories_by_tradable_id """ self.market_data_date = market_data_date self.pricing_date = pricing_date self.portfolio_date_time = portfolio_date_time self.portfolio_id = portfolio_id self.portfolio_var_statistics = portfolio_var_statistics self.scenario_portfolio_var_statistics = scenario_portfolio_var_statistics self.scenarios = scenarios self.tradable_var_statistics = tradable_var_statistics self.position_infos = position_infos self.user_time_zone_id = user_time_zone_id self.historical_observation_dates = historical_observation_dates self.excluded_price_histories_by_tradable_id = excluded_price_histories_by_tradable_id self.excluded_scenario_price_histories_by_tradable_id = excluded_scenario_price_histories_by_tradable_id self.price_histories_by_tradable_id = price_histories_by_tradable_id self.scenario_price_histories_by_tradable_id = scenario_price_histories_by_tradable_id super(VarReportData, self).__init__( market_data_error_summary=market_data_error_summary, portfolio_name=portfolio_name, position_import_errors=position_import_errors, real_time_market_data=real_time_market_data, report_id=report_id, report_name=report_name, reporting_currency=reporting_currency, status=status, status_message=status_message, time_stamp=time_stamp)
def json_params(self): params = [ 'portfolio_id', 'portfolio_var_statistics', 'scenario_portfolio_var_statistics', 'scenarios', 'tradable_var_statistics', 'position_infos', 'user_time_zone_id', 'historical_observation_dates', 'excluded_price_histories_by_tradable_id', 'excluded_scenario_price_histories_by_tradable_id', 'price_histories_by_tradable_id', 'scenario_price_histories_by_tradable_id', 'market_data_date', 'pricing_date', 'portfolio_date_time' ] params += super(VarReportData, self).json_params() return params
[docs] class SignalrRiskReportResponse(ReportsType):
[docs] def __init__(self, delivery_tag=None, is_complete=None, message_type=None, progress=None, reply_to_session_id=None, report_id=None, report_status=None, report_status_message=None, request_id=None, routing_key=None, session_id=None, time_stamp=None, user_id=None): """ :param delivery_tag: The delivery tag :param is_complete: The is complete :param message_type: The message type :param progress: The progress :param reply_to_session_id: The reply to session id :param report_id: The report id :param report_status: The report status :param report_status_message: The report status message :param request_id: The request id :param routing_key: The routing key :param session_id: The session id :param time_stamp: The time stamp :param user_id: The user id """ self.delivery_tag = delivery_tag self.is_complete = is_complete self.message_type = message_type self.progress = progress self.reply_to_session_id = reply_to_session_id self.report_id = report_id self.report_status = report_status self.report_status_message = report_status_message self.request_id = request_id self.routing_key = routing_key self.session_id = session_id self.time_stamp = time_stamp self.user_id = user_id
def json_params(self): params = [ 'delivery_tag', 'is_complete', 'message_type', 'progress', 'reply_to_session_id', 'report_id', 'report_status', 'report_status_message', 'request_id', 'routing_key', 'session_id', 'time_stamp', 'user_id', ] return params
[docs] class Equal(ReportsType):
[docs] def __init__(self, column_name=None, value=None): """ :param column_name: The column name :param value: The value """ self.column_name = column_name self.value = value
def json_params(self): params = [ 'column_name', 'value', ] return params
[docs] class RiskReportInfo(ReportsType):
[docs] def __init__(self, description=None, id=None, mkt_data_date=None, portfolio_name=None, pricing_date=None, real_time_mkt_data=None, report_name=None, reporting_currency=None, status=None, status_message=None, time_stamp=None, market_data_environment_names=None, run_by_user=None): """ :param description: The description :param id: The id :param mkt_data_date: The mkt data date :param portfolio_name: The portfolio name :param pricing_date: The pricing date :param real_time_mkt_data: The real time mkt data :param report_name: The report name :param reporting_currency: The reporting currency :param status: The status :param status_message: The status message :param time_stamp: The time stamp :param market_data_environment_names: The list of market data environments the report was run against :param run_by_user: The email address of the user that ran the report. """ self.description = description self.id = id self.mkt_data_date = mkt_data_date self.portfolio_name = portfolio_name self.pricing_date = pricing_date self.real_time_mkt_data = real_time_mkt_data self.report_name = report_name self.reporting_currency = reporting_currency self.status = status self.status_message = status_message self.time_stamp = time_stamp self.market_data_environment_names = market_data_environment_names self.run_by_user = run_by_user
def json_params(self): params = [ 'description', 'id', 'mkt_data_date', 'portfolio_name', 'pricing_date', 'real_time_mkt_data', 'report_name', 'reporting_currency', 'status', 'status_message', 'time_stamp', 'market_data_environment_names', 'run_by_user' ] return params
[docs] class VarReportInfo(ReportsType):
[docs] def __init__(self, confidence_level=None, first_observation_date=None, historical_start_date_rule=None, id=None, mkt_data_date=None, portfolio_id=None, portfolio_name=None, pricing_date=None, real_time_mkt_data=None, reporting_currency=None, report_name=None, status=None, status_message=None, time_stamp=None, var_horizon=None): """ :param confidence_level: The confidence_level :param first_observation_date: The first_observation_date :param historical_start_date_rule: The historical_start_date_rule :param id: The id :param mkt_data_date: The mkt_data_date :param portfolio_id: The portfolio_id :param portfolio_name: The portfolio_name :param pricing_date: The pricing_date :param real_time_mkt_data: The real_time_mkt_data :param reporting_currency: The reporting_currency :param report_name: The report name :param status: The status :param status_message: The status_message :param time_stamp: The time_stamp :param var_horizon: The var_horizon """ self.confidence_level = confidence_level self.first_observation_date = first_observation_date self.historical_start_date_rule = historical_start_date_rule self.id = id self.mkt_data_date = mkt_data_date self.portfolio_id = portfolio_id self.portfolio_name = portfolio_name self.pricing_date = pricing_date self.real_time_mkt_data = real_time_mkt_data self.reporting_currency = reporting_currency self.report_name = report_name self.status = status self.status_message = status_message self.time_stamp = time_stamp self.var_horizon = var_horizon
def json_params(self): params = [ 'confidence_level', 'first_observation_date', 'historical_start_date_rule', 'id', 'mkt_data_date', 'portfolio_id', 'portfolio_name', 'pricing_date', 'real_time_mkt_data', 'reporting_currency', 'report_name', 'status', 'status_message', 'time_stamp', 'var_horizon' ] return params
[docs] class VarPositionInfo(ReportsType):
[docs] def __init__(self, asset_id=None, asset_name=None, bond_issuer_type=None, book_id=None, book_name=None, business_unit=None, client=None, client_name=None, client_tradable_id=None, client_transaction_id=None, commodity_id=None, counterparty=None, counterparty_account=None, counterparty_name=None, date_label1=None, date_label2=None, dealer_name=None, dealer_status=None, dealing_bank=None, dealing_bank_name=None, decimal_label1=None, decimal_label2=None, entity=None, equity_asset_code=None, exchange=None, futures_contract_size=None, fx_cross=None, fx_cross_id=None, holding=None, instrument_code=None, issuer_name=None, leg=None, level1_portfolio_id=None, level1_portfolio_name=None, level2_portfolio_id=None, level2_portfolio_name=None, level3_portfolio_id=None, level3_portfolio_name=None, level4_portfolio_id=None, level4_portfolio_name=None, level5_portfolio_id=None, level5_portfolio_name=None, notes=None, quantity=None, sector=None, country_of_risk=None, contract_currency=None, security_type=None, strategy=None, structure=None, sub_business_unit=None, team=None, tradable=None, tradable_id=None, product_type=None, string_label1=None, string_label2=None, string_label3=None, string_label4=None, string_label5=None, string_label6=None, string_label7=None, string_label8=None, string_label9=None, string_label10=None, string_label11=None, string_label12=None, string_label13=None, string_label14=None, string_label15=None, ctpty_string_label1=None, ctpty_string_label2=None, ctpty_string_label3=None, calculated_string_label1=None, calculated_string_label2=None, calculated_string_label3=None, calculated_string_label4=None, **kwargs): """ : param asset_id: asset_id : param asset_name: asset_name : param bond_issuer_type: bond_issuer_type : param book_id: book_id : param book_name: book_name : param business_unit: business_unit : param client: client : param client_name: client_name : param client_tradable_id: client_tradable_id : param client_transaction_id: client_transaction_id : param commodity_id: commodity_id : param counterparty: counterparty : param counterparty_account: counterparty_account : param counterparty_name: counterparty_name : param date_label1: date_label1 : param date_label2: date_label2 : param dealer_name: dealer_name : param dealer_status: dealer_status : param dealing_bank: dealing_bank : param dealing_bank_name: dealing_bank_name : param decimal_label1: decimal_label1 : param decimal_label2: decimal_label2 : param entity: entity : param equity_asset_code: equity asset code : param exchange: exchange : param futures_contract_size: futures_contract_size : param fx_cross: fx_cross : param fx_cross_id: fx_cross_id : param holding: holding : param instrument_code: instrument_code : param issuer_name: issuer name : param leg: leg : param level1_portfolio_id: level1_portfolio_id : param level1_portfolio_name: level1_portfolio_name : param level2_portfolio_id: level2_portfolio_id : param level2_portfolio_name: level2_portfolio_name : param level3_portfolio_id: level3_portfolio_id : param level3_portfolio_name: level3_portfolio_name : param level4_portfolio_id: level4_portfolio_id : param level4_portfolio_name: level4_portfolio_name : param level5_portfolio_id: level5_portfolio_id : param level5_portfolio_name: level5_portfolio_name : param notes: notes : param quantity: quantity : param sector: sector : param country_of_risk: country_of_risk : param contract_currency: contract_currency : param security_type: security_type : param strategy: strategy : param structure: structure : param sub_business_unit: sub_business_unit : param team: team : param tradable: tradable : param tradableid: tradableid : param producttype: producttype : param string_label1: string_label1 : param string_label2: string_label2 : param string_label3: string_label3 : param string_label4: string_label4 : param string_label5: string_label5 : param ctpty_string_label1: ctpty_string_label1 : param ctpty_string_label2: ctpty_string_label2 : param ctpty_string_label3: ctpty_string_label3 : param calculated_string_label1: calculated_string_label1 : param calculated_string_label2: calculated_string_label2 : param calculated_string_label3: calculated_string_label3 : param calculated_stringlabel4: calculated_stringlabel4 """ self.asset_id = asset_id self.asset_name = asset_name self.bond_issuer_type = bond_issuer_type self.book_id = book_id self.book_name = book_name self.business_unit = business_unit self.client = client self.client_name = client_name self.client_tradable_id = client_tradable_id self.client_transaction_id = client_transaction_id self.commodity_id = commodity_id self.counterparty = counterparty self.counterparty_account = counterparty_account self.counterparty_name = counterparty_name self.date_label1 = date_label1 self.date_label2 = date_label2 self.dealer_name = dealer_name self.dealer_status = dealer_status self.dealing_bank = dealing_bank self.dealing_bank_name = dealing_bank_name self.decimal_label1 = decimal_label1 self.decimal_label2 = decimal_label2 self.entity = entity self.equity_asset_code = equity_asset_code self.exchange = exchange self.futures_contract_size = futures_contract_size self.fx_cross = fx_cross self.fx_cross_id = fx_cross_id self.holding = holding self.instrument_code = instrument_code self.issuer_name = issuer_name self.leg = leg self.level1_portfolio_id = level1_portfolio_id self.level1_portfolio_name = level1_portfolio_name self.level2_portfolio_id = level2_portfolio_id self.level2_portfolio_name = level2_portfolio_name self.level3_portfolio_id = level3_portfolio_id self.level3_portfolio_name = level3_portfolio_name self.level4_portfolio_id = level4_portfolio_id self.level4_portfolio_name = level4_portfolio_name self.level5_portfolio_id = level5_portfolio_id self.level5_portfolio_name = level5_portfolio_name self.notes = notes self.quantity = quantity self.sector = sector self.country_of_risk = country_of_risk self.contract_currency = contract_currency self.security_type = security_type self.strategy = strategy self.structure = structure self.sub_business_unit = sub_business_unit self.team = team self.tradable = tradable self.tradable_id = tradable_id self.product_type = product_type self.string_label1 = string_label1 self.string_label2 = string_label2 self.string_label3 = string_label3 self.string_label4 = string_label4 self.string_label5 = string_label5 self.string_label6 = string_label6 self.string_label7 = string_label7 self.string_label8 = string_label8 self.string_label9 = string_label9 self.string_label10 = string_label10 self.string_label11 = string_label11 self.string_label12 = string_label12 self.string_label13 = string_label13 self.string_label14 = string_label14 self.string_label15 = string_label15 self.ctpty_string_label1 = ctpty_string_label1 self.ctpty_string_label2 = ctpty_string_label2 self.ctpty_string_label3 = ctpty_string_label3 self.calculated_string_label1 = calculated_string_label1 self.calculated_string_label2 = calculated_string_label2 self.calculated_string_label3 = calculated_string_label3 self.calculated_string_label4 = calculated_string_label4
def json_params(self): params = [ 'asset_id', 'asset_name', 'bond_issuer_type', 'book_id', 'book_name', 'business_unit', 'client', 'client_name', 'client_tradable_id', 'client_transaction_id', 'commodity_id', 'counterparty', 'counterparty_account', 'counterparty_name', 'date_label1', 'date_label2', 'dealer_name', 'dealer_status', 'dealing_bank', 'dealing_bank_name', 'decimal_label1', 'decimal_label2', 'entity', 'equity_asset_code', 'exchange', 'futures_contract_size', 'fx_cross', 'fx_cross_id', 'holding', 'instrument_code', 'issuer_name', 'leg', 'level1_portfolio_id', 'level1_portfolio_name', 'level2_portfolio_id', 'level2_portfolio_name', 'level3_portfolio_id', 'level3_portfolio_name', 'level4_portfolio_id', 'level4_portfolio_name', 'level5_portfolio_id', 'level5_portfolio_name', 'notes', 'quantity', 'sector', 'country_of_risk', 'contract_currency', 'security_type', 'strategy', 'structure', 'sub_business_unit', 'team', 'tradable', 'tradable_id', 'product_type', 'string_label1', 'string_label2', 'string_label3', 'string_label4', 'string_label5', 'string_label6', 'string_label7', 'string_label8', 'string_label9', 'string_label10', 'string_label11', 'string_label12', 'string_label13', 'string_label14', 'string_label15', 'ctpty_string_label1', 'ctpty_string_label2', 'ctpty_string_label3', 'calculated_string_label1', 'calculated_string_label2', 'calculated_string_label3', 'calculated_string_label4' ] return params
[docs] class PnlReportData(ReportData):
[docs] def __init__(self, market_data_error_summary=None, portfolio_name=None, position_import_errors=None, real_time_market_data=None, report_id=None, reporting_currency=None, report_name=None, status=None, status_message=None, time_stamp=None, initial_date_time=None, final_date_time=None, data_tables=None): """ :param market_data_error_summary: market data error summary :param portfolio_name: portfolio name :param position_import_errors: position_import_errors :param report_id: report id :param reporting_currency: reporting currency :param report_name: report name :param status: status :param status_message: status message :param time_stamp: time tamp :param initial_date_time: pnl initial date :param final_date_time: pnl final date :param data_tables: report data tables """ self.initial_date_time = initial_date_time self.final_date_time = final_date_time self.data_tables = data_tables super(PnlReportData, self).__init__( market_data_error_summary=market_data_error_summary, portfolio_name=portfolio_name, position_import_errors=position_import_errors, real_time_market_data=real_time_market_data, report_id=report_id, report_name=report_name, reporting_currency=reporting_currency, status=status, status_message=status_message, time_stamp=time_stamp)
def json_params(self): params = [ 'initial_date_time', 'final_date_time', 'data_tables' ] params += super(PnlReportData, self).json_params() return params
[docs] class PnlReportInfo(ReportsType):
[docs] def __init__(self, description=None, id=None, portfolio_name=None, real_time_mkt_data=None, reporting_currency=None, report_name=None, status=None, status_message=None, time_stamp=None, initial_date_time=None, final_date_time=None): """ :param description: description :param id: id :param portfolio_name: portfolio name :param real_time_mkt_data: real time mkt data flag :param reporting_currency: reporting currency :param report_name: report name :param status: status :param status_message: status message :param time_stamp: time tamp :param initial_date_time: pnl initial date :param final_date_time: pnl final date """ self.description = description self.id = id self.portfolio_name = portfolio_name self.real_time_mkt_data = real_time_mkt_data self.report_name = report_name self.reporting_currency = reporting_currency self.status = status self.status_message = status_message self.time_stamp = time_stamp self.initial_date_time = initial_date_time self.final_date_time = final_date_time
def json_params(self): params = [ 'description', 'id', 'portfolio_name', 'real_time_mkt_data', 'report_name', 'reporting_currency', 'status', 'status_message', 'time_stamp', 'initial_date_time', 'final_date_time' ] params += super(PnlReportInfo, self).json_params() return params
[docs] class ReportMetaData(ReportsType):
[docs] def __init__(self, id=None, portfolio_type=None, portfolio_name=None, report_description=None, reporting_currency=None, report_name=None, report_view=None, status=None, status_message=None, eids=None, is_real_time_market_data=None, error_summary=None, position_import_errors=None, primary_market_data_environment_name=None): """ :param id: The report run id. :param portfolio_type: The portfolio type. :param portfolio_name: The portfolio name. :param report_description: The report description. :param reporting_currency: The reporting currency. :param report_name: The report name. :param report_view: The default report view. :param status: The report run status. :param status_message: The status message. :param eids: The entitlement ids required to view the report. :param is_real_time_market_data: Is real-time market data flag. :param error_summary: The market data error summary. :param position_import_errors: The position import errors. :param primary_market_data_environment_name: The custom market data name required to view the report. """ self.id = id self.portfolio_type = portfolio_type self.portfolio_name = portfolio_name self.report_description = report_description self.reporting_currency = reporting_currency self.report_name = report_name self.report_view = report_view self.status = status self.status_message = status_message self.eids = eids self.is_real_time_market_data = is_real_time_market_data self.error_summary = error_summary self.position_import_errors = position_import_errors self.primary_market_data_environment_name = primary_market_data_environment_name
def json_params(self): params = [ 'id', 'portfolio_type', 'portfolio_name', 'report_description', 'reporting_currency', 'report_name', 'report_view', 'status', 'status_message', 'eids', 'is_real_time_market_data', 'error_summary', 'position_import_errors', 'primary_market_data_environment_name', ] params += super(ReportMetaData, self).json_params() return params
[docs] class RiskReportMetaData(ReportMetaData):
[docs] def __init__(self, mkt_data_date=None, portfolio_date_time=None, pricing_date=None): super().__init__() """ :param mkt_data_date :param portfolio_date_time :param pricing_date """ self.mkt_data_date = mkt_data_date self.portfolio_date_time = portfolio_date_time self.pricing_date = pricing_date
def json_params(self): params = [ 'mkt_data_date' 'portfolio_date_time', 'pricing_date' ] params += super(RiskReportMetaData, self).json_params() return params
[docs] class PnlReportMetaData(ReportMetaData):
[docs] def __init__(self, final_date_time=None, initial_date_time=None, lookback_period=None): super().__init__() """ :param final_date_time :param initial_date_time :param lookback_period """ self.final_date_time = final_date_time self.initial_date_time = initial_date_time self.lookback_period = lookback_period
def json_params(self): params = [ 'final_date_time' 'portfolio_date_time', 'lookback_period' ] params += super(PnlReportMetaData, self).json_params() return params
[docs] class FilterBase(ABC):
[docs] def __init__(self, field: Optional[str] = None): self.field = field
def to_dict(self): return {"field": self.field}
[docs] class FilterType(Enum): EQUAL = "equal" CONTAIN = "contain" STARTSWITH = "startswith" ENDSWITH = "endswith" BLANK = "blank" NOT_EQUAL = "notEqual" NOT_CONTAIN = "notContain" NOT_STARTSWITH = "notStartswith" NOT_ENDSWITH = "notEndswith" NOT_BLANK = "notBlank"
[docs] class Filter(FilterBase, ABC):
[docs] def __init__(self, field: Optional[str] = None, filter_type: Optional[FilterType] = None): super().__init__(field=field) self.filter_type = filter_type
def to_dict(self): base = super().to_dict() base.update({"type": self.filter_type.value if self.filter_type else None}) return base
[docs] class StringFilter(Filter):
[docs] def __init__(self, filter_value: Optional[str] = None, field: Optional[str] = None, filter_type: Optional[FilterType] = None): super().__init__(field=field, filter_type=filter_type) self.filter = filter_value
def to_dict(self): base = super().to_dict() base.update({"$type": "StringFilter"}) base.update({"filter": self.filter}) return base
[docs] class MultiFilterOperator(Enum): NOT_SET = 0 AND = 1 OR = 2
[docs] class MultiFilter(FilterBase):
[docs] def __init__(self, operator: MultiFilterOperator = MultiFilterOperator.NOT_SET, conditions: Optional[List[FilterBase]] = None): super().__init__(field=None) self.operator = operator self.conditions = conditions if conditions is not None else []
def to_dict(self): return { "$type": "MultiFilter", "operator": self.operator.value, "conditions": [c.to_dict() for c in self.conditions] }
[docs] class DataTableQuery:
[docs] def __init__(self, filter: Optional[FilterBase] = None, columns: Optional[List[str]] = None): self.filter = filter self.columns = columns if columns is not None else []
def to_dict(self): return { "filter": self.filter.to_dict() if self.filter else None, "columns": self.columns, }