必须是提交成功之后对题目评论

This commit is contained in:
2024-07-01 00:21:52 +08:00
parent 255019de7a
commit 36a5391a0a
3 changed files with 53 additions and 27 deletions

View File

@@ -0,0 +1,30 @@
# Generated by Django 5.0.6 on 2024-06-30 16:20
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('comment', '0002_alter_comment_options'),
('submission', '0013_alter_submission_info_and_more'),
]
operations = [
migrations.RemoveField(
model_name='comment',
name='problem_solved',
),
migrations.AlterField(
model_name='comment',
name='language',
field=models.CharField(choices=[('Python', 'Python'), ('C', 'C'), ('C++', 'C++'), ('Java', 'Java')], default='Python', max_length=10, verbose_name='解决这道题使用的语言'),
),
migrations.AlterField(
model_name='comment',
name='submission',
field=models.ForeignKey(default='', on_delete=django.db.models.deletion.CASCADE, to='submission.submission'),
preserve_default=False,
),
]

View File

@@ -15,13 +15,11 @@ class Languages(models.TextChoices):
class Comment(models.Model):
problem = models.ForeignKey(Problem, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
submission = models.ForeignKey(Submission, null=True, blank=True, on_delete=models.SET_NULL)
problem_solved = models.BooleanField()
submission = models.ForeignKey(Submission, on_delete=models.CASCADE)
language = models.CharField(
max_length=10,
default=Languages.Python,
choices=Languages.choices,
null=True,
blank=True,
verbose_name="解决这道题使用的语言",
)
description_rating = models.PositiveSmallIntegerField(

View File

@@ -19,10 +19,7 @@ class CommentAPI(APIView):
except Problem.DoesNotExist:
self.error("problem is not exists")
language = None
submission = None
problem_solved = False
try:
submission = (
Submission.objects.select_related("problem")
.filter(
@@ -32,9 +29,9 @@ class CommentAPI(APIView):
)
.first()
)
except Submission.DoesNotExist:
self.error("submission is not exists or not accepted")
if submission:
problem_solved = True
language = submission.language
if language == "Python3":
language = "Python"
@@ -43,7 +40,6 @@ class CommentAPI(APIView):
user=request.user,
problem=problem,
submission=submission,
problem_solved=problem_solved,
language=language,
description_rating=data["description_rating"],
difficulty_rating=data["difficulty_rating"],
@@ -66,8 +62,10 @@ class CommentAPI(APIView):
comprehensive=Round(Avg("comprehensive_rating"), 2),
)
contents = comments.exclude(content="").values_list("content", flat=True)
return self.success({
return self.success(
{
"count": count,
"rating": rating,
"contents": list(contents),
})
}
)