perxis.extensions.item_models
Модуль содержит классы для работы с item'ами в расширениях
1""" 2Модуль содержит классы для работы с item'ами в расширениях 3""" 4 5 6import abc 7from typing import TypedDict, NotRequired 8 9from google.protobuf.struct_pb2 import Struct 10 11from perxis.extensions.item_rules import AbstractRule, IfCollectionExists, IfExtensionInstalled 12 13 14class DataSourceData(TypedDict): 15 """ 16 Маппинг для объекта data элементов коллекции web_datasources 17 """ 18 query: NotRequired[str] 19 content_type: NotRequired[str] 20 exclude: NotRequired[bool] 21 with_update: NotRequired[bool] 22 with_delete: NotRequired[bool] 23 24 25class SyncPolicyData(TypedDict): 26 """ 27 Маппинг для объекта data элементов коллекции hoop_item_sync_policies 28 """ 29 30 key: NotRequired[str] 31 export_view: NotRequired[bool] 32 remove_collection: NotRequired[bool] 33 deny_publish: NotRequired[bool] 34 deny_delete: NotRequired[bool] 35 deny_create: NotRequired[bool] 36 deny_read: NotRequired[bool] 37 hidden: NotRequired[bool] 38 with_update: NotRequired[bool] 39 with_delete: NotRequired[bool] 40 41 42class AbstractItem(metaclass=abc.ABCMeta): 43 """ 44 Абстрактный класс для item'а. Нужен для определения общих свойств без реализации какого 45 то конкретного конструктора. 46 47 Attributes: 48 collection_id (str): идентификатор коллекции 49 data (dict): данные item'а 50 rules (list[AbstractRule]): список правил применения item'а 51 identifier_field (str): поле по которому будет производиться поиск элемента в perxis 52 with_update (bool): указание возможности обновления элемента при установке или удалении расширения 53 в случае если он уже существует в perxis 54 with_delete (bool): указание возможности удаления элемента в случае если он существует в perxis при 55 удалении расширения 56 """ 57 58 collection_id: str 59 data: dict 60 61 rules: list[AbstractRule] 62 identifier_field: str = "id" 63 with_update: bool 64 with_delete: bool 65 66 @property 67 def identifier(self): 68 """ 69 Метод для получения значения идентификатора элемента из данных 70 71 Returns: 72 str 73 """ 74 return self.data[self.identifier_field] 75 76 @property 77 def struct(self) -> Struct: 78 """ 79 Метод для преобразования данных элемента из dict в Struct 80 81 Returns: 82 Struct 83 """ 84 85 s = Struct() 86 s.update(self.data) 87 88 return s 89 90 async def all_rules_is_satisfied(self, space_id: str, env_id: str) -> bool: 91 """ 92 Метод для проверки применимости всех правил item'а для указанных пространства и окружения. 93 Возвращает True в случае если все указанные для item'а правила вернули True 94 95 Arguments: 96 space_id (str): идентификатор пространства 97 env_id (str): идентификатор окружения 98 Returns: 99 bool 100 """ 101 102 return all( 103 [ 104 await rule(item=self, space_id=space_id, env_id=env_id) 105 for rule 106 in self.rules 107 ] 108 ) 109 110 def merge_data(self, data_from_perxis: dict) -> Struct: 111 """ 112 Метод для слияния данных из perxis и расширения. Нужен для того чтобы не затирать те поля 113 что были заполнены в базе данных но отсутствуют в item'е расширения. В приоритете данные расширения, если что-то 114 из них было вручную изменено в perxis - значение будет затёрто 115 116 Пример. 117 ``` 118 # Данные в perxis 119 { 120 "a": 1, 121 "b": 2, 122 "c": 3, 123 } 124 125 # Данные в расширении 126 { 127 "b": 1, 128 "c": 3, 129 } 130 131 # Итоговый результат 132 { 133 "a": 1, 134 "b": 1, 135 "c": 3, 136 } 137 ``` 138 """ 139 140 s = Struct() 141 s.update({ 142 **data_from_perxis, 143 **self.data, 144 }) 145 146 return s 147 148 149class Item(AbstractItem): 150 """ 151 Общий класс для любого Item 152 """ 153 154 def __init__( 155 self, 156 collection_id: str, 157 data: dict, 158 with_update: bool = True, 159 with_delete: bool = True, 160 identifier_field: str = "id", 161 rules: list[AbstractRule] | None = None 162 ): 163 """ 164 Arguments: 165 collection_id (str): идентификатор коллекции 166 data (dict): данные item'а 167 with_update (bool): указание возможности обновления элемента при установке или удалении расширения 168 в случае если он уже существует в perxis 169 with_delete (bool): указание возможности удаления элемента в случае если он существует в perxis при 170 удалении расширения 171 rules (list[AbstractRule]): список правил применения item'а 172 identifier_field (str): поле по которому будет производиться поиск элемента в perxis 173 """ 174 175 self.collection_id = collection_id 176 self.data = data 177 self.identifier_field = identifier_field 178 self.rules = rules or [] 179 self.with_update = with_update 180 self.with_delete = with_delete 181 182 183class DataSourceItem(AbstractItem): 184 """ 185 Класс для системной коллекции web_datasources. По умолчанию имеет указание проверки 186 наличия коллекции в rules 187 """ 188 189 def __init__( 190 self, 191 collection_id: str, 192 rules: list[AbstractRule] | None = None, 193 query: str = "", 194 content_type: str = "", 195 exclude: bool = False, 196 with_update: bool = True, 197 with_delete: bool = True, 198 ): 199 """ 200 Arguments: 201 collection_id (str): Идентификатор коллекции для выгрузки данных 202 query (str): Фильтр по данным 203 content_type (str): Настройки типа данных 204 exclude (bool): Не выгружать источник в каталог данных 205 with_update (bool): указание возможности обновления элемента при установке или удалении расширения 206 в случае если он уже существует в perxis 207 with_delete (bool): указание возможности удаления элемента в случае если он существует в perxis при 208 удалении расширения 209 rules (list[AbstractRule]): список правил применения item'а 210 """ 211 212 self.collection_id = "web_datasources" 213 self.rules = rules or [IfCollectionExists()] 214 self.data = { 215 "id": collection_id, 216 "collection": collection_id, 217 "query": query, 218 "content_type": content_type, 219 "exclude": exclude, 220 } 221 222 self.with_update = with_update 223 self.with_delete = with_delete 224 225 226class SyncPolicyItem(AbstractItem): 227 """ 228 Класс для коллекции hoop_item_sync_policies расширения perxishoop. По умолчанию item имеет 229 правило для проверки установленного расширения perxishoop. В качестве идентификатора записи 230 используется поле `collection` 231 """ 232 identifier_field = "collection" 233 234 def __init__( 235 self, 236 collection_id: str, 237 name: str = "", 238 key: str = "id", 239 export_view: bool = False, 240 remove_collection: bool = False, 241 deny_publish: bool = False, 242 deny_delete: bool = False, 243 deny_create: bool = False, 244 deny_read: bool = False, 245 hidden: bool = False, 246 rules: list[AbstractRule] | None = None, 247 with_update: bool = False, 248 with_delete: bool = False, 249 ): 250 """ 251 Arguments: 252 collection_id (str): Идентификатор коллекции для выгрузки данных 253 name (str): Название 254 key (str): Ключ для синхронизации 255 export_view (bool): Создать отображение коллекции 256 remove_collection (bool): Удалить коллекцию 257 deny_publish (bool): Запретить операции с публикацией элементов ведущего пространства 258 deny_delete (bool): Запретить удаление элементов ведущего пространства 259 deny_create (bool): Запретить создавать новые элементы 260 deny_read (bool): Запретить чтение элементов 261 hidden (bool): Скрыть коллекцию 262 263 with_update (bool): указание возможности обновления элемента при установке или удалении расширения 264 в случае если он уже существует в perxis 265 with_delete (bool): указание возможности удаления элемента в случае если он существует в perxis при 266 удалении расширения 267 rules (list[AbstractRule]): список правил применения item'а 268 """ 269 270 self.collection_id = "hoop_item_sync_policies" 271 self.rules = rules or [IfExtensionInstalled("perxishoop")] 272 273 self.data = { 274 "name": name or f"Коллекция {collection_id}", 275 "collection": collection_id, 276 "key": key, 277 "export_view": export_view, 278 "remove_collection": remove_collection, 279 "deny_publish": deny_publish, 280 "deny_delete": deny_delete, 281 "deny_create": deny_create, 282 "deny_read": deny_read, 283 "hidden": hidden, 284 } 285 286 self.with_update = with_update 287 self.with_delete = with_delete
15class DataSourceData(TypedDict): 16 """ 17 Маппинг для объекта data элементов коллекции web_datasources 18 """ 19 query: NotRequired[str] 20 content_type: NotRequired[str] 21 exclude: NotRequired[bool] 22 with_update: NotRequired[bool] 23 with_delete: NotRequired[bool]
Маппинг для объекта data элементов коллекции web_datasources
26class SyncPolicyData(TypedDict): 27 """ 28 Маппинг для объекта data элементов коллекции hoop_item_sync_policies 29 """ 30 31 key: NotRequired[str] 32 export_view: NotRequired[bool] 33 remove_collection: NotRequired[bool] 34 deny_publish: NotRequired[bool] 35 deny_delete: NotRequired[bool] 36 deny_create: NotRequired[bool] 37 deny_read: NotRequired[bool] 38 hidden: NotRequired[bool] 39 with_update: NotRequired[bool] 40 with_delete: NotRequired[bool]
Маппинг для объекта data элементов коллекции hoop_item_sync_policies
43class AbstractItem(metaclass=abc.ABCMeta): 44 """ 45 Абстрактный класс для item'а. Нужен для определения общих свойств без реализации какого 46 то конкретного конструктора. 47 48 Attributes: 49 collection_id (str): идентификатор коллекции 50 data (dict): данные item'а 51 rules (list[AbstractRule]): список правил применения item'а 52 identifier_field (str): поле по которому будет производиться поиск элемента в perxis 53 with_update (bool): указание возможности обновления элемента при установке или удалении расширения 54 в случае если он уже существует в perxis 55 with_delete (bool): указание возможности удаления элемента в случае если он существует в perxis при 56 удалении расширения 57 """ 58 59 collection_id: str 60 data: dict 61 62 rules: list[AbstractRule] 63 identifier_field: str = "id" 64 with_update: bool 65 with_delete: bool 66 67 @property 68 def identifier(self): 69 """ 70 Метод для получения значения идентификатора элемента из данных 71 72 Returns: 73 str 74 """ 75 return self.data[self.identifier_field] 76 77 @property 78 def struct(self) -> Struct: 79 """ 80 Метод для преобразования данных элемента из dict в Struct 81 82 Returns: 83 Struct 84 """ 85 86 s = Struct() 87 s.update(self.data) 88 89 return s 90 91 async def all_rules_is_satisfied(self, space_id: str, env_id: str) -> bool: 92 """ 93 Метод для проверки применимости всех правил item'а для указанных пространства и окружения. 94 Возвращает True в случае если все указанные для item'а правила вернули True 95 96 Arguments: 97 space_id (str): идентификатор пространства 98 env_id (str): идентификатор окружения 99 Returns: 100 bool 101 """ 102 103 return all( 104 [ 105 await rule(item=self, space_id=space_id, env_id=env_id) 106 for rule 107 in self.rules 108 ] 109 ) 110 111 def merge_data(self, data_from_perxis: dict) -> Struct: 112 """ 113 Метод для слияния данных из perxis и расширения. Нужен для того чтобы не затирать те поля 114 что были заполнены в базе данных но отсутствуют в item'е расширения. В приоритете данные расширения, если что-то 115 из них было вручную изменено в perxis - значение будет затёрто 116 117 Пример. 118 ``` 119 # Данные в perxis 120 { 121 "a": 1, 122 "b": 2, 123 "c": 3, 124 } 125 126 # Данные в расширении 127 { 128 "b": 1, 129 "c": 3, 130 } 131 132 # Итоговый результат 133 { 134 "a": 1, 135 "b": 1, 136 "c": 3, 137 } 138 ``` 139 """ 140 141 s = Struct() 142 s.update({ 143 **data_from_perxis, 144 **self.data, 145 }) 146 147 return s
Абстрактный класс для item'а. Нужен для определения общих свойств без реализации какого то конкретного конструктора.
Attributes:
- collection_id (str): идентификатор коллекции
- data (dict): данные item'а
- rules (list[AbstractRule]): список правил применения item'а
- identifier_field (str): поле по которому будет производиться поиск элемента в perxis
- with_update (bool): указание возможности обновления элемента при установке или удалении расширения в случае если он уже существует в perxis
- with_delete (bool): указание возможности удаления элемента в случае если он существует в perxis при удалении расширения
67 @property 68 def identifier(self): 69 """ 70 Метод для получения значения идентификатора элемента из данных 71 72 Returns: 73 str 74 """ 75 return self.data[self.identifier_field]
Метод для получения значения идентификатора элемента из данных
Returns:
str
77 @property 78 def struct(self) -> Struct: 79 """ 80 Метод для преобразования данных элемента из dict в Struct 81 82 Returns: 83 Struct 84 """ 85 86 s = Struct() 87 s.update(self.data) 88 89 return s
Метод для преобразования данных элемента из dict в Struct
Returns:
Struct
91 async def all_rules_is_satisfied(self, space_id: str, env_id: str) -> bool: 92 """ 93 Метод для проверки применимости всех правил item'а для указанных пространства и окружения. 94 Возвращает True в случае если все указанные для item'а правила вернули True 95 96 Arguments: 97 space_id (str): идентификатор пространства 98 env_id (str): идентификатор окружения 99 Returns: 100 bool 101 """ 102 103 return all( 104 [ 105 await rule(item=self, space_id=space_id, env_id=env_id) 106 for rule 107 in self.rules 108 ] 109 )
Метод для проверки применимости всех правил item'а для указанных пространства и окружения. Возвращает True в случае если все указанные для item'а правила вернули True
Arguments:
- space_id (str): идентификатор пространства
- env_id (str): идентификатор окружения
Returns:
bool
111 def merge_data(self, data_from_perxis: dict) -> Struct: 112 """ 113 Метод для слияния данных из perxis и расширения. Нужен для того чтобы не затирать те поля 114 что были заполнены в базе данных но отсутствуют в item'е расширения. В приоритете данные расширения, если что-то 115 из них было вручную изменено в perxis - значение будет затёрто 116 117 Пример. 118 ``` 119 # Данные в perxis 120 { 121 "a": 1, 122 "b": 2, 123 "c": 3, 124 } 125 126 # Данные в расширении 127 { 128 "b": 1, 129 "c": 3, 130 } 131 132 # Итоговый результат 133 { 134 "a": 1, 135 "b": 1, 136 "c": 3, 137 } 138 ``` 139 """ 140 141 s = Struct() 142 s.update({ 143 **data_from_perxis, 144 **self.data, 145 }) 146 147 return s
Метод для слияния данных из perxis и расширения. Нужен для того чтобы не затирать те поля что были заполнены в базе данных но отсутствуют в item'е расширения. В приоритете данные расширения, если что-то из них было вручную изменено в perxis - значение будет затёрто
Пример.
# Данные в perxis
{
"a": 1,
"b": 2,
"c": 3,
}
# Данные в расширении
{
"b": 1,
"c": 3,
}
# Итоговый результат
{
"a": 1,
"b": 1,
"c": 3,
}
150class Item(AbstractItem): 151 """ 152 Общий класс для любого Item 153 """ 154 155 def __init__( 156 self, 157 collection_id: str, 158 data: dict, 159 with_update: bool = True, 160 with_delete: bool = True, 161 identifier_field: str = "id", 162 rules: list[AbstractRule] | None = None 163 ): 164 """ 165 Arguments: 166 collection_id (str): идентификатор коллекции 167 data (dict): данные item'а 168 with_update (bool): указание возможности обновления элемента при установке или удалении расширения 169 в случае если он уже существует в perxis 170 with_delete (bool): указание возможности удаления элемента в случае если он существует в perxis при 171 удалении расширения 172 rules (list[AbstractRule]): список правил применения item'а 173 identifier_field (str): поле по которому будет производиться поиск элемента в perxis 174 """ 175 176 self.collection_id = collection_id 177 self.data = data 178 self.identifier_field = identifier_field 179 self.rules = rules or [] 180 self.with_update = with_update 181 self.with_delete = with_delete
Общий класс для любого Item
155 def __init__( 156 self, 157 collection_id: str, 158 data: dict, 159 with_update: bool = True, 160 with_delete: bool = True, 161 identifier_field: str = "id", 162 rules: list[AbstractRule] | None = None 163 ): 164 """ 165 Arguments: 166 collection_id (str): идентификатор коллекции 167 data (dict): данные item'а 168 with_update (bool): указание возможности обновления элемента при установке или удалении расширения 169 в случае если он уже существует в perxis 170 with_delete (bool): указание возможности удаления элемента в случае если он существует в perxis при 171 удалении расширения 172 rules (list[AbstractRule]): список правил применения item'а 173 identifier_field (str): поле по которому будет производиться поиск элемента в perxis 174 """ 175 176 self.collection_id = collection_id 177 self.data = data 178 self.identifier_field = identifier_field 179 self.rules = rules or [] 180 self.with_update = with_update 181 self.with_delete = with_delete
Arguments:
- collection_id (str): идентификатор коллекции
- data (dict): данные item'а
- with_update (bool): указание возможности обновления элемента при установке или удалении расширения в случае если он уже существует в perxis
- with_delete (bool): указание возможности удаления элемента в случае если он существует в perxis при удалении расширения
- rules (list[AbstractRule]): список правил применения item'а
- identifier_field (str): поле по которому будет производиться поиск элемента в perxis
Inherited Members
184class DataSourceItem(AbstractItem): 185 """ 186 Класс для системной коллекции web_datasources. По умолчанию имеет указание проверки 187 наличия коллекции в rules 188 """ 189 190 def __init__( 191 self, 192 collection_id: str, 193 rules: list[AbstractRule] | None = None, 194 query: str = "", 195 content_type: str = "", 196 exclude: bool = False, 197 with_update: bool = True, 198 with_delete: bool = True, 199 ): 200 """ 201 Arguments: 202 collection_id (str): Идентификатор коллекции для выгрузки данных 203 query (str): Фильтр по данным 204 content_type (str): Настройки типа данных 205 exclude (bool): Не выгружать источник в каталог данных 206 with_update (bool): указание возможности обновления элемента при установке или удалении расширения 207 в случае если он уже существует в perxis 208 with_delete (bool): указание возможности удаления элемента в случае если он существует в perxis при 209 удалении расширения 210 rules (list[AbstractRule]): список правил применения item'а 211 """ 212 213 self.collection_id = "web_datasources" 214 self.rules = rules or [IfCollectionExists()] 215 self.data = { 216 "id": collection_id, 217 "collection": collection_id, 218 "query": query, 219 "content_type": content_type, 220 "exclude": exclude, 221 } 222 223 self.with_update = with_update 224 self.with_delete = with_delete
Класс для системной коллекции web_datasources. По умолчанию имеет указание проверки наличия коллекции в rules
190 def __init__( 191 self, 192 collection_id: str, 193 rules: list[AbstractRule] | None = None, 194 query: str = "", 195 content_type: str = "", 196 exclude: bool = False, 197 with_update: bool = True, 198 with_delete: bool = True, 199 ): 200 """ 201 Arguments: 202 collection_id (str): Идентификатор коллекции для выгрузки данных 203 query (str): Фильтр по данным 204 content_type (str): Настройки типа данных 205 exclude (bool): Не выгружать источник в каталог данных 206 with_update (bool): указание возможности обновления элемента при установке или удалении расширения 207 в случае если он уже существует в perxis 208 with_delete (bool): указание возможности удаления элемента в случае если он существует в perxis при 209 удалении расширения 210 rules (list[AbstractRule]): список правил применения item'а 211 """ 212 213 self.collection_id = "web_datasources" 214 self.rules = rules or [IfCollectionExists()] 215 self.data = { 216 "id": collection_id, 217 "collection": collection_id, 218 "query": query, 219 "content_type": content_type, 220 "exclude": exclude, 221 } 222 223 self.with_update = with_update 224 self.with_delete = with_delete
Arguments:
- collection_id (str): Идентификатор коллекции для выгрузки данных
- query (str): Фильтр по данным
- content_type (str): Настройки типа данных
- exclude (bool): Не выгружать источник в каталог данных
- with_update (bool): указание возможности обновления элемента при установке или удалении расширения в случае если он уже существует в perxis
- with_delete (bool): указание возможности удаления элемента в случае если он существует в perxis при удалении расширения
- rules (list[AbstractRule]): список правил применения item'а
Inherited Members
227class SyncPolicyItem(AbstractItem): 228 """ 229 Класс для коллекции hoop_item_sync_policies расширения perxishoop. По умолчанию item имеет 230 правило для проверки установленного расширения perxishoop. В качестве идентификатора записи 231 используется поле `collection` 232 """ 233 identifier_field = "collection" 234 235 def __init__( 236 self, 237 collection_id: str, 238 name: str = "", 239 key: str = "id", 240 export_view: bool = False, 241 remove_collection: bool = False, 242 deny_publish: bool = False, 243 deny_delete: bool = False, 244 deny_create: bool = False, 245 deny_read: bool = False, 246 hidden: bool = False, 247 rules: list[AbstractRule] | None = None, 248 with_update: bool = False, 249 with_delete: bool = False, 250 ): 251 """ 252 Arguments: 253 collection_id (str): Идентификатор коллекции для выгрузки данных 254 name (str): Название 255 key (str): Ключ для синхронизации 256 export_view (bool): Создать отображение коллекции 257 remove_collection (bool): Удалить коллекцию 258 deny_publish (bool): Запретить операции с публикацией элементов ведущего пространства 259 deny_delete (bool): Запретить удаление элементов ведущего пространства 260 deny_create (bool): Запретить создавать новые элементы 261 deny_read (bool): Запретить чтение элементов 262 hidden (bool): Скрыть коллекцию 263 264 with_update (bool): указание возможности обновления элемента при установке или удалении расширения 265 в случае если он уже существует в perxis 266 with_delete (bool): указание возможности удаления элемента в случае если он существует в perxis при 267 удалении расширения 268 rules (list[AbstractRule]): список правил применения item'а 269 """ 270 271 self.collection_id = "hoop_item_sync_policies" 272 self.rules = rules or [IfExtensionInstalled("perxishoop")] 273 274 self.data = { 275 "name": name or f"Коллекция {collection_id}", 276 "collection": collection_id, 277 "key": key, 278 "export_view": export_view, 279 "remove_collection": remove_collection, 280 "deny_publish": deny_publish, 281 "deny_delete": deny_delete, 282 "deny_create": deny_create, 283 "deny_read": deny_read, 284 "hidden": hidden, 285 } 286 287 self.with_update = with_update 288 self.with_delete = with_delete
Класс для коллекции hoop_item_sync_policies расширения perxishoop. По умолчанию item имеет
правило для проверки установленного расширения perxishoop. В качестве идентификатора записи
используется поле collection
235 def __init__( 236 self, 237 collection_id: str, 238 name: str = "", 239 key: str = "id", 240 export_view: bool = False, 241 remove_collection: bool = False, 242 deny_publish: bool = False, 243 deny_delete: bool = False, 244 deny_create: bool = False, 245 deny_read: bool = False, 246 hidden: bool = False, 247 rules: list[AbstractRule] | None = None, 248 with_update: bool = False, 249 with_delete: bool = False, 250 ): 251 """ 252 Arguments: 253 collection_id (str): Идентификатор коллекции для выгрузки данных 254 name (str): Название 255 key (str): Ключ для синхронизации 256 export_view (bool): Создать отображение коллекции 257 remove_collection (bool): Удалить коллекцию 258 deny_publish (bool): Запретить операции с публикацией элементов ведущего пространства 259 deny_delete (bool): Запретить удаление элементов ведущего пространства 260 deny_create (bool): Запретить создавать новые элементы 261 deny_read (bool): Запретить чтение элементов 262 hidden (bool): Скрыть коллекцию 263 264 with_update (bool): указание возможности обновления элемента при установке или удалении расширения 265 в случае если он уже существует в perxis 266 with_delete (bool): указание возможности удаления элемента в случае если он существует в perxis при 267 удалении расширения 268 rules (list[AbstractRule]): список правил применения item'а 269 """ 270 271 self.collection_id = "hoop_item_sync_policies" 272 self.rules = rules or [IfExtensionInstalled("perxishoop")] 273 274 self.data = { 275 "name": name or f"Коллекция {collection_id}", 276 "collection": collection_id, 277 "key": key, 278 "export_view": export_view, 279 "remove_collection": remove_collection, 280 "deny_publish": deny_publish, 281 "deny_delete": deny_delete, 282 "deny_create": deny_create, 283 "deny_read": deny_read, 284 "hidden": hidden, 285 } 286 287 self.with_update = with_update 288 self.with_delete = with_delete
Arguments:
- collection_id (str): Идентификатор коллекции для выгрузки данных
- name (str): Название
- key (str): Ключ для синхронизации
- export_view (bool): Создать отображение коллекции
- remove_collection (bool): Удалить коллекцию
- deny_publish (bool): Запретить операции с публикацией элементов ведущего пространства
- deny_delete (bool): Запретить удаление элементов ведущего пространства
- deny_create (bool): Запретить создавать новые элементы
- deny_read (bool): Запретить чтение элементов
- hidden (bool): Скрыть коллекцию
- with_update (bool): указание возможности обновления элемента при установке или удалении расширения в случае если он уже существует в perxis
- with_delete (bool): указание возможности удаления элемента в случае если он существует в perxis при удалении расширения
- rules (list[AbstractRule]): список правил применения item'а