Перейти к содержанию

CAttributes

Класс для взаимодействия с атрибутами объектов.

Учитывается только метаинформация по атрибутам (имя, тип), значения не учитываются.

Инициализация

Раздел для опытных пользователей

Отдельно инициализировать класс не нужно, т.к. он приходит при получении данных справочника.

from src.service_dictionary.elements.attributes import CAttributes
CAttributes(
    fields: Optional[List[Dict]] = None,
    create_new: bool = True,
    find_hierarchy_by_name: bool = False
)
  • fields - массив с описанием атрибутов;
  • create_new - флаг создания нового набора атрибутов;
  • find_hierarchy_by_name - флаг поиска иерархии по идентификаторам атрибутов.

Можно не передавать атрибуты при инициализации, а добавить их позднее, методами add_attributes или refresh_attributes.

Очистка класса

При ручной инициализации класса, необходимо вызвать очистку (метод .clear()) после завершения работы.

Параметры

  • attributes: Dict[str, CAttribute] - Словарь с атрибутами формата {<attribute_id>: <attribute>}

Свойства

  • empty -> bool - Флаг отсутствия элементов атрибута. Не учитывает системные атрибуты;
  • system_attributes -> List[CAttribute] - Получение всех системных атрибутов;
  • has_basic_hierarchy -> bool - Флаг наличия базовой иерархии;
  • has_alt_hierarchy -> bool - Флаг наличия атрибутов, отвечающих за альтернативную иерархию;
  • alt_hierarchy_attributes -> List[CAttribute] - Список атрибутов, отвечающих за альтернативную иерархию;
  • structure -> Dict - Получение структуры объекта в формате:
    {
        <name>, 
        <id>, 
        <type>, 
        <mandatory (not null)>, 
        <primary_key>
    }
    

Методы

__getitem__

Получение атрибута по его ключу. В случае отсутствия такого ключа атрибута - вернется None.

__getitem__(key: str) -> Optional[CAttribute]

  • key - ключ атрибута.
Пример
attributes = CAttributes(...)
attribute = attributes[key]

__setitem__

Изменение атрибута по его ключу.

__setitem__(key: str, value: CAttribute) -> None

  • key- ключ атрибута;
  • value - атрибут.
Пример
attributes = CAttributes(...)
attributes[key] = new_attribute

__len__

Получение количества атрибутов.

__len__() -> int

Пример
attributes = CAttributes(...)
count = len(attributes)

add_attributes

Добавление новых атрибутов.

add_attributes(fields: List[Dict] = ()) -> None

all_id

Получение идентификаторов всех атрибутов.

all_id(system: bool = False) -> List[str]

clear

Очистка класса справочника, для его корректной обработки сборщиком мусора.

clear() -> None

get_by_id

Получение атрибута по идентификатору.

get_by_id(ident: str) -> Optional[CAttribute]

has_selected_id

Проверка наличия атрибута.

has_selected_id(ident: str) -> bool

primary_keys

Получение первичных ключей.

primary_keys(system: bool = False) -> List[CAttribute]

primary_keys_id

Получение идентификаторов первичных ключей.

primary_keys_id(system: bool = False) -> List[str]

refresh_attributes

Обновление списка атрибутов.

refresh_attributes(fields: List[Dict] = ()) -> None

validate_params

Валидация параметров атрибута. Происходит автоматически при вызове метода refresh_attributes.

validate_params() -> None

serialize

Сериализация атрибутов справочника массив.

serialize() -> List[Dict]

serialize_with_values

Сериализация атрибутов справочника с добавлением значений.

serialize_with_values(values: List) -> List[Dict]

  • values - массив значений атрибутов. Сопоставление атрибута со значениями происходит по индексам.