new
All checks were successful
Deploy to Server / deploy (push) Successful in 17s

This commit is contained in:
jeremygan2021
2026-03-17 22:30:43 +08:00
parent 75dbf22a43
commit 6a166c50eb
3 changed files with 46 additions and 4 deletions

View File

@@ -264,8 +264,19 @@ def project_detail_api(request, project_id):
if not enrollment:
return JsonResponse({'error': 'No permission'}, status=403)
# Get Dimensions
dimensions = ScoreDimension.objects.filter(competition=project.competition, is_public=True).order_by('order')
# Get Dimensions - 根据角色过滤
if role == 'contestant':
dimensions = ScoreDimension.objects.filter(
competition=project.competition,
is_public=True,
is_peer_review=True
).order_by('order')
else:
dimensions = ScoreDimension.objects.filter(
competition=project.competition,
is_public=True,
is_peer_review=False
).order_by('order')
# Get existing scores by THIS user
scores = Score.objects.filter(project=project, judge=enrollment)
@@ -374,8 +385,19 @@ def submit_score(request):
if not enrollment:
return JsonResponse({'success': False, 'message': 'No permission'})
# Save Scores
dimensions = ScoreDimension.objects.filter(competition=project.competition, is_public=True)
# Save Scores - 根据角色过滤维度
if role == 'contestant':
dimensions = ScoreDimension.objects.filter(
competition=project.competition,
is_public=True,
is_peer_review=True
)
else:
dimensions = ScoreDimension.objects.filter(
competition=project.competition,
is_public=True,
is_peer_review=False
)
for d in dimensions:
score_key = f'score_{d.id}'
if score_key in data:

View File

@@ -0,0 +1,18 @@
# Generated by Django 6.0.1 on 2026-03-17 14:30
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('competition', '0005_scoredimension_is_public'),
]
operations = [
migrations.AddField(
model_name='scoredimension',
name='is_peer_review',
field=models.BooleanField(default=False, help_text='如果开启,此评分维度仅在选手互评时可见,评委和嘉宾看不到', verbose_name='是否用于选手互评'),
),
]

View File

@@ -96,6 +96,8 @@ class ScoreDimension(models.Model):
is_public = models.BooleanField(default=True, verbose_name="是否公开给评委", help_text="如果关闭评委端将看不到此评分维度通常用于AI自动评分")
is_peer_review = models.BooleanField(default=False, verbose_name="是否用于选手互评", help_text="如果开启,此评分维度仅在选手互评时可见,评委和嘉宾看不到")
order = models.IntegerField(default=0, verbose_name="排序权重")
class Meta: