This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
from rest_framework import serializers
|
||||
from .models import Competition, CompetitionEnrollment, ScoreDimension, Project, ProjectFile, Score, Comment
|
||||
from shop.serializers import WeChatUserSerializer
|
||||
import uuid
|
||||
|
||||
class ScoreDimensionSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
@@ -53,7 +54,9 @@ class ProjectFileSerializer(serializers.ModelSerializer):
|
||||
return value
|
||||
|
||||
def create(self, validated_data):
|
||||
from django.conf import settings
|
||||
file_obj = validated_data.get('file')
|
||||
|
||||
if file_obj:
|
||||
ext = file_obj.name.split('.')[-1].lower() if '.' in file_obj.name else ''
|
||||
if ext in ['ppt', 'pptx']:
|
||||
@@ -69,6 +72,22 @@ class ProjectFileSerializer(serializers.ModelSerializer):
|
||||
|
||||
if not validated_data.get('name'):
|
||||
validated_data['name'] = file_obj.name
|
||||
|
||||
try:
|
||||
from ai_services.services import AliyunTingwuService
|
||||
service = AliyunTingwuService()
|
||||
if service.bucket:
|
||||
project = validated_data.get('project')
|
||||
file_name = f"competitions/projects/{project.id}/{uuid.uuid4()}.{ext}"
|
||||
oss_url = service.upload_to_oss(file_obj, file_name, day=30)
|
||||
validated_data['file_url'] = oss_url
|
||||
validated_data['file'] = None
|
||||
print(f"OSS upload success: {oss_url}")
|
||||
else:
|
||||
print("OSS bucket is None, OSS not configured properly")
|
||||
except Exception as e:
|
||||
print(f"OSS upload failed in serializer: {e}")
|
||||
|
||||
return super().create(validated_data)
|
||||
|
||||
class ProjectSerializer(serializers.ModelSerializer):
|
||||
|
||||
Reference in New Issue
Block a user