|
19 | 19 | from documents.generators.team_list import team_list |
20 | 20 | from documents.generators.tearoff import TearoffGenerator, TearoffRequirementMissing |
21 | 21 | from documents.models import TexJob |
22 | | -from problems.logic.results import save_country_ranks, save_venue_ranks |
| 22 | +from problems.logic.results import ( |
| 23 | + get_venue_results, |
| 24 | + save_country_ranks, |
| 25 | + save_venue_ranks, |
| 26 | +) |
23 | 27 | from problems.models import Problem |
24 | 28 | from users.logic import get_venue_waiting_list, move_eligible_teams |
25 | 29 | from users.models import Team |
@@ -148,19 +152,30 @@ def get_form_kwargs(self): |
148 | 152 |
|
149 | 153 | def form_valid(self, form): |
150 | 154 | if template := form.cleaned_data.get("tex_template"): |
151 | | - teams = ( |
152 | | - Team.objects.competing() |
153 | | - .filter(venue=self.venue) |
154 | | - .order_by("rank_venue") |
155 | | - .select_related( |
156 | | - "school", |
157 | | - "venue", |
158 | | - "venue__category", |
| 155 | + if self.venue.is_reviewed: |
| 156 | + teams = ( |
| 157 | + Team.objects.competing() |
| 158 | + .filter(venue=self.venue) |
| 159 | + .order_by("rank_venue") |
| 160 | + .select_related( |
| 161 | + "school", |
| 162 | + "venue", |
| 163 | + "venue__category", |
| 164 | + ) |
| 165 | + .prefetch_related("contestants", "contestants__grade") |
159 | 166 | ) |
160 | | - .prefetch_related("contestants", "contestants__grade") |
161 | | - ) |
162 | | - if count := form.cleaned_data.get("count"): |
163 | | - teams = teams.filter(rank_venue__lte=count) |
| 167 | + if count := form.cleaned_data.get("count"): |
| 168 | + teams = teams.filter(rank_venue__lte=count) |
| 169 | + else: |
| 170 | + results = get_venue_results(self.venue) |
| 171 | + if count := form.cleaned_data.get("count"): |
| 172 | + results = results[:count] |
| 173 | + |
| 174 | + teams = [] |
| 175 | + for rank_i, row in enumerate(results): |
| 176 | + team = row.team |
| 177 | + team.rank_venue = rank_i + 1 |
| 178 | + teams.append(team) |
164 | 179 |
|
165 | 180 | job = TexJob.objects.create( |
166 | 181 | template=template, |
|
0 commit comments