This commit is contained in:
@@ -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:
|
||||
|
||||
18
backend/competition/migrations/0006_add_peer_review_field.py
Normal file
18
backend/competition/migrations/0006_add_peer_review_field.py
Normal 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='是否用于选手互评'),
|
||||
),
|
||||
]
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user