Skip to content

Commit 79f312f

Browse files
committed
Updating results can overwrite existing results if desired
1 parent 3f743b4 commit 79f312f

File tree

4 files changed

+63
-8
lines changed

4 files changed

+63
-8
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Generated by Django 5.2.4 on 2025-11-26 01:25
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
dependencies = [
8+
("picker", "0016_picker"),
9+
]
10+
11+
operations = [
12+
migrations.AlterModelOptions(
13+
name="team",
14+
options={"base_manager_name": "objects", "ordering": ("name",)},
15+
),
16+
migrations.RemoveField(
17+
model_name="pickerfavorite",
18+
name="user",
19+
),
20+
migrations.RemoveField(
21+
model_name="pickermembership",
22+
name="user",
23+
),
24+
migrations.RemoveField(
25+
model_name="pickset",
26+
name="user",
27+
),
28+
migrations.DeleteModel(
29+
name="Preference",
30+
),
31+
]

src/picker/models/picks.py

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ def _update_points(self, result):
518518
self.points = score
519519
self.save()
520520

521-
def update_results(self, results):
521+
def update_results(self, results, overwrite=False):
522522
"""
523523
results schema: {'sequence': 1, 'season': 2018, 'games': [{
524524
"home": "HOME",
@@ -544,12 +544,30 @@ def update_results(self, results):
544544

545545
count = 0
546546
all_games = list(self.games.select_related("home", "away"))
547-
incomplete_games = [
548-
g for g in all_games if g.home.abbr in completed and g.status == g.Status.UNPLAYED
549-
]
550-
for game in incomplete_games:
547+
548+
def get_score(value):
549+
if isinstance(value, int):
550+
return value
551+
552+
if isinstance(value, str) and value.isdigit():
553+
return int(value)
554+
555+
return 0
556+
557+
if overwrite:
558+
games_to_update = all_games
559+
else:
560+
games_to_update = [
561+
g
562+
for g in all_games
563+
if g.home and (g.home.abbr in completed) and g.status == g.Status.UNPLAYED
564+
]
565+
566+
for game in games_to_update:
551567
result = completed.get(game.home.abbr, None)
552568
if result:
569+
game.home_score = get_score(result.get("home_score"))
570+
game.away_score = get_score(result.get("away_score"))
553571
winner = result["winner"]
554572
game.winner = (
555573
game.home
@@ -573,7 +591,9 @@ def winners(self, group):
573591
yield r.picker
574592

575593
def pickset_query(self, group):
576-
return self.picksets.filter(picker__picker_memberships__group=group).select_related("picker")
594+
return self.picksets.filter(picker__picker_memberships__group=group).select_related(
595+
"picker"
596+
)
577597

578598
def update_pick_status(self):
579599
for group in PickerGrouping.objects.active():

src/picker/models/sports.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,11 @@ class Meta:
534534
ordering = ("start_time", "away")
535535

536536
def __str__(self):
537-
return "{} @ {} {}".format(self.away.abbr, self.home.abbr, self.gameset)
537+
return "{} @ {} {}".format(
538+
self.away.abbr if self.away else "TBD",
539+
self.home.abbr if self.home else "TBD",
540+
self.gameset,
541+
)
538542

539543
def to_dict(self):
540544
return {

src/picker/templates/picker/_base/results/season.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ <h1>{{ season }} Results</h1>
1616
</td>
1717
<td>{% for w in winners %}
1818
<div style="display: inline-block; margin-left: 8px;">
19-
<strong class="pickername">{{ w.picker }}</strong>
19+
<strong class="pickername">{{ w }}</strong>
2020
</div>{% if not forloop.last %}, {% endif %}
2121
{% endfor %}
2222
</td>

0 commit comments

Comments
 (0)