Fixed some ORM bugs

This commit is contained in:
Walter 2025-02-16 04:25:13 +01:00
parent dec147f0ff
commit f7ff31f742
3 changed files with 7 additions and 6 deletions

View File

@ -82,14 +82,14 @@ class CompleteLevel(CSRFexemptTemplateView):
level=level).first()
if prevScore is None \
or pops > prevScore.pops \
or pops == prevScore.pops and darts_left > prevScore.darts_left:
or pops == prevScore.pops and darts_left + int(dart_glitch) > prevScore.darts_left:
score = LevelScore.objects.create(level=level,
clear=True,
darts_left=darts_left,
dart_glitch=dart_glitch,
pops=pops)
if prevScore:
player.bloonsa_level_scores.remove(prevScore)
prevScore.delete()
player.bloonsa_level_scores.add(score)
score.save()

View File

@ -59,7 +59,7 @@ class LevelRating(models.Model):
# There should only be 1 score per player
# Highest popcount wins
class LevelScore(models.Model):
player = models.ForeignKey(Player, on_delete=models.CASCADE, related_name="bloonsa_level_scores")
player = models.ForeignKey(Player, on_delete=models.CASCADE, related_name="bloonsa_level_scores", null=True)
level = models.ForeignKey(Level, on_delete=models.CASCADE)
clear = models.BooleanField(default=True) # This is for if we ever submit scores for failed attempts
darts_left = models.PositiveSmallIntegerField()

View File

@ -4,3 +4,4 @@ from django.contrib.auth.admin import UserAdmin
from .models import Player, Log
admin.site.register(Log)
admin.site.register(Player)