xia_fields.base.ComplexField

class xia_fields.base.ComplexField(required: bool = False, default: Optional[Any] = None, validation: Optional[callable] = None, value_min: Optional[Any] = None, value_max: Optional[Any] = None, choices: Optional[list] = None, description: Optional[str] = None, runtime: bool = False, stateful: bool = True, hidden: bool = False, sample: Optional[Any] = None, display: Optional[dict] = None, **kwargs)

Bases: BaseField

Complex Field Definition

__init__(required: bool = False, default: Optional[Any] = None, validation: Optional[callable] = None, value_min: Optional[Any] = None, value_max: Optional[Any] = None, choices: Optional[list] = None, description: Optional[str] = None, runtime: bool = False, stateful: bool = True, hidden: bool = False, sample: Optional[Any] = None, display: Optional[dict] = None, **kwargs)
Parameters
  • required (bool) – The field is required

  • default (Any) – Default value of the field

  • validation (callable) – A custom validation function

  • value_min (Any) – Minimum accepted value

  • value_max (Any) – Maximum accepted value

  • choices (list) – List of accepted value

  • description (str) – Description of the field

  • runtime (bool) – value has runtime form

  • stateful (bool) – value should be store in the database

  • hidden (bool) – value shouldn’t be shown to the display

  • sample (Any) – example value of this field (in internal / runtime form)

  • display (dict) – Define some display related settings (display format, readonly etc…)

Methods

__init__([required, default, validation, ...])

param required

The field is required

from_db(value, /[, decoder, engine])

Value transformation from database form

from_display(value[, runtime_display])

Value transformation from display form to internal form

from_runtime(runtime_value, /)

Value transformation from runtime value to internal form

get_sample()

Get a sample value of a field

get_value([value, runtime_value])

Get runtime value when it is necessary

guess_value([value])

Guess field value

to_db(value[, runtime_value, catalog, ...])

Value transformation to database form

to_display(value[, runtime_value])

Value transformation to display form

validate(value[, runtime_value])

Validate data

Attributes

SAMPLE_DICT

db_form

detail_form

display_form

internal_form

runtime_form

from_db(value: Any, /, decoder: callable = None, engine=None)

Value transformation from database form

Parameters
  • decoder (callable) – Encode the value

  • value (any) – value to be transformed from database form to internal form

  • engine (BaseEngine) – Engine to be passed

Returns

internal value and runtime value tuple

from_display(value: Any, runtime_display: Any = None, /)

Value transformation from display form to internal form

Parameters
  • value (any) – display value to be transformed

  • runtime_display (any) – display runtime value to be transformed

from_runtime(runtime_value: Any, /)

Value transformation from runtime value to internal form

Parameters

runtime_value – runtime value

get_sample()

Get a sample value of a field

Returns

sample value

Return type

object

get_value(value: Any = None, runtime_value: Any = None, /, **kwargs)

Get runtime value when it is necessary

Parameters
  • value (any) – value on internal form. could be None for no-stateful fields

  • runtime_value (any) – value of runtime value. could be None when the data is not loaded

guess_value(value: Optional[Any] = None)

Guess field value

Guess field value is normally called when parsing front. The general rules are:
  • If the fields is type runtime
    • Check if the input is type of runtime or detail form

    • When true, the output guess will be a tuple contain internal form, runtime form

  • Or the check will continue to see if it is display form or db_form
    • When found, it will return internal form

    • When field is runtime type, will return internal from, None (lazy load mode)

Parameters

value – value to be guessed

Notes

The default priority

to_db(value: Any, runtime_value: Any = None, /, catalog: dict = None, encoder: callable = None, ignore_unknown: bool = False, engine=None)

Value transformation to database form

Parameters
  • encoder (callable) – Encode the value

  • runtime_value (any) – runtime value to be transformed

  • value (any) – value to be transformed from internal form to database form

  • catalog (dict) – Data catalog to decide if the field will be shown or not

  • ignore_unknown (bool) – If the unknown field should be ignored

  • engine (BaseEngine) – Engine to be passed

to_display(value: Any, runtime_value: Any = None, /, **kwargs)

Value transformation to display form

Parameters
  • value (any) – value to be transformed from internal form to database form

  • runtime_value (any) – value of runtime value. could be None when the data is not loaded

validate(value: Any, runtime_value: Any = None, /)

Validate data

Parameters
  • value (any) – internal value to be validated

  • runtime_value (any) – runtime data to be validated

Notes

  • No exception raised = validation passed