From 7bd0b6ea290735a35b433b70d12ef156777f39be Mon Sep 17 00:00:00 2001
From: Maxim Podosochnyy <podosochnyy@perx.ru>
Date: Wed, 26 Mar 2025 15:07:48 +0300
Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?=
 =?UTF-8?q?=D0=BD=D1=8B=20=D1=84=D0=BB=D0=B0=D0=B3=D0=B8=20=D0=B4=D0=BB?=
 =?UTF-8?q?=D1=8F=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=D1=81?=
 =?UTF-8?q?=D1=82=D0=B8=20=D1=83=D0=BA=D0=B0=D0=B7=D0=B0=D0=BD=D0=B8=D1=8F?=
 =?UTF-8?q?=20=D0=B4=D0=BE=D0=BF=D1=83=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82?=
 =?UTF-8?q?=D0=B8=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F?=
 =?UTF-8?q?=20/=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20item'?=
 =?UTF-8?q?=D0=BE=D0=B2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 examples/extension_service/servicer.py |  3 ++
 perxis/extensions/extension_setup.py   | 41 +++++++-------------------
 2 files changed, 13 insertions(+), 31 deletions(-)

diff --git a/examples/extension_service/servicer.py b/examples/extension_service/servicer.py
index f40984e..79aa7e5 100644
--- a/examples/extension_service/servicer.py
+++ b/examples/extension_service/servicer.py
@@ -87,6 +87,9 @@ class Servicer(ExtensionService):
         ),
         SyncPolicyItem(
             collection_id="test_collection",
+            # Запрет на изменение или удаление записи политики синхронизации
+            with_update=False,
+            with_delete=False,
         ),
         Item(
             collection_id="secrets",
diff --git a/perxis/extensions/extension_setup.py b/perxis/extensions/extension_setup.py
index 918f201..3bfa04e 100644
--- a/perxis/extensions/extension_setup.py
+++ b/perxis/extensions/extension_setup.py
@@ -584,19 +584,12 @@ class ExtensionSetup:
         )
 
         for item in self.items:
-            try:
-                if item.rules:
-                    all_rules_satisfied = all(
-                        [
-                            await rule(item, space_id, env_id)
-                            for rule
-                            in item.rules
-                        ]
-                    )
+            all_rules_satisfied = await item.all_rules_is_satisfied(space_id, env_id)
 
-                    if not all_rules_satisfied:
-                        continue
+            if not all_rules_satisfied:
+                continue
 
+            try:
                 message = await wrapper.find(
                     collection_id=item.collection_id,
                     env_id=env_id,
@@ -624,17 +617,10 @@ class ExtensionSetup:
         )
 
         for item in self.items:
-            if item.rules:
-                all_rules_satisfied = all(
-                    [
-                        await rule(item, space_id, env_id)
-                        for rule
-                        in item.rules
-                    ]
-                )
+            all_rules_satisfied = await item.all_rules_is_satisfied(space_id, env_id)
 
-                if not all_rules_satisfied:
-                    continue
+            if not all_rules_satisfied:
+                continue
 
             try:
                 message = await wrapper.find(
@@ -714,17 +700,10 @@ class ExtensionSetup:
         )
 
         for item in self.items:
-            if item.rules:
-                all_rules_satisfied = all(
-                    [
-                        await rule(item, space_id, env_id)
-                        for rule
-                        in item.rules
-                    ]
-                )
+            all_rules_satisfied = await item.all_rules_is_satisfied(space_id, env_id)
 
-                if not all_rules_satisfied:
-                    continue
+            if not all_rules_satisfied:
+                continue
 
             # Если установлен запрет на удаление item'ов
             if not item.with_delete:
-- 
GitLab