diff --git a/interface/migrations/0024_auto_20201007_2226.py b/interface/migrations/0024_auto_20201007_2226.py new file mode 100644 index 00000000..6a095dd4 --- /dev/null +++ b/interface/migrations/0024_auto_20201007_2226.py @@ -0,0 +1,23 @@ +# Generated by Django 3.0.6 on 2020-10-07 19:26 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('interface', '0023_comment'), + ] + + operations = [ + migrations.AddField( + model_name='historicalsubmission', + name='preliminary_score', + field=models.DecimalField(decimal_places=2, max_digits=5, null=True), + ), + migrations.AddField( + model_name='submission', + name='preliminary_score', + field=models.DecimalField(decimal_places=2, max_digits=5, null=True), + ), + ] diff --git a/interface/models.py b/interface/models.py index 42d54a2c..6d13d1e5 100644 --- a/interface/models.py +++ b/interface/models.py @@ -146,6 +146,9 @@ class Submission(models.Model): ) score = models.DecimalField(max_digits=5, decimal_places=2, null=True) penalty = models.DecimalField(max_digits=5, decimal_places=2, null=True) + preliminary_score = models.DecimalField( + max_digits=5, decimal_places=2, null=True + ) archive_size = models.IntegerField(null=True) evaluator_job_id = models.IntegerField(null=True) diff --git a/interface/scoring.py b/interface/scoring.py index 8201f981..9c679540 100644 --- a/interface/scoring.py +++ b/interface/scoring.py @@ -110,12 +110,8 @@ def compute_comments_review(submission): return total_sum -def calculate_total_score(submission): +def calculate_preliminary_score(submission): score = submission.score if submission.score else 0 - submission.review_score = compute_review_score( - submission - ) + compute_comments_review(submission) - (penalties, holiday_start, holiday_finish) = get_penalty_info(submission) timestamp = submission.timestamp or datetime.datetime.now() deadline = submission.assignment.deadline_soft @@ -128,7 +124,15 @@ def calculate_total_score(submission): holiday_finish, ) - penalty = submission.penalty + return score - submission.penalty + + +def calculate_total_score(submission): + submission.review_score = compute_review_score( + submission + ) + compute_comments_review(submission) + + preliminary_score = calculate_preliminary_score(submission) - total_score = score + submission.review_score - penalty + total_score = preliminary_score + submission.review_score return total_score if total_score >= 0 else 0 diff --git a/interface/templates/interface/submission_list.html b/interface/templates/interface/submission_list.html index c2af7cfd..e67e489b 100644 --- a/interface/templates/interface/submission_list.html +++ b/interface/templates/interface/submission_list.html @@ -25,7 +25,7 @@ {{ sub.assignment.full_code }} {{ sub.archive_size|filesizeformat }} {% if sub.user.username == user.username or user in sub.assignment.course.teaching_assistants.all %} - {{ sub.score }} + {{ sub.preliminary_score }} {% else %} N/A {% endif %} diff --git a/interface/templates/interface/submission_result.html b/interface/templates/interface/submission_result.html index 1d247f2b..16d2c44e 100644 --- a/interface/templates/interface/submission_result.html +++ b/interface/templates/interface/submission_result.html @@ -62,7 +62,7 @@

Output

{{ sub.stdout }}
-

Preliminary score: {{ sub.score }}/{{ sub.assignment.max_score }}

+

Preliminary score: {{ sub.preliminary_score }}/{{ sub.assignment.max_score }}

{% endif %} {% else %} diff --git a/interface/views.py b/interface/views.py index b2ff9ab2..5b98cb10 100644 --- a/interface/views.py +++ b/interface/views.py @@ -28,7 +28,7 @@ TooManySubmissionsError, CorruptZipFile, ) -from .scoring import calculate_total_score +from .scoring import calculate_total_score, calculate_preliminary_score from interface.actions_logger import log_action from interface.codeview import extract_file, tree_view, table_maker @@ -250,6 +250,7 @@ def done(request, pk): submission.score = decimal.Decimal(points) submission.total_score = calculate_total_score(submission) + submission.preliminary_score = calculate_preliminary_score(submission) submission.stdout = stdout submission.update_state()