Przeglądaj źródła

修改反序列化逻辑

peng 2 lat temu
rodzic
commit
a91168889c
1 zmienionych plików z 45 dodań i 37 usunięć
  1. 45 37
      background/serializers.py

+ 45 - 37
background/serializers.py

@@ -1,12 +1,9 @@
 # @Author    : Rocky
 # @File      : serializers.py
 # @Time      : 2023/7/24 13:35
-from rest_framework import serializers
 from rest_framework.serializers import ModelSerializer, SerializerMethodField
-from background.Object import AmazonS3Util
 from background.models import ProductInfo, VideoInfo, QuickStartInfo, UpgradeFirmwareInfo
 
-bucket_name = 'ansjerfilemanager'
 
 
 class ReadWriteSerializerMethodField(SerializerMethodField):
@@ -52,57 +49,68 @@ class ProductInfoSerializer(ModelSerializer):
 
 
 class VideoInSerializer(ModelSerializer):
-    link = ReadWriteSerializerMethodField()
+    # link = ReadWriteSerializerMethodField()
 
     class Meta:
         model = VideoInfo
         fields = '__all__'
 
-    @staticmethod
-    def get_link(obj):
-        file_key = 'vsees/video_file/{}'.format(obj.link)
-        s3_obj = AmazonS3Util()
-        link = s3_obj.generate_file_obj_url(bucket_name, file_key)
-        return link
-
-    @staticmethod
-    def set_link(obj):
-        return {'link': obj}
+    def create(self, validated_data):
+        link = validated_data.get('link')
+        validated_data['link'] = 'https://ansjerfilemanager.s3.amazonaws.com/vsees/video_file/{}'.format(link)
+        video_qs = VideoInfo.objects.create(**validated_data)
+        return video_qs
+
+    def update(self, instance, validated_data):
+        link = 'https://ansjerfilemanager.s3.amazonaws.com/vsees/video_file/{}'.format(validated_data.get('link'))
+        instance.link = link
+        instance.save()
+        return instance
+    # @staticmethod
+    # def get_link(obj):
+    #     file_key = 'vsees/video_file/{}'.format(obj.link)
+    #     s3_obj = AmazonS3Util()
+    #     link = s3_obj.generate_file_obj_url(bucket_name, file_key)
+    #     return link
+    #
+    # @staticmethod
+    # def set_link(obj):
+    #     return {'link': obj}
 
 
 class QuickStartInfoSerializer(ModelSerializer):
-    link = ReadWriteSerializerMethodField()
-
     class Meta:
         model = QuickStartInfo
         fields = '__all__'
 
-    @staticmethod
-    def get_link(obj):
-        file_key = 'vsees/quick_start_file/{}'.format(obj.link)
-        s3_obj = AmazonS3Util()
-        link = s3_obj.generate_file_obj_url(bucket_name, file_key)
-        return link
+    def create(self, validated_data):
+        link = validated_data.get('link')
+        validated_data['link'] = 'https://ansjerfilemanager.s3.amazonaws.com/vsees/quick_start_file/{}'.format(link)
+        video_qs = VideoInfo.objects.create(**validated_data)
+        return video_qs
 
-    @staticmethod
-    def set_link(obj):
-        return {'link': obj}
+    def update(self, instance, validated_data):
+        link = 'https://ansjerfilemanager.s3.amazonaws.com/vsees/quick_start_file/{}'.format(validated_data.get('link'))
+        instance.link = link
+        instance.save()
+        return instance
 
 
 class UpgradeFirmwareInfoSerializer(ModelSerializer):
-    link = ReadWriteSerializerMethodField()
-
     class Meta:
         model = UpgradeFirmwareInfo
         fields = '__all__'
 
-    @staticmethod
-    def get_link(obj):
-        file_key = 'vsees/upgrade_firmware_file/{}'.format(obj.link)
-        s3_obj = AmazonS3Util()
-        link = s3_obj.generate_file_obj_url(bucket_name, file_key)
-        return link
-
-    @staticmethod
-    def set_link(obj):
-        return {'link': obj}
+    def create(self, validated_data):
+        link = validated_data.get('link')
+        validated_data['link'] = 'https://ansjerfilemanager.s3.amazonaws.com/vsees/upgrade_firmware_file/{}'.format(
+            link)
+        video_qs = VideoInfo.objects.create(**validated_data)
+        return video_qs
+
+    def update(self, instance, validated_data):
+        link = 'https://ansjerfilemanager.s3.amazonaws.com/vsees/upgrade_firmware_file/{}'.format(
+            validated_data.get('link'))
+        instance.link = link
+        instance.save()
+        return instance