This commit is contained in:
2026-03-04 20:05:33 +08:00
parent fdbe06a077
commit 6998d694bb
25 changed files with 572 additions and 37 deletions

View File

@@ -29,13 +29,21 @@ def create_submission(request, payload: SubmissionIn):
创建一个新的提交
"""
task = get_object_or_404(Task, id=payload.task_id)
conversation = None
if payload.conversation_id:
from prompt.models import Conversation
conversation = get_object_or_404(
Conversation, id=payload.conversation_id, user=request.user
)
conversation.is_active = False
conversation.save(update_fields=["is_active"])
Submission.objects.create(
user=request.user,
task=task,
html=payload.html,
css=payload.css,
js=payload.js,
conversation=conversation,
)

View File

@@ -0,0 +1,20 @@
# Generated by Django 6.0.1 on 2026-03-04 11:03
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('prompt', '0001_initial'),
('submission', '0002_remove_submission_referee_alter_submission_score_and_more'),
]
operations = [
migrations.AddField(
model_name='submission',
name='conversation',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='submissions', to='prompt.conversation', verbose_name='对话'),
),
]

View File

@@ -8,6 +8,7 @@ from django.dispatch import receiver # 导入receiver
from account.models import Profile, RoleChoices, User
from task.models import Task
from prompt.models import Conversation
class Submission(TimeStampedModel):
@@ -26,6 +27,10 @@ class Submission(TimeStampedModel):
html = models.TextField(null=True, blank=True, verbose_name="HTML代码")
css = models.TextField(null=True, blank=True, verbose_name="CSS代码")
js = models.TextField(null=True, blank=True, verbose_name="JS代码")
conversation = models.ForeignKey(
Conversation, on_delete=models.SET_NULL, null=True, blank=True,
related_name="submissions", verbose_name="对话"
)
class Meta:
ordering = ("-created",)

View File

@@ -8,6 +8,7 @@ class SubmissionIn(Schema):
html: Optional[str] = None
css: Optional[str] = None
js: Optional[str] = None
conversation_id: Optional[UUID] = None
class SubmissionOut(Schema):
@@ -23,6 +24,7 @@ class SubmissionOut(Schema):
html: Optional[str] = None
css: Optional[str] = None
js: Optional[str] = None
conversation_id: Optional[UUID] = None
created: str
modified: str
@@ -38,6 +40,7 @@ class SubmissionOut(Schema):
"task_type": submission.task.task_type,
"score": submission.score,
"my_score": rating_dict.get(submission.id, 0),
"conversation_id": submission.conversation_id,
"created": submission.created.isoformat(),
"modified": submission.modified.isoformat(),
}
@@ -57,6 +60,7 @@ class SubmissionOut(Schema):
"html": submission.html,
"css": submission.css,
"js": submission.js,
"conversation_id": submission.conversation_id,
"created": submission.created.isoformat(),
"modified": submission.modified.isoformat(),
}