From 128bdf5ec49a474245a2d4be59076be0f7e1c006 Mon Sep 17 00:00:00 2001 From: IRBorisov <8611739+IRBorisov@users.noreply.github.com> Date: Fri, 26 Apr 2024 09:56:56 +0300 Subject: [PATCH] Fix: do not allow base and constant sets to have children --- rsconcept/backend/apps/rsform/models/api_RSForm.py | 7 ++++++- rsconcept/backend/apps/rsform/tests/s_models/t_RSForm.py | 6 ++++++ rsconcept/frontend/src/models/RSFormLoader.ts | 7 ++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/rsconcept/backend/apps/rsform/models/api_RSForm.py b/rsconcept/backend/apps/rsform/models/api_RSForm.py index 31ff352a..80afc639 100644 --- a/rsconcept/backend/apps/rsform/models/api_RSForm.py +++ b/rsconcept/backend/apps/rsform/models/api_RSForm.py @@ -506,7 +506,12 @@ class SemanticInfo: sources = self._extract_sources(target) if len(sources) != 1: return target.id - return next(iter(sources)) + + parent_id = next(iter(sources)) + parent = self._cst_by_ID[parent_id] + if is_base_set(parent.cst_type): + return target.id + return parent_id def _extract_sources(self, target: Constituenta) -> set[int]: sources: set[int] = set() diff --git a/rsconcept/backend/apps/rsform/tests/s_models/t_RSForm.py b/rsconcept/backend/apps/rsform/tests/s_models/t_RSForm.py index 83eb71cf..a80f6088 100644 --- a/rsconcept/backend/apps/rsform/tests/s_models/t_RSForm.py +++ b/rsconcept/backend/apps/rsform/tests/s_models/t_RSForm.py @@ -259,6 +259,10 @@ class TestRSForm(TestCase): alias='D4', definition_formal=r'Pr2(D3)', ) + f2 = self.schema.insert_new( + alias='F2', + definition_formal=r'[α∈ℬ(X1)] X1\α', + ) self.schema.restore_order() x1.refresh_from_db() @@ -271,6 +275,7 @@ class TestRSForm(TestCase): d3.refresh_from_db() d4.refresh_from_db() f1.refresh_from_db() + f2.refresh_from_db() a1.refresh_from_db() self.assertEqual(x1.order, 1) @@ -284,6 +289,7 @@ class TestRSForm(TestCase): self.assertEqual(d4.order, 9) self.assertEqual(d2.order, 10) self.assertEqual(f1.order, 11) + self.assertEqual(f2.order, 12) def test_reset_aliases(self): diff --git a/rsconcept/frontend/src/models/RSFormLoader.ts b/rsconcept/frontend/src/models/RSFormLoader.ts index 6985bae6..ad27b56f 100644 --- a/rsconcept/frontend/src/models/RSFormLoader.ts +++ b/rsconcept/frontend/src/models/RSFormLoader.ts @@ -103,7 +103,12 @@ export class RSFormLoader { if (sources.size !== 1 || sources.has(target.id)) { return undefined; } - return sources.values().next().value as ConstituentaID; + const parent_id = sources.values().next().value as ConstituentaID; + const parent = this.cstByID.get(parent_id); + if (parent && isBaseSet(parent.cst_type)) { + return undefined; + } + return parent_id; } private extractSources(target: IConstituenta): Set {