fix: remove build_absolute_uri, return relative media paths like market_page
All checks were successful
Deploy to Server / deploy (push) Successful in 1m46s
All checks were successful
Deploy to Server / deploy (push) Successful in 1m46s
This commit is contained in:
@@ -13,10 +13,7 @@ class CarouselItemSerializer(serializers.ModelSerializer):
|
|||||||
'order', 'is_active']
|
'order', 'is_active']
|
||||||
|
|
||||||
def get_display_image(self, obj):
|
def get_display_image(self, obj):
|
||||||
request = self.context.get('request')
|
|
||||||
if obj.image:
|
if obj.image:
|
||||||
if request:
|
|
||||||
return request.build_absolute_uri(obj.image.url)
|
|
||||||
return obj.image.url
|
return obj.image.url
|
||||||
return obj.image_url
|
return obj.image_url
|
||||||
|
|
||||||
@@ -33,10 +30,7 @@ class HomePageConfigSerializer(serializers.ModelSerializer):
|
|||||||
'organizer', 'undertaker', 'carousel1_items', 'carousel2_items']
|
'organizer', 'undertaker', 'carousel1_items', 'carousel2_items']
|
||||||
|
|
||||||
def get_display_banner(self, obj):
|
def get_display_banner(self, obj):
|
||||||
request = self.context.get('request')
|
|
||||||
if obj.banner_image:
|
if obj.banner_image:
|
||||||
if request:
|
|
||||||
return request.build_absolute_uri(obj.banner_image.url)
|
|
||||||
return obj.banner_image.url
|
return obj.banner_image.url
|
||||||
return obj.banner_image_url
|
return obj.banner_image_url
|
||||||
|
|
||||||
@@ -54,6 +48,7 @@ class ScoreDimensionSerializer(serializers.ModelSerializer):
|
|||||||
model = ScoreDimension
|
model = ScoreDimension
|
||||||
fields = ['id', 'name', 'description', 'weight', 'max_score', 'order']
|
fields = ['id', 'name', 'description', 'weight', 'max_score', 'order']
|
||||||
|
|
||||||
|
|
||||||
class CompetitionSerializer(serializers.ModelSerializer):
|
class CompetitionSerializer(serializers.ModelSerializer):
|
||||||
score_dimensions = ScoreDimensionSerializer(many=True, read_only=True)
|
score_dimensions = ScoreDimensionSerializer(many=True, read_only=True)
|
||||||
display_cover_image = serializers.SerializerMethodField()
|
display_cover_image = serializers.SerializerMethodField()
|
||||||
@@ -67,13 +62,11 @@ class CompetitionSerializer(serializers.ModelSerializer):
|
|||||||
'score_dimensions', 'created_at']
|
'score_dimensions', 'created_at']
|
||||||
|
|
||||||
def get_display_cover_image(self, obj):
|
def get_display_cover_image(self, obj):
|
||||||
request = self.context.get('request')
|
|
||||||
if obj.cover_image:
|
if obj.cover_image:
|
||||||
if request:
|
|
||||||
return request.build_absolute_uri(obj.cover_image.url)
|
|
||||||
return obj.cover_image.url
|
return obj.cover_image.url
|
||||||
return obj.cover_image_url
|
return obj.cover_image_url
|
||||||
|
|
||||||
|
|
||||||
class CompetitionEnrollmentSerializer(serializers.ModelSerializer):
|
class CompetitionEnrollmentSerializer(serializers.ModelSerializer):
|
||||||
user = WeChatUserSerializer(read_only=True)
|
user = WeChatUserSerializer(read_only=True)
|
||||||
|
|
||||||
@@ -82,6 +75,7 @@ class CompetitionEnrollmentSerializer(serializers.ModelSerializer):
|
|||||||
fields = ['id', 'competition', 'user', 'role', 'status', 'created_at']
|
fields = ['id', 'competition', 'user', 'role', 'status', 'created_at']
|
||||||
read_only_fields = ['status']
|
read_only_fields = ['status']
|
||||||
|
|
||||||
|
|
||||||
class ProjectFileSerializer(serializers.ModelSerializer):
|
class ProjectFileSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ProjectFile
|
model = ProjectFile
|
||||||
@@ -90,12 +84,12 @@ class ProjectFileSerializer(serializers.ModelSerializer):
|
|||||||
def validate_file(self, value):
|
def validate_file(self, value):
|
||||||
if not value:
|
if not value:
|
||||||
return value
|
return value
|
||||||
# 50MB limit
|
|
||||||
limit_mb = 50
|
limit_mb = 50
|
||||||
if value.size > limit_mb * 1024 * 1024:
|
if value.size > limit_mb * 1024 * 1024:
|
||||||
raise serializers.ValidationError(f"文件大小不能超过 {limit_mb}MB")
|
raise serializers.ValidationError(f"文件大小不能超过 {limit_mb}MB")
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
class ProjectSerializer(serializers.ModelSerializer):
|
class ProjectSerializer(serializers.ModelSerializer):
|
||||||
files = ProjectFileSerializer(many=True, read_only=True)
|
files = ProjectFileSerializer(many=True, read_only=True)
|
||||||
contestant_info = serializers.SerializerMethodField()
|
contestant_info = serializers.SerializerMethodField()
|
||||||
@@ -115,13 +109,11 @@ class ProjectSerializer(serializers.ModelSerializer):
|
|||||||
}
|
}
|
||||||
|
|
||||||
def get_display_cover_image(self, obj):
|
def get_display_cover_image(self, obj):
|
||||||
request = self.context.get('request')
|
|
||||||
if obj.cover_image:
|
if obj.cover_image:
|
||||||
if request:
|
|
||||||
return request.build_absolute_uri(obj.cover_image.url)
|
|
||||||
return obj.cover_image.url
|
return obj.cover_image.url
|
||||||
return obj.cover_image_url
|
return obj.cover_image_url
|
||||||
|
|
||||||
|
|
||||||
class ScoreSerializer(serializers.ModelSerializer):
|
class ScoreSerializer(serializers.ModelSerializer):
|
||||||
judge_name = serializers.CharField(source='judge.user.nickname', read_only=True)
|
judge_name = serializers.CharField(source='judge.user.nickname', read_only=True)
|
||||||
dimension_name = serializers.CharField(source='dimension.name', read_only=True)
|
dimension_name = serializers.CharField(source='dimension.name', read_only=True)
|
||||||
@@ -131,6 +123,7 @@ class ScoreSerializer(serializers.ModelSerializer):
|
|||||||
fields = ['id', 'project', 'judge', 'dimension', 'score', 'judge_name', 'dimension_name', 'created_at']
|
fields = ['id', 'project', 'judge', 'dimension', 'score', 'judge_name', 'dimension_name', 'created_at']
|
||||||
read_only_fields = ['judge']
|
read_only_fields = ['judge']
|
||||||
|
|
||||||
|
|
||||||
class CommentSerializer(serializers.ModelSerializer):
|
class CommentSerializer(serializers.ModelSerializer):
|
||||||
judge_name = serializers.CharField(source='judge.user.nickname', read_only=True)
|
judge_name = serializers.CharField(source='judge.user.nickname', read_only=True)
|
||||||
score = serializers.SerializerMethodField()
|
score = serializers.SerializerMethodField()
|
||||||
@@ -144,15 +137,11 @@ class CommentSerializer(serializers.ModelSerializer):
|
|||||||
scores = Score.objects.filter(project=obj.project, judge=obj.judge)
|
scores = Score.objects.filter(project=obj.project, judge=obj.judge)
|
||||||
if not scores.exists():
|
if not scores.exists():
|
||||||
return None
|
return None
|
||||||
|
total_score = 0
|
||||||
current_judge_total_score = 0
|
total_weight = 0
|
||||||
current_judge_total_weight = 0
|
|
||||||
|
|
||||||
for score in scores:
|
for score in scores:
|
||||||
current_judge_total_score += score.score * score.dimension.weight
|
total_score += score.score * score.dimension.weight
|
||||||
current_judge_total_weight += score.dimension.weight
|
total_weight += score.dimension.weight
|
||||||
|
if total_weight > 0:
|
||||||
if current_judge_total_weight > 0:
|
return round(total_score / total_weight, 1)
|
||||||
judge_score = current_judge_total_score / current_judge_total_weight
|
|
||||||
return round(judge_score, 1)
|
|
||||||
return None
|
return None
|
||||||
|
|||||||
Reference in New Issue
Block a user