This commit is contained in:
@@ -39,15 +39,29 @@ class CompetitionEnrollmentSerializer(serializers.ModelSerializer):
|
||||
|
||||
class ProjectFileSerializer(serializers.ModelSerializer):
|
||||
file_url_display = serializers.SerializerMethodField()
|
||||
file_size_display = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = ProjectFile
|
||||
fields = ['id', 'project', 'file_type', 'file', 'file_url', 'name', 'created_at', 'file_url_display']
|
||||
fields = ['id', 'project', 'file_type', 'file', 'file_url', 'file_size', 'name', 'created_at', 'file_url_display', 'file_size_display']
|
||||
|
||||
def get_file_url_display(self, obj):
|
||||
if obj.file:
|
||||
return obj.file.url
|
||||
return obj.file_url
|
||||
|
||||
def get_file_size_display(self, obj):
|
||||
if not obj.file_size:
|
||||
return None
|
||||
size = obj.file_size
|
||||
if size < 1024:
|
||||
return f"{size} B"
|
||||
elif size < 1024 * 1024:
|
||||
return f"{size / 1024:.1f} KB"
|
||||
elif size < 1024 * 1024 * 1024:
|
||||
return f"{size / (1024 * 1024):.1f} MB"
|
||||
else:
|
||||
return f"{size / (1024 * 1024 * 1024):.2f} GB"
|
||||
|
||||
def validate_file(self, value):
|
||||
if not value:
|
||||
@@ -87,6 +101,8 @@ class ProjectFileSerializer(serializers.ModelSerializer):
|
||||
if not validated_data.get('name'):
|
||||
validated_data['name'] = file_obj.name
|
||||
|
||||
validated_data['file_size'] = file_obj.size
|
||||
|
||||
try:
|
||||
from ai_services.services import AliyunTingwuService
|
||||
service = AliyunTingwuService()
|
||||
|
||||
Reference in New Issue
Block a user