From 251ebece5d3d0a7a65e7b4ef010d64180477eb29 Mon Sep 17 00:00:00 2001 From: Ivan <8611739+IRBorisov@users.noreply.github.com> Date: Fri, 23 Aug 2024 18:32:40 +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 > - + - + {model.schema ? : null} ); diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/RSFormStats.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/RSFormStats.tsx index 94517280..7bd30cca 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/RSFormStats.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/RSFormStats.tsx @@ -13,17 +13,15 @@ import ValueStats from '@/components/ui/ValueStats'; import { type IRSFormStats } from '@/models/rsform'; interface RSFormStatsProps { - stats?: IRSFormStats; + isArchive: boolean; + stats: IRSFormStats; } -function RSFormStats({ stats }: RSFormStatsProps) { - if (!stats) { - return null; - } +function RSFormStats({ stats, isArchive }: RSFormStatsProps) { return ( -
+
-
+
Всего {stats.count_all}
@@ -37,7 +35,7 @@ function RSFormStats({ stats }: RSFormStatsProps) { id='count_inherited' icon={} value={stats.count_inherited} - title='Наследованные' + titleHtml={isArchive ? 'Архивные схемы не хранят
информацию о наследовании' : 'Наследованные'} />