Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions bullet/bullet_admin/forms/category.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ class Meta:
fields = [
"identifier",
"order",
"first_problem",
"problems_per_team",
"max_members_per_team",
"max_teams_per_school",
Expand Down
1 change: 1 addition & 0 deletions bullet/bullet_admin/forms/competition.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class Meta:
"competition_start",
"competition_duration",
"results_freeze",
"problem_count",
"is_cancelled",
]

Expand Down
5 changes: 1 addition & 4 deletions bullet/bullet_admin/templatetags/badmin.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ def admin_sidebar(context):
)
if branch_role.is_admin:
items.append(
("fa-gear", "Edit Competition", reverse("badmin:competition_edit"))
("fa-gear", "Edit competition", reverse("badmin:competition_edit"))
)
items.append(
("fa-people-group", "Categories", reverse("badmin:category_list"))
Expand All @@ -126,9 +126,6 @@ def admin_sidebar(context):
)
)
if branch_role.is_admin:
items.append(
("fa-book", "Problem settings", reverse("badmin:problems_generate"))
)
items.append(
(
"fa-fast-forward",
Expand Down
1 change: 1 addition & 0 deletions bullet/bullet_admin/views/category.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ class CategoryListView(GenericList, ListView):
fields = [
"identifier",
"order",
"first_problem",
"problems_per_team",
"max_members_per_team",
"max_teams_per_school",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Generated by Django 5.1.5 on 2025-01-23 19:32

from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("competitions", "0033_venue_is_isolated"),
]

operations = [
migrations.AddField(
model_name="category",
name="first_problem",
field=models.PositiveIntegerField(default=1),
),
migrations.AddField(
model_name="competition",
name="problem_count",
field=models.PositiveIntegerField(default=0),
),
]
31 changes: 31 additions & 0 deletions bullet/competitions/migrations/0035_auto_20250123_1932.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Generated by Django 5.1.5 on 2025-01-23 19:32


from django.db import migrations


def populate_problem_numbers(apps, schema_editor):
Competition = apps.get_model("competitions", "Competition")
Category = apps.get_model("competitions", "Category")
Problem = apps.get_model("problems", "Problem")

for competition in Competition.objects.all():
competition.problem_count = Problem.objects.filter(
competition=competition
).count()
competition.save()

categories = Category.objects.all().prefetch_related("problems")
for category in categories:
problem = category.problems.order_by("number").first()
if problem:
category.first_problem = problem.number
category.save()


class Migration(migrations.Migration):
dependencies = [
("competitions", "0034_category_first_problem_competition_problem_count"),
]

operations = [migrations.RunPython(populate_problem_numbers)]
10 changes: 3 additions & 7 deletions bullet/competitions/models/competitions.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ class Competition(models.Model):
help_text="How long before the competition end should we freeze the results.",
)
results_public = models.BooleanField(default=False)
problem_count = models.PositiveIntegerField(default=0)

is_cancelled = models.BooleanField(default=False)

Expand Down Expand Up @@ -178,6 +179,8 @@ class Category(models.Model):
max_teams_second_round = models.PositiveIntegerField()
max_members_per_team = models.PositiveIntegerField()

first_problem = models.PositiveIntegerField(default=1)

class Meta:
constraints = (
UniqueConstraint(
Expand Down Expand Up @@ -209,13 +212,6 @@ def max_teams_per_school_at(self, time=None):
return self.max_teams_second_round
return self.max_teams_per_school

@property
def first_problem(self):
first = self.problems.order_by("number").first()
if not first:
return None
return first.number


class Wildcard(models.Model):
competition = models.ForeignKey(
Expand Down
Loading