From eb5cb6945ffd255b54df04ae54c01e758dcc2547 Mon Sep 17 00:00:00 2001
From: Ivan <8611739+IRBorisov@users.noreply.github.com>
Date: Fri, 23 Aug 2024 18:32:16 +0300
Subject: [PATCH] M: Remove inheritance data from archive schemas
---
.../apps/rsform/serializers/data_access.py | 21 +++++++++++--------
.../EditorRSFormCard/EditorRSFormCard.tsx | 6 +++---
.../EditorRSFormCard/RSFormStats.tsx | 14 ++++++-------
3 files changed, 21 insertions(+), 20 deletions(-)
diff --git a/rsconcept/backend/apps/rsform/serializers/data_access.py b/rsconcept/backend/apps/rsform/serializers/data_access.py
index 007eff34..38354290 100644
--- a/rsconcept/backend/apps/rsform/serializers/data_access.py
+++ b/rsconcept/backend/apps/rsform/serializers/data_access.py
@@ -115,14 +115,19 @@ class RSFormSerializer(serializers.ModelSerializer):
fields = '__all__'
def to_representation(self, instance: LibraryItem) -> dict:
- result = LibraryItemDetailsSerializer(instance).data
- result['items'] = []
- for cst in RSForm(instance).constituents().order_by('order'):
- result['items'].append(CstSerializer(cst).data)
- result['inheritance'] = []
+ result = self.to_base_data(instance)
for link in Inheritance.objects.filter(Q(child__schema=instance) | Q(parent__schema=instance)):
result['inheritance'].append([link.child.pk, link.parent.pk])
+ return result
+
+ def to_base_data(self, instance: LibraryItem) -> dict:
+ ''' Create serializable base representation without redundant data. '''
+ result = LibraryItemDetailsSerializer(instance).data
+ result['items'] = []
result['oss'] = []
+ result['inheritance'] = []
+ for cst in RSForm(instance).constituents().order_by('order'):
+ result['items'].append(CstSerializer(cst).data)
for oss in LibraryItem.objects.filter(operations__result=instance).only('alias'):
result['oss'].append({
'id': oss.pk,
@@ -132,11 +137,9 @@ class RSFormSerializer(serializers.ModelSerializer):
def to_versioned_data(self) -> dict:
''' Create serializable version representation without redundant data. '''
- result = self.to_representation(cast(LibraryItem, self.instance))
+ result = self.to_base_data(cast(LibraryItem, self.instance))
del result['versions']
del result['editors']
- del result['inheritance']
- del result['oss']
del result['owner']
del result['visible']
@@ -150,7 +153,7 @@ class RSFormSerializer(serializers.ModelSerializer):
def from_versioned_data(self, version: int, data: dict) -> dict:
''' Load data from version. '''
- result = self.to_representation(cast(LibraryItem, self.instance))
+ result = self.to_base_data(cast(LibraryItem, self.instance))
result['version'] = version
return result | data
diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx
index 25123df6..f9645f62 100644
--- a/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx
+++ b/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx
@@ -20,7 +20,7 @@ interface EditorRSFormCardProps {
}
function EditorRSFormCard({ isModified, onDestroy, setIsModified }: EditorRSFormCardProps) {
- const { schema } = useRSForm();
+ const model = useRSForm();
const controller = useRSEdit();
function initiateSubmit() {
@@ -53,10 +53,10 @@ function EditorRSFormCard({ isModified, onDestroy, setIsModified }: EditorRSForm
>